본문 바로가기
Fastlane

Fastlane으로 Firebase App Distribution 배포 (4) - Firebase App Distribution과 Fastlane 연동 (IOS편)

by th_bigLight 2022. 12. 6.

공식 페이지 :

https://firebase.google.com/docs/app-distribution/ios/distribute-fastlane

 

fastlane을 사용하여 테스터에게 iOS 앱 배포  |  Firebase 앱 배포

Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기 이 페이지는 Cloud Translation API를 통해 번역되었습니

firebase.google.com

 

1. fastlane에 플러그인 추가

fastlane add_plugin firebase_app_distribution

질문들 : 

Should fastlane modify the Gemfile at path '/앱경로/ios/Gemfile' for you?

y 선택 후 Gemfile이 잘 만들어졌는지 확인.

 

2. github에 match 설정

* github에 정보를 저장해둘 repository를 만들어야 함. 당연히 private.


참고 url : https://docs.fastlane.tools/actions/match/

 

match - fastlane docs

A new approach to iOS and macOS code signing: Share one code signing identity across your development team to simplify your codesigning setup and prevent code signing issues. match is the implementation of the codesigning.guide concept. match creates all r

docs.fastlane.tools

 

1. match 시작

*ios 폴더 내에서 명령어 입력

fastlane match init

질문 :

fastlane match supports multiple storage modes, please select the one you want to use:
1. git
2. google_cloud
3. s3
4. gitlab_secure_files

1번 git 선택

Please create a new, private git repository to store the certificates and profiles there
URL of the Git Repo:

만들어둔 github repository url을 입력

 

2. fastlane/Matchfile에 app_identifier, username의 주석을 풀고 앱에 맞게 설정.

# app_identifier(["tools.fastlane.app", "tools.fastlane.app2"])
# username("user@fastlane.tools") # Your Apple Developer Portal username

app_identifier는 Appfile에 있고 username은 apple id를 입력

 

3. adhoc 생성

*현재는 firebase app distribution을 사용한 베타 버전 배포이기 때문에 appstore 방식이 아닌 adhoc 방식을 사용할 예정

fastlane match adhoc

 

4. Fastfile 설정

fastlane/Fastfile로 이동

default_platform(:ios)

$slack_url = "아까 복사해둔 webhook url"
$package_name = "앱 패키지 명"

platform :ios do

  desc "Submit a Development Build to Firebase App Distribution"
  lane :dist do
    begin
      $provisioningProfiles = "match AdHoc " + $package_name

      match(
        type: "adhoc",
        app_identifier: $package_name,
      )

      gym(
        workspace: "Runner.xcworkspace",
        export_options: {
          method: "ad-hoc",
          xcargs: "-allowProvisioningUpdates",
          provisioningProfiles: {
            $package_name => $provisioningProfiles
          }
        },
      )
      firebase_app_distribution(
        app: "firebase app id",
        firebase_cli_token: "firebase cli token",
        release_notes: "ios 앱 테스트 배포",
        groups: "firebase app distribution에서 설정해둔 group 명",
      )
      build_success("성공했을 때 메시지", "firebase app distribution 링크 url")
    rescue => exception
      on_error(exception)
    end
  end
end

def build_success(message, link = "")
  slack(
     message: message,
     success: true,        # Optional, defaults to true.
     channel: "배포 알림 슬랙 채널 이름",
     slack_url: $slack_url,
     attachment_properties: {
      fields: [{}]
     },
     payload: {  # Optional, lets you specify any number of your own Slack attachments.
      "빌드 날짜" =>  Time.new.to_s,
      "초대 링크" => link,
     },
     username: "슬랙에 전달될 때의 유저명"
  )

end

def on_error(exception)
  slack(
     message: "실패 메시지",
     success: false,
     channel: "배포 알림 슬랙 채널 이름",
     slack_url: $slack_url,
     attachment_properties: {
       fields: [{
         title: "Error message",
         value: exception.to_s,
         short: false
       }]
     },
     payload: {  # Optional, lets you specify any number of your own Slack attachments.
       "빌드 날짜" =>  Time.new.to_s,
     },
     username: "슬랙에 전달될 때의 유저명"
  )
 end

firebase cli token 구하는 방법 :

1. firebase cli 설치

curl -sL https://firebase.tools | bash

2. 로그인

firebase login

3. 로그인 확인

firebase projects:list

4. 토큰 확인

firebase login:ci

로그인을 진행하면 터미널에 토큰을 확인할 수 있다.

Success! Use this token to login on a CI server:

토----큰

토큰은 1//으로 시작한다. 1//부터 복사하여 넣어주어야 함.

참고 : https://firebase.google.com/docs/cli#sign-in-test-cli

 

Firebase CLI 참조  |  Firebase 문서

 

firebase.google.com

 

설정 완료!

해당 명령어를 실행해주면 firebase app distribution으로 배포가 진행되며 완료 혹은 실패 시 설정해둔 slack으로 메시지가 전송된다.

fastlane dist

 

 

 

 

 

댓글