[문제 해결] Fastlane Android Staging 배포 이슈

Wonhyun Kwon·2023년 12월 18일
0

문제 해결

목록 보기
2/2
post-thumbnail
post-custom-banner

0. 개요

현재 실무에서 Firebase console distribution 으로 iOS, Android 모두 배포를 진행하고 있다.
배포 범위는 배포 전 QA를 위한 staging 환경과 실 배포를 위한 production 환경으로 구축되어 있다.
react-native-config 라이브러리를 사용하여 각 빌드 환경에 맞게 .env 파일을 분기하고 있고, iOS는 정상적으로 동작을 하였다.
하지만 Android는 동작하지 않는 문제가 발생했고, env 파일을 manual하게 변경해줘야 하는 휴먼 에러 발생 리스크도 안고 있었다.


1. 문제점

문제는 간단했다.
Fastlane의 FastFile 확장자인 ruby에서 잘못 된 코드가 인식되고 있었다.

수정 전 코드는 다음과 같다.

  desc "Firebase console distribution for staging"
  lane :staging do |options|
    updateVersion(options)
    gradle(task: "clean", build_type: "stagingRelease")
    firebase_app_distribution(
      app: "1:893580691283:android:22d636bf5001483f9b03a6",
      firebase_cli_token: "1//0eamUU9BrlPKRCgYIARAAGA4SNwF-L9Ir8rornPKs4qMWDs1KR0yUWHoqCpUwAL_-ltnHR4O15vOPSO3Up40wuO2MmBW8XJQDUh4",
      android_artifact_type: "APK",
      groups: "QA",
      debug: true
    )
  end

문제가 되는 부분은 gradle(task: "clean", build_type: "stagingRelease") 이 부분이었다.
Android 빌드에서는 보통 build_type 뿐만 아니라 flavour를 함께 사용한다.
release 라는 build_type 안에 staging 이라는 flavour를 함께 섞어서 넣었다.


2. 해결 방법

아래와 같이 clean task 다음으로 추가로 task를 생성하여 다음과 같이 수정하였다.

  desc "Firebase console distribution for staging"
  lane :staging do |options|
    updateVersion(options)
    gradle(task: "clean")
    # assemble: Play store에 배포 된 프로젝트가 아니라서 APK(assemble)만 firebase에 업로드 가능
    gradle(task: "assembleStagingRelease")
    firebase_app_distribution(
      app: "1:893580691283:android:22d636bf5001483f9b03a6",
      firebase_cli_token: "1//0eamUU9BrlPKRCgYIARAAGA4SNwF-L9Ir8rornPKs4qMWDs1KR0yUWHoqCpUwAL_-ltnHR4O15vOPSO3Up40wuO2MmBW8XJQDUh4",
      android_artifact_type: "APK",
      groups: "QA",
      debug: true
    )
  end
profile
모든 사용자가 만족하는 UI를 만드는 FE 개발자 권원현입니다.
post-custom-banner

0개의 댓글