코딩하는 개굴이

[안드로이드] Fastlane과 GitHub Action을 이용한 자동 배포 시스템 구축하기 - Fastlane 배포 설정 (1) 본문

안드로이드

[안드로이드] Fastlane과 GitHub Action을 이용한 자동 배포 시스템 구축하기 - Fastlane 배포 설정 (1)

개굴이모자 2022. 5. 1. 00:08
반응형

Fastlane, GitFlow 를 이용한 자동 배포 시스템 구축하기

 

지난번에는 Fastlane으로 Firebase에 Android 앱을 배포하는 방법에 대해 포스팅했다. 이번에는, Fastlane 과 GitFlow 로 Google Play Store 에 자동 배포 프로세스를 구축해보자.

Fastlane

이 모든 시작은 Fastlane을 설치하며 시작해야한다.

fastlane 설치하기 및 초기화

//Ruby
sudo gem install fastlane

//Brew -> 왜인지 본인은 안되어서 ruby로 수행
brew install fastlane

//설치 후 fastlane 버전 확인
fastlane env

//fastlane 을 적용하려는 안드로이드 project의 repo 로 이동
cd project_path

fastlane init
//package name 입력하라고 뜰 텐데, 해당 project 의 package name을 입력
> com.sample.app

//JSON secret file path 설정은 후에, 다시 해도 되므로 ENTER 입력
//metadata, screenshots, build~ 라는 내용의 옵션 설정 또한 후에 할 후 있으므로, n을 누른다.

//후에 성공 시, setup 한 것의 확인을 위해 테스트를 수행
fastlane test
//정상일 경우 [01:34:10]: fastlane.tools finished successfully 🎉 라는 문구 확인 가능

해당 작업을 수행하면, 안드로이드 프로젝트에 Appfile, Fastfile 이 생긴다.

init 설명 1

 

 

해당 파일들의 구성을 위해서는 우선, json secret file 을 얻어와야한다.

 

 

 

JSON Secret 파일 설정 및 권한 부여

JSON Secret 파일과 Google Play Console 에 올릴 수 있는 권한을 부여해 Fastlane 기본 설정을 완료할 수 있다. 찬찬히 진행해보도록 하자.

 

 

Google Play Console에서 서비스 계정 생성

image

Google Play Console 에 엡 프로젝트가 생성되어있는 상태에서, API 액세스 를 선택하고, 서비스 계정 새로 만들기를 선택한다.

image

 

 

보통 서비스 계정은 jenkins 및 gcp 등 자동 배포 프로세스 등과 같은 무인 서버에서 API 에 액세스하는데 사용하며, 권한을 세밀하게 조정할 수 있으니, 역할에 맞는 권한을 부여하도록 하자.


그러면 해당 팝업이 뜨게 되는데, Google API 콘솔로 이동을 선택한다.

image

 

 

 

GCP 에서 계정을 생성

  1. 서비스 계정 만들기를 선택한다.
    GCP 서비스 계정 만들기

  2. 서비스 계정 세부 정보에 내용을 입력한다. 이때, 이메일 주소는 복사해두도록 하자.GCP 서비스 계정 세부 정보

  3. 서비스 계정의 권한은 서비스 계정 사용자로 설정한다.
    GCP 서비스 계정 만들기 권한 부여

  4. 선택 사항은 설정하지 않아도 무관한다. 완료를 누른다.
    GCP 서비스 계정 만들기 권한 부여 선택 사항

  • 이 단계까지 완료하면 이처럼 계정이 생기게 되는데, 키 관리 를 선택한다.

GCP 서비스 계정 키 관리

  • 새 키 만들기를 선택한다.

GCP 새 키 만들기

  • JSON 유형의 비공개 키를 생성한다.

해당 과정에서 생성된 비공개 키는 다시 제공되지 않으므로, 다운로드하면 유실되지 않도록 유의하고 개인적으로 보관할 수 있도록 한다.

GCP 비공개 키 만들기 JSON

 

 

Google Play Console로 돌아가면, 서비스 계정이 하나 추가된 것을 확인할 수 있다.

Google Play Console 서비스 계정 추가됨

여기서 권한 부여를 선택하고, 앱 권한을 선택해 해당 프로젝트에 대한 모든 권한을 부여한다.

 

선택적으로 권한을 부여해도 상관 없다.


사용자 앱 권한 추가

자. 이제 드디어 Appfile 에 JSON 파일 path를 넣을 수 있다.

 

 

 

Appfile 설정

Appfile 설명

json_key_file 에 해당 json 파일을 프로젝트에 넣고, path 를 넣어준다.

해당 파일은 보안 상, 위험하므로 public 형태의 프로젝트 등에서는 git에 올라가지 않도록 유의해야한다. 본인의 경우 .gitignore 에 추가하여, 올라가지 않도록 하였다.



private key 로 구글 플레이 스토어와 연결

fastlane run validate_play_store_json_key json_key:/path/to/your/downloaded/file.json

해당 명령어로, 구글 json private key 로 구글 플레이 스토어와 연결을 수행한다.

그러면, Successfully established connection to Google Play Store.라는 문구를 확인할 수 있다. :D

fastlane supply init

이후 위의 명령어를 수행하면, Google Play Console 에 등록된 프로젝트 정보들이 들어가있는 Metadata 쪽 파일들도 구성되게 된다.

Metadata 쪽 구성




Fastfile 설정

clean assembleRelease 를 gradle task 로 설정한다면 apk 파일이 나오게 된다. 따라서, bundleRelease 로 설정을 바꿔주어, aab 파일을 생성할 수 있도록 한다.

default_platform(:android)

platform :android do
  desc "Runs all the tests"
  lane :test do
    gradle(task: "test")
  end

  desc "Submit a new Beta Build to Crashlytics Beta"
  lane :beta do
    gradle(task: "clean bundleRelease")
    crashlytics

    # sh "your_script.sh"
    # You can also use other beta testing services here
  end

  desc "Deploy a new version to the Google Play"
  lane :deploy do
    gradle(task: "clean bundleRelease")
    upload_to_play_store(track: 'alpha') //git flow 의 alpha 트랙을 실행하도록 한다.
  end
end

그냥 여기서 바로 Play Store 로 출시하고 싶을 경우, upload_to_play_store 만 수행하면 바로 출시되는 것을 확인할 수 있다.

만일 처음 올리는 경우, 내부 테스트에 앱번들을 올리지 않은 상태이더라도 새로운 버전을 생성해 두도록 하자. 해당 버전을 기준으로 프로젝트의 버전을 하나 올려서 fastlane deploy 를 수행한다.

 

 

 

다음 포스팅에서는 GitWorkFlow 쪽의 구성으로 자동 배포 프로세스 구성을 마무리 해보자.

반응형
Comments