Firebase+CircleCi+Fastlane으로 AdHoc 게재 자동화

소개



이번에는 이전 투고한 FirebaseAppDistribution의 배포 작업을 CircleCi · Fastlane를 이용해 자동화해 나가고 싶습니다. 구현 전에 다음 준비 항목이 필요합니다.

사전 준비


  • Firebase 프로젝트
  • Fastlane 소개
  • AppleDeveloperProgram
  • FirebaseCLI 배포
  • 이전 기사에 도입 절차가 있습니다.


  • 구현 흐름


  • Fastlane Match를 지정하여 CI 환경에서도 adhoc 인증서를 참조할 수 있습니다.
  • CircleCi에서 adhoc 인증서를 참조할 수 있는 권한을 부여합니다.
  • CircleCi에서 Firebase에 액세스하기 위해 환경 변수를 설정합니다.
  • Fastlane에 AppDistribution에 배포하기 위해 Lane을 추가합니다.
  • CircleCi 워크플로에 4.에서 만든 레인을 추가합니다.

  • Fastlane Match 소개



    먼저 인증서에 대한 정보를 저장하고 저장할 리포지토리를 만듭니다.
      [email protected]:your_github_name/certificates.git
    

    그런 다음 Fastlane의 MatchFile을 다음 명령으로 설정합니다. 여기서 설정github-url은 HTTPS의 경우 CI에서 배포할 때 Error가 발생할 수 있으므로 SSH로 설정해 둡니다. 또 Passphrass for Git repo 로 설정하는 값은 나중에 멤버에게 공유하는 등 사용하는 타이밍이 있으므로, 삼가해 둡시다.
      $ fastlane match init
    

    그런 다음 Git 리포지토리에 개발 인증서와 배달 인증서를 각각 만듭니다.
      $ fastlane match development
      $ fastlane match adhoc
    

    다음에 작성한 인증서와 프로파일을 취득해, Xcode의 Signing&Capabilities에 프로파일을 설정해 둡시다.
      $ fastlane match development --readonly
      $ fastlane match adhoc --readonly
    



    CircleCi에 Certificates 저장소 액세스 권한 부여



    CircleCi 프로젝트 화면으로 이동하여 현재 사용자의 SSH 키를 등록합니다.

    h tps : // / rc ぇ시. 이 m / 두 cs / 그럼 / 2.0 / 아 d sh sh y /의 거리 Checkout SSH keys에서 등록합니다.

    CircleCi에 FirebaseToken 환경 변수 등록



    CI용 FirebaseToken을 FirebaseCLI에서 가져옵니다.
      $ firebase login:ci
    

    로그인에 성공적으로 표시된 token을 CircleCi 환경 변수에 등록합니다.




    FastFile 구현



    먼저 Fastlane에서 AppDistribution을 사용하기위한 플러그인을 추가합니다.
      $ fastlane add_plugin firebase_app_distribution
    

    FastFile에 Lane을 추가합니다.

    Fastfile.rb
    default_platform(:ios)
    WORKSPACE = "App.xcworkspace"
    SCHEME = "App"
    platform :ios do
      before_all do
        # https://circleci.com/docs/ja/2.0/testing-ios/
        setup_circle_ci
      end
    
      desc 'Runs except unit_test tests'
      lane :unit_test do
        scan(
          scheme: SCHEME
        )
      end
    
      desc 'Deploy to Firebase'
      lane :adhoc do
        # matchでadhoc証明を行います。
        match(type: "adhoc", readonly: true)
        # https://docs.fastlane.tools/actions/gym/ でipaを作成します。
        gym(
          workspace: WORKSPACE,
          scheme: SCHEME,
          configuration: "Staging",
          export_method: "ad-hoc"
        )
        # デプロイ
        firebase_app_distribution(
                  app: "1:298717447283:ios:f90cc26d3b9a7423725606",
                  testers: "[email protected],
                  release_notes: "Lots of amazing new features to test out!",
                  firebase_cli_path: "./node_modules/.bin/firebase"
        )
      end
    end
    

    CircleCi-Config.yml 구현



    config.yml
    defaults: &defaults
      working_directory: ~/app
      macos:
        xcode: "11.3.0"
    version: 2
    jobs:
      unit_test:
        <<: *defaults
        steps:
          - checkout
          - run: bundle install --path vendor/bundle
          - run:
              name: Fastlane
              command: bundle exec fastlane unit_test
      adhoc:
        <<: *defaults
        steps:
          - checkout
          - run: bundle --path vendor/bundle
          - run:
              name: Install Firebase Tools
              # FirebaseCLIをインストール
              command: npm install firebase-tools
          - deploy:
              name: Deploy
              # Fastfileで作成したlaneを呼び出す
              command: bundle exec fastlane adhoc
    
    workflows:
      version: 2
      build-and-deploy:
        jobs:
          - unit_test
          - adhoc:
              # unit_test完了後にデプロイ
              requires:
                - unit_test
    

    사이고에게



    이제 PR이 생성될 때마다 앱의 AdHoc이 테스터에 전달됩니다. 앱을 설치하는 단계는 이전 기사에서도 게시했습니다.

    좋은 웹페이지 즐겨찾기