104 lines
2.8 KiB
YAML
104 lines
2.8 KiB
YAML
---
|
|
# [샘플] iOS 전체 빌드 파이프라인
|
|
# Build → Archive → Export → TestFlight 업로드 → 배포
|
|
|
|
property:
|
|
workspace: /path/to/project
|
|
scheme: Runner
|
|
configuration: Release
|
|
version: 1.0.0
|
|
exportOptionsPath: <!property.workspace>/ios/ExportOptions.plist
|
|
archivePath: <!property.workspace>/build/Runner.xcarchive
|
|
exportPath: <!property.workspace>/build/export
|
|
ipaPath: <!property.exportPath>/Runner.ipa
|
|
|
|
pipeline:
|
|
id: main
|
|
workflow:
|
|
- exe: build-ios
|
|
- exe-handle:
|
|
id: archive-ios
|
|
on-success:
|
|
- exe: export-ios
|
|
- exe: upload-testflight
|
|
- exe: check-testflight
|
|
- exe: distribute-testflight
|
|
- exe: notify-success
|
|
on-fail:
|
|
- exe: notify-fail
|
|
|
|
commands:
|
|
# xcodebuild build (시뮬레이터 테스트용)
|
|
- command: BuildiOS
|
|
id: build-ios
|
|
param:
|
|
# xcworkspace 우선, 없으면 xcodeproj 사용
|
|
workspacePath: <!property.workspace>/ios/Runner.xcworkspace
|
|
scheme: <!property.scheme>
|
|
configuration: <!property.configuration>
|
|
destination: "generic/platform=iOS Simulator"
|
|
|
|
# xcodebuild archive
|
|
- command: ArchiveiOS
|
|
id: archive-ios
|
|
param:
|
|
workspacePath: <!property.workspace>/ios/Runner.xcworkspace
|
|
scheme: <!property.scheme>
|
|
configuration: <!property.configuration>
|
|
archivePath: <!property.archivePath>
|
|
|
|
# .xcarchive → .ipa export
|
|
- command: ExportiOS
|
|
id: export-ios
|
|
param:
|
|
archivePath: <!property.archivePath>
|
|
exportPath: <!property.exportPath>
|
|
exportOptionsPlist: <!property.exportOptionsPath>
|
|
|
|
# TestFlight 업로드 (altool / notarytool)
|
|
- command: TestflightUpload
|
|
id: upload-testflight
|
|
param:
|
|
ipaPath: <!property.ipaPath>
|
|
username: apple-id@example.com
|
|
password: "@keychain:app-specific-password"
|
|
|
|
# 처리 완료 대기
|
|
- command: TestflightStatusCheck
|
|
id: check-testflight
|
|
param:
|
|
username: apple-id@example.com
|
|
password: "@keychain:app-specific-password"
|
|
bundleId: com.example.app
|
|
version: <!property.version>
|
|
|
|
# 테스터 그룹에 배포
|
|
- command: TestflightDistribute
|
|
id: distribute-testflight
|
|
param:
|
|
username: apple-id@example.com
|
|
password: "@keychain:app-specific-password"
|
|
bundleId: com.example.app
|
|
version: <!property.version>
|
|
groups:
|
|
- Internal Testers
|
|
|
|
- command: MattermostBuild
|
|
id: notify-success
|
|
param:
|
|
url: https://mattermost.example.com/api/v4/posts
|
|
token: your-mattermost-token
|
|
channelId: your-channel-id
|
|
appName: MyApp
|
|
type: ios
|
|
color: 45C45E
|
|
version: <!property.version>
|
|
downloadURL: https://testflight.apple.com/join/xxxxxx
|
|
|
|
- command: Mattermost
|
|
id: notify-fail
|
|
param:
|
|
url: https://mattermost.example.com/api/v4/posts
|
|
token: your-mattermost-token
|
|
channelId: your-channel-id
|
|
message: "❌ iOS 빌드 실패 - v<!property.version>"
|