Fastlane (3)

HYUNGU, KANG·2022년 10월 18일
2

Fastlane

목록 보기
3/4

이 글에서는 실제 연동까지 실습을 진행하지는 않습니다.
단순히 진행에 필요한 기본 배경지식만을 설명합니다.

배포 설정

Android 플레이스토어 업로드하기

현재 안드로이드에서는 apk 가 아닌, aab 만을 업로드하게끔 권장되고 있다.

What is aab, bitcode?
Android 에서는 플레이스토어에 업로드 시, 디바이스별 최적화된 번들을 뽑아내기 위해서 aab 를 사용하고
iOS 에서는 앱스토어 업로드 시, 디바이스별 최적화된 번들을 뽑아내기 위해서 bitcode 를 사용합니다.
디바이스별로 번들이 최적화되면, 불필요한 바이너리들은 제거가 되고 용량이 줄어들게 됩니다.

플레이스토어에는 세가지 배포 트랙이 있는데, Alpha -> Beta -> Product 세가지이고, 좌에서 우측으로 이동하면서 테스트 및 배포가 가능하고, aab 업로드는 Alpha, Beta, Product 어디에 먼저 하던 상관 없다.

플레이스토어의 경우 빌드 파일에 서명을 진행하는데 이 과정들이 조금 복잡하다.

  • 일단 Upload key 라는 개념이 있다.
    말 그대로 플레이 스토어에 aab 업로드 시점에 동일한 Upload key로 서명되어있는지 체크를 한다.
    잃어버렸다면 문의센터에 문의해서 새롭게 발급받자.
  • Upload key 로 서명을 하고 업로드를 했다면, 플레이스토어에서 번들의 Upload key 서명을 제거하고 Signing key(서명키) 로 다시 서명을 한다.
    이 Signing key 로 서명된 번들이, 실제 고객들이 설치하게 되는 어플리케이션이다. (플레이 콘솔 > 앱 선택 > 설정 > 앱 무결성 에서 Signing key 확인 가능)
  • 만약 내부 앱 공유로 배포를 한다고 하면, 내부 앱 공유용 key 로 다시 서명을 한다. (플레이 콘솔 > 앱 선택 > 설정 > 내부 앱 공유 에서 내부 앱 공유 key 확인 가능)

따라서 업로드 전후로 키가 바뀌므로, 테스트와 실제 고객들이 이용하는 어플리케이션간의 서명에는 차이가 있다.
소셜 로그인을 사용한다면 이 점을 인지하고, 각 키별로 finger print/해시를 추출해야 한다.


Fastlane 으로 플레이스토어에 업로드를 하기 위해서는 upload_to_play_store 플러그인을 사용하면 된다.
기본적으로 빌드된 파일들의 경로가 잡혀있어서 별도로 설정할 건 없던걸로 기억한다. (다만 flavor 를 이용해서 환경을 분리하고 있다면, 직접 경로를 설정해줘야 한다.)

  • 업로드를 하기 위해선 apk 가 아닌, aab파일을 빌드해야 한다.
  • 업로드를 위해서는 play console 계정의 credential 이 필요한데, 링크를 참고하자

Fastlane 에서는 간단하게 테스트 업로드를 위한 플러그인을 두개 추천해주고 있는데
하나는 플레이스토어 베타 트랙과, 다른 하나는 Firebase distribution 이다.
플레이스토어는 생각보다 업데이트에 딜레이가 조금 있어서, 내부 테스트를 할 목적이라면 firebase distribution 을 추천한다.

lane :beta do
  # aab 빌드
  # 플레이스토어 베타 트랙에 업로드
  upload_to_play_store(track: 'beta')
  # 혹은 firebase distribution 으로 업로드
  firebase_app_distribution(
    app: "1:123456789:android:abcd1234",
    groups: "qa-team, trusted-testers"
  )
  # 슬랙에 완료 알림 전송
end

iOS 앱스토어 업로드하기

iOS 의 경우 Testflight 에 업로드된 바이너리를 심사에 올리고, 심사에 통과되면 배포를 하는식으로 진행이 된다.

Android 보다 빌드나 업로드가 상당히 오래 걸린다.

Testflight 에 업로드되고 처리과정을 기다리는데, 어차피 이메일이나 푸시로 알림이 오니까 기다리지 않아도 된다. (skip_waiting_for_build_processing 옵션을 꺼주자.)


Fastlane 으로 앱스토어에 업로드를 하기 위해서는 별도의 플러그인이 있지만,, 어차피 테스트를 진행하고 올려야 하므로 testflight 에 업로드하는 upload_to_testflight 플러그인을 사용하자.

만약 테스트를 위한 배포를 firebase distribution 으로 Android, iOS 양쪽 다 구축해놨다면 프로덕션 배포는 앱스토어에 올리는 플러그인을 사용해도 상관없다. (자세한 내용을 알고 싶다면 iOS ad-hoc 키워드로 검색을 해보자.)
하지만 기억하자, 테스트 없는 배포는 예상못한 버그를 불러오고, 예상못한 버그는 개발자에게 스트레스를 불러오고, 머리를 빠지게 하고 수명을 단축시킨다. 😵

lane :beta do
    # Match 로 Cert/Provisioning profile 설정
    # 앱 빌드
    # 앱 업로드
    upload_to_testflight(skip_waiting_for_build_processing: true)
end

업로드할때, 앱스토어에 업로드를 하는거라서 인증에 필요한 필수 정보들이 조금 많다. 플러그인 가이드를 상세히 읽어보면 필요한 정보들과 설정하는법등을 알 수 있으니 잘 읽고, cli 에서 입력하라고 할때 일일이 입력을 해주거나 환경변수로 설정을 해두면 된다.
환경변수들은 여기를 참고하고, 2FA 를 사용하기 싫다면 AppStore Connect API 키를 발급받아서 사용하자.

슬랙으로 메세지 보내기 (Incoming hook)

슬랙은 정말 별거 없다. http://docs.fastlane.tools/actions/slack/#slack
Incoming webhook 으로 메세지를 보내는거라서, Incoming hook URL 을 슬랙에서 발급받고 설정만 해주면 된다.

lane :slack do
	slack(message: "App successfully released!")
end
profile
JavaScript, TypeScript and React-Native

0개의 댓글