Xcode Cloud + Firebase App Distribution 자동화 배포

앱 배포 자동화를 위해서 Xcode Cloud에 Workflow를 생성 및 설정하고 Firebase Distribution을 연결해보았다. (Xcode Cloud를 통해 관리하려는 project가 Github에 반드시 올라가 있어야 가능. 해당 글은 공개 repo를 기준으로 작성되어있으며, 비공개 repo의 경우 별도의 인증 절차가 추가로 필요하다고 함!)

  1. Xcode Cloud 설정
    1. Product > Xcode Cloud > Create Workflow..
    2. Select Product 창에서 앱 선택

      %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-09_11 12 38

      %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-09_11 12 11

      %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-09_11 13 07

      %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-09_11 13 54

      %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-09_11 14 24

      %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-09_11 15 17

      %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-09_11 42 12

      %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-09_11 15 44

      • install 해주고 나서 다시 xcode로 돌아가면 next버튼이 활성화 되어있을 것이다. (클릭)
      • Confirm App on App Store Connect → Complete 클릭
      • Start Build → branch 선택 → Start Build 클릭
        • default 설정의 build가 수행될 것..
    3. Workflow 설정 (설정한 것 들만 note)

      %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-09_11 04 08

      • General
        • Name : Workflow 이름
        • Description: Workflow 설정

      %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-09_11 09 16

      • Environment
        • Xcode Version, macOS Version 모두 현재 사용하고 있는 버전으로 맞추어주었음

      %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-09_11 26 03

      • Start Conditions (실행 될 조건)
        • 작업사항이 develop 브랜치에 merge되었을 때 실행되도록 했음
        • Options > Auto-cancel Builds를 선택하면 가장 마지막에 요청한 빌드가 실행되고 이전에 진행 중이었던 빌드는 취소 됨

        %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-09_11 22 18

      • Actions
        • 앱 배포 처리를 위해서 Archive 선택

      Save 버튼을 눌러 설정을 완료하고, Start Condtitions에 맞는 행동을 수행하면 빌드가 처리되는 것을 볼 수 있을 것이다.

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 공식문서

    Apple Developer Documentation

Firebase Distribution 연결 설정

  • Firebase CLI 설치
    • 다음 링크 접속 후 macOS용 Firebase CLI 바이너리 다운로드

      [Firebase CLI reference Firebase Documentation](https://firebase.google.com/docs/cli#install-cli-mac-linux)

      Untitled

    • 다운받은 파일을 .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 작성 시 활용할 수 있는 여러 환경변수들이 설명되어있다.

      Apple Developer Documentation

    • 참고 글

      Using Xcode Cloud With Firebase

Slack notify 연결

기본적으로 빌드 성공 여부를 이메일로 받을 수 있지만, notify 설정을 통해 Slack으로도 받을 수 있다.

Xcode Cloud Workflow 설정 페이지에서 하는 방법, App Store Connect 페이지에서 하는 방법이 있는데 이상하게 전자는 잘 되지 않아서 후자 방식으로 진행하였다.

  • App Store Connect > Xcode Cloud > 워크플로 관리 > Workflow 선택 > 사후작업 > Slack 편집

    %E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-09_12 04 52

  • Slack 주소 입력 및 계정 로그인 후 연결하려는 채널 선택 후 저장

  • 관련 Apple 공식문서

    Apple Developer Documentation