Android

[Android / Java] Fastlane으로 테스트 앱 자동 배포(CD) 구축하기

evan.k 2023. 3. 3. 14:31

일전에 IOS에서 fastlane으로 테스트 앱 자동배포 구축에 대해 글을 포스팅했었다.

 

[iOS / Swift] Fastlane으로 테스트 앱 자동 배포(CD) 구축하기 (1)

회사에 처음 입사하고 가장 먼저 한 일이 자동 배포 구축이었다. 왜 이 작업을 가장 먼저 했는 지는 아래에서 설명하고자 한다. 기존의 프로세스 기존의 앱 서비스 개발 방식은 아래와 같았다. 1.

kwtjdtn.tistory.com

IOS에서 fastlane으로 테스트앱 자동 배포 구축(2)

 

[iOS / Swift] Fastlane으로 테스트 앱 자동 배포(CD) 구축하기 (2)

지난번 포스팅 때 Firebase App Distribution 세팅 및 이용 방법에 대해 얘기했었다. [iOS / Swift] Fastlane으로 테스트 앱 자동 배포(CD) 구축하기 (1) 회사에 처음 입사하고 가장 먼저 한 일이 자동 배포 구축

kwtjdtn.tistory.com

 

오늘은 Android에서 자동 배포 구축하기에 대해 글을 쓰려고 한다.

기본적인 fastlane 세팅, firebase app distribution 세팅 등은 위의 링크 글을 참고하면 좋을 것 같다.

 

fastlane 설치 및 세팅이 다 되었으면 android에서 필요한 추가 설정 부터 시작하겠다.

 

download json key

firebase dashboard의 프로젝트 설정에서 서비스 계정 탭에서 서비스 계정 n개를 클릭해 링크로 이동한다.

 

Google Iam 관리자 페이지에 들어 왔다면 서비스 계정 탭에서 서비스 계정 만들기를 클릭한다.

이때 service account role은 firebase-adminsdk로 설정한 후 생성한다.

생성이 완료 되었다면 생성한 계정 페이지로 들어간 후 키 탭에서 새로운 키(JSON)를 추가 해준다.

이 때 생성한 키를 안드로이드 프로젝트 디렉토리에 추가 해주자 (경로 수정 가능)

추가로 sign 키로 사용하고 있는 key store jks 파일을 fastlane 폴더 안에 추가해야 한다.

Appfile 수정

json_key_file("./app/key.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
package_name("com.test.app") # e.g. com.krausefx.app

Fastfile 수정

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 :develop do
    releaseFilePath = File.join(Dir.pwd, "your_release_key.jks")
    gradle(
      task: "clean assembleRelease",
      properties: {
        "android.injected.signing.store.file" => releaseFilePath,
        "android.injected.signing.store.password" => "password",
        "android.injected.signing.key.alias" => "your_alias",
        "android.injected.signing.key.password" => "password",
      }
    )
    firebase_app_distribution(
      app: "app_id",
      debug: true,
      groups: "qa_team"
    )

    version = get_version_name()
    versionCode = get_version_code()

    slack(
      username: "app_name",
      message: "Android, Firebase App Distribution 배포가 완료되었습니다.",
      channel: "slack_channel",
      slack_url: "slack_web_hook_url",
      payload: {
        "Version": version + " (" + versionCode + ")"
      }
    )
  end
end

터미널에서 fastlane develop 명령어를 실행하면

테스트 앱 배포가 정상적으로 완료된 것을 확인할 수 있다.