- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- KotlinInAction
- blog
- ai
- GIT
- Kotlin
- 책추천
- 진짜학습지후기
- 일본어문법
- 인공지능
- rxjava
- posting
- jlpt
- n3문법
- 코틀린
- suspend
- pullrequest
- Android
- github
- 진짜일본어
- 일본어기초
- errorhandling
- 진짜학습지
- webflux
- 책리뷰
- PR
- androidstudio
- coroutine
- CustomTab
- 학습지
- 안드로이드
코딩하는 개굴이
[안드로이드] Fastlane과 GitHub Action을 이용한 자동 배포 시스템 구축하기 - Fastlane 배포 설정 (1) 본문
[안드로이드] Fastlane과 GitHub Action을 이용한 자동 배포 시스템 구축하기 - Fastlane 배포 설정 (1)
개굴이모자 2022. 5. 1. 00:08Fastlane, 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 이 생긴다.
해당 파일들의 구성을 위해서는 우선, json secret file 을 얻어와야한다.
JSON Secret 파일 설정 및 권한 부여
- (Getting started with fastlane for Android)[https://docs.fastlane.tools/getting-started/android/setup/#getting-started-with-fastlane-for-android]
JSON Secret 파일과 Google Play Console 에 올릴 수 있는 권한을 부여해 Fastlane 기본 설정을 완료할 수 있다. 찬찬히 진행해보도록 하자.
Google Play Console에서 서비스 계정 생성
Google Play Console 에 엡 프로젝트가 생성되어있는 상태에서, API 액세스
를 선택하고, 서비스 계정 새로 만들기를 선택한다.
보통 서비스 계정은 jenkins 및 gcp 등 자동 배포 프로세스 등과 같은 무인 서버에서 API 에 액세스하는데 사용하며, 권한을 세밀하게 조정할 수 있으니, 역할에 맞는 권한을 부여하도록 하자.
그러면 해당 팝업이 뜨게 되는데, Google API 콘솔
로 이동을 선택한다.
GCP 에서 계정을 생성
- 서비스 계정 만들기를 선택한다.
- 서비스 계정 세부 정보에 내용을 입력한다. 이때, 이메일 주소는 복사해두도록 하자.
- 서비스 계정의 권한은
서비스 계정 사용자
로 설정한다. - 선택 사항은 설정하지 않아도 무관한다. 완료를 누른다.
- 이 단계까지 완료하면 이처럼 계정이 생기게 되는데, 키 관리 를 선택한다.
- 새 키 만들기를 선택한다.
- JSON 유형의 비공개 키를 생성한다.
해당 과정에서 생성된 비공개 키는 다시 제공되지 않으므로, 다운로드하면 유실되지 않도록 유의하고 개인적으로 보관할 수 있도록 한다.
Google Play Console로 돌아가면, 서비스 계정이 하나 추가된 것을 확인할 수 있다.
여기서 권한 부여를 선택하고, 앱 권한을 선택해 해당 프로젝트에 대한 모든 권한을 부여한다.
선택적으로 권한을 부여해도 상관 없다.
자. 이제 드디어 Appfile 에 JSON 파일 path를 넣을 수 있다.
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 쪽 파일들도 구성되게 된다.
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 쪽의 구성으로 자동 배포 프로세스 구성을 마무리 해보자.
'안드로이드' 카테고리의 다른 글
[JAVA/안드로이드] Handler, Looper, Thread (0) | 2022.09.07 |
---|---|
[안드로이드] SingleThread 상태와 MultiThread 상태 (0) | 2022.09.05 |
[안드로이드] Could not connect to remote process. Aborting debug session. 해결법 (0) | 2022.03.09 |
[안드로이드] Local Notification 매일 특정 시간에 보내기 (0) | 2022.02.27 |
[안드로이드] Fastlane으로 Firebase에 Android 앱 배포하기 (0) | 2021.03.21 |