oto/assets/yaml/sample/10_build_ios.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>"