--- # [샘플] iOS 전체 빌드 파이프라인 # Build → Archive → Export → TestFlight 업로드 → 배포 property: workspace: /path/to/project scheme: Runner configuration: Release version: 1.0.0 exportOptionsPath: /ios/ExportOptions.plist archivePath: /build/Runner.xcarchive exportPath: /build/export ipaPath: /Runner.ipa apiKeyPath: /api_key.json appID: com.example.app 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: # xcworkspaceFilePath 우선, 없으면 xcodeProjectFilePath 사용 scheme: configuration: xcworkspaceFilePath: /ios/Runner.xcworkspace destination: "generic/platform=iOS Simulator" # xcodebuild archive - command: ArchiveiOS id: archive-ios param: scheme: configuration: xcworkspaceFilePath: /ios/Runner.xcworkspace archivePath: # .xcarchive → .ipa export - command: ExportiOS id: export-ios param: archivePath: exportOptionPlistPath: exportPath: # TestFlight 업로드 (notarytool) - command: TestflightUpload id: upload-testflight param: apiKeyPath: ipaPath: # TestFlight 상태 확인 - command: TestflightStatusCheck id: check-testflight param: appID: apiKeyPath: version: buildNumber: "1" # 테스터 그룹에 배포 - command: TestflightDistribute id: distribute-testflight param: apiKeyPath: appID: message: " 새 빌드 출시" testers: "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: 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" # CodeSign - 앱 코드 서명 - command: CodeSign id: code-sign param: appPath: /Products/Applications/Runner.app certificationName: "iPhone Developer: your@email.com (ABC1234567)" entitlementPath: /ios/Runner/Runner_Entitlements.plist # CodeSignVerify - 서명 확인 - command: CodeSignVerify id: code-sign-verify param: appPath: /Products/Applications/Runner.app # ProductBuild - 앱 패키징 - command: ProductBuild id: product-build param: appPath: /Products/Applications/Runner.app identifier: com.example.app installCertificationName: "Apple Distribution: your@email.com (ABC1234567)" unsignedResultPath: /Runner_unsigned.ipa signedResultPath: # Notarize - 앱 notarization - command: Notarize id: notarize param: macPassword: your-mac-password bundleName: Runner.app teamId: ABC1234567 appleAccount: your@email.com applePassword: "@keychain:app-specific-password" resultPath: /notarized