앱 배포 자동화를 위해서 Xcode Cloud에 Workflow를 생성 및 설정하고 Firebase Distribution을 연결해보았다. (Xcode Cloud를 통해 관리하려는 project가 Github에 반드시 올라가 있어야 가능. 해당 글은 공개 repo를 기준으로 작성되어있으며, 비공개 repo의 경우 별도의 인증 절차가 추가로 필요하다고 함!)
- Xcode Cloud 설정
- Product > Xcode Cloud > Create Workflow..
-
Select Product 창에서 앱 선택
- install 해주고 나서 다시 xcode로 돌아가면 next버튼이 활성화 되어있을 것이다. (클릭)
- Confirm App on App Store Connect → Complete 클릭
- Start Build → branch 선택 → Start Build 클릭
- default 설정의 build가 수행될 것..
-
Workflow 설정 (설정한 것 들만 note)
- General
- Name : Workflow 이름
- Description: Workflow 설정
- Environment
- Xcode Version, macOS Version 모두 현재 사용하고 있는 버전으로 맞추어주었음
- Start Conditions (실행 될 조건)
- 작업사항이
develop
브랜치에merge
되었을 때 실행되도록 했음 - Options > Auto-cancel Builds를 선택하면 가장 마지막에 요청한 빌드가 실행되고 이전에 진행 중이었던 빌드는 취소 됨
- 작업사항이
- Actions
- 앱 배포 처리를 위해서 Archive 선택
Save 버튼을 눌러 설정을 완료하고, Start Condtitions에 맞는 행동을 수행하면 빌드가 처리되는 것을 볼 수 있을 것이다.
- General
CocoaPod 라이브러리 관련 설정
- .gitignore에서
Podfile
,Podfile.lock
파일을 포함하고 있지 않은지 확인! - 프로젝트 루트 위치에
ci_scripts
group 생성- ci_post_clone.sh
# Install CocoaPods using Homebrew. brew install cocoapods # Install dependencies you manage with CocoaPods. pod install
-
관련 Apple 공식문서
Firebase Distribution 연결 설정
- Firebase CLI 설치
-
다음 링크 접속 후 macOS용 Firebase CLI 바이너리 다운로드
[Firebase CLI reference Firebase Documentation](https://firebase.google.com/docs/cli#install-cli-mac-linux) - 다운받은 파일을
.zip
으로 압축하고,ci_scripts
group에 추가 -
ci_post_xcodebuild.sh
if then echo "Uploading Firebase Debug Build" unzip firebase-tools-macos.zip chmod +x ./firebase-tools-macos ./firebase-tools-macos appdistribution:distribute $CI_AD_HOC_SIGNED_APP_PATH/APP_NAME-.ipa --app FIREBASE_APPID --token $FIREBASE_TOKEN --groups $TESTER_GROUP fi
- APP_NAME: 앱 명
- FIREBASE_APPID
- Firebase console > 프로젝트 설정 > 내 앱 > 앱 ID
- 1:nnnnnnnnn:ios:xxxxxxxxxxxxxxx 형태의 아이디
- $FIREBASE_TOKEN, $TESTER_GROUP(선택)
- workflow 설정에서 환경변수 설정해서 사용
- firebase token 확인하는 방법
- 터미널 환경에서
firebase login:ci
실행 후 로그인하면 토큰 값 확인 가능
- 터미널 환경에서
- tester group
- Firebase Distribution tester group 설정 후 group name 적으면 됨
- 관련 Apple 공식문서
- Script 작성 시 활용할 수 있는 여러 환경변수들이 설명되어있다.
-
참고 글
-
Slack notify 연결
기본적으로 빌드 성공 여부를 이메일로 받을 수 있지만, notify 설정을 통해 Slack으로도 받을 수 있다.
Xcode Cloud Workflow 설정 페이지에서 하는 방법, App Store Connect 페이지에서 하는 방법이 있는데 이상하게 전자는 잘 되지 않아서 후자 방식으로 진행하였다.
-
App Store Connect > Xcode Cloud > 워크플로 관리 > Workflow 선택 > 사후작업 > Slack 편집
-
Slack 주소 입력 및 계정 로그인 후 연결하려는 채널 선택 후 저장
-
관련 Apple 공식문서