firebase app distribution + fastlane을 이용한 앱 배포 자동화(window)(2) - 배포 완료시 슬랙 알람 추가하기

2022. 10. 7. 09:49개발/최적화

현재 내 lane은...자동 빌드 / 배포 정도만 수행하고 있다.

 

 

근데 로그를 계속 보면서 언제 끝나는지 기다리는게........개 에바라고 생각함.

그래서 webhook을 통해, 배포 완료시 슬랙 알림을 보내 보기로 했다.

 

필요한건 일단 슬랙의 incoming webhook이다.

세팅은 저번에 다 했으니 넘어가고.....

 

슬랙의 왼쪽 상단 메뉴에서

 앱으로 들어가준다.

 

 

 

그리고 incoming webhook이라고 검색하면

요렇게 뜰것임. 쟤를 slack에 추가해줍시다.

 

대충 어느 채널에 알릴지 채널을 선택하고 추가한다고 하면

 

이런 설정 화면이 뜬다.

 설정은..뭐 하고싶은거 하고, 여기서 필요한건 웹후크 url이다. 복사해둔다.

 

 

그리고 fastlane의 fastfile에다가

# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
#     https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
#     https://docs.fastlane.tools/plugins/available-plugins
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane

default_platform(:android)
platform :android do
    desc "Lane for distribution"
    lane :distribute do
        gradle(
          task: "assemble",
          build_type: "Release",
 	  properties: {
         	"android.injected.signing.store.file" => ENV['SIGNING_STORE_FILE_PATH'],  
         	"android.injected.signing.store.password" => ENV['SIGNING_STORE_PASSWORD'],
         	"android.injected.signing.key.alias" => ENV['SIGNING_KEY_ALIAS'],
         	"android.injected.signing.key.password" => ENV['SIGNING_KEY_PASSWORD'],
       		}
        )
        firebase_app_distribution(
            app:  ENV['APP_ID'],
       	    testers: "테스터1, 테스터2",
            firebase_cli_token:  ENV['FIREBASE_TOKEN'],
            release_notes: "릴리즈내용",
       	    debug: true,
	)
      send_slack_message(msg: "보낼 메세지")
     end

    lane :send_slack_message do |options|
    slack(
      message: options[:msg],
      slack_url: ENV['WEBHOOK_URL'],
)
end
end

요런식으로 작성하면 된다.

 

 

 

 

아 참고로 이전에 올렸던 파일에서 추가된 부분이 꽤 있는데 설명해보자면...

 gradle(
          task: "assemble",
          build_type: "Release",
 	  properties: {
         	"android.injected.signing.store.file" => ENV['SIGNING_STORE_FILE_PATH'],  
         	"android.injected.signing.store.password" => ENV['SIGNING_STORE_PASSWORD'],
         	"android.injected.signing.key.alias" => ENV['SIGNING_KEY_ALIAS'],
         	"android.injected.signing.key.password" => ENV['SIGNING_KEY_PASSWORD'],
       		}
        )

1. 일단...사이닝 property가 들어가지 않으니까 fastlane에서 자꾸 설치 오류가 생기길래 gradle에 저 요소들을 추가했다.

2.  ENV는 fastlane 내에서 사용하는 환경변수다. 토큰이나 이런거 뭐...따로 빼두려고 만들었다.

 

 

 

 

 

ENV 사용 방법은 아래와 같다.

 

 

1. 터미널에 요 명령어 입력해서 환경 세팅한다.

[sudo] gem install dotenv

 

2. fastlane 파일 내에 .env 파일을 생성한다. 아래 명령어로 생성해도 된다

 touch .env

 

3. env 파일 내에 쓸 변수들 입력하고 저장한다

APP_ID = "앱아이디"

FIREBASE_TOKEN = "firebase 로그인 토큰"

SIGNING_KEY_ALIAS = "키 alias"
SIGNING_KEY_PASSWORD = "키 비번"

SIGNING_STORE_PASSWORD = "키 저장소 비번"
SIGNING_STORE_FILE_PATH = "키 파일 PATH"

WEBHOOK_URL = 아까 얻은 웹후크"

 

4. 갖다쓴다. 끝.

 

 

암튼 이렇게 env / fastfile까지 세팅해주고, 

앱을 다 만든 다음에 fastlane distribute 로 배포해주면. 배포 완료시에

 

요렇게 깜찍한 알림이 온다~

 

끝.