Fastlane 배포하기

박형석·2021년 12월 1일
0

CI / CD

목록 보기
7/7
post-thumbnail

지난 글

지난 글에는 fastlane을 설치하고 기본적인 세팅을 했다. 현재는 testflight에 올라가 있고 내부 테스터와 외부 테스터에게 테스팅을 모두 완료한 상태이다. 이제 앱 스토어 심사까지 앱을 제출해보자.

준비

배포 준비에 관련된 설정을 위해서 아래 명령어를 실행한다. 그럼 아래의 파일과 폴더가 생성된다.

fastlane deliver init
  • Deliverfile : 다양한 App Store Connect metadata 저장하고 있다가 배포시 사용
  • metadata 폴더 : App Store Connect에 기입해야 하는 다양한 정보들
  • screenshot 폴더 : App Store Connect에 넣어야 하는 스크린샷

1. Deliverfile

이 파일을 이용해서 deliver 할 수 있는데, 필자는 바로 fastfile에 해당 작업을 하려 한다. 관련한 건 실제 사용해보고 글을 올리도록 하겠다.

2. screenshot

fastlane에서 스크릿샷을 찍고 올려주는 대박적인 기능이 있다. UI test를 이용해서 우리가 원하는 뷰로 이동하고 해당 뷰에서 캡처하는 방식인데, 원하는 시뮬레이터를 선택할 수도, 언어마다 다른 스크린샷을 찍도록 할 수도 있다. 필자는 이미 올라가있는 앱 스토어에 재배포이기 때문에 스킵을 한다. 아래 제드님 글을 참고!

https://zeddios.tistory.com/840

이미 올라가있는 스크린샷을 받아올 수도 있다.

fastlane deliver download_screenshots

3. metadata

appstore에 등록할 때 정말 많은 정보를 기입해야 한다. 이 정보들이 metadata에 해당한다. 필자는 이미 올라가있는 앱의 메타데이터를 땡겨오겠다.

fastlane deliver download_metadata

처음 앱 정보들을 입력할 때는 직접 앱 정보를 먼저 기입하고 위의 다운로드 메타데이터를 하는 것을 추천한다.

fastfile 작성하기

desc "build app and release to App Store."
  lane :release do |options|
    if options[:v]
      get_certificates
      get_provisioning_profile
      cocoapods(use_bundle_exec: false)
      build_app(
        configuration: "Release"
      )
      upload_to_app_store(
        app_version: options[:v],
        submit_for_review: true,
        force: true,
        automatic_release: true,
        skip_screenshots: false,
        screenshots_path: "./screenshots",
        overwrite_screenshots: true,
        skip_metadata: false,
        metadata_path: "./metadata",
        skip_app_version_update: false
     )
     slack(
        message: "Appstore 배포에 성공했습니다!",
        slack_url: "https://hooks.slack.com/services/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"
     )
    end
  end

동일한 부분은 제외하고 새로운 부분만 살펴보자

  1. lane 생성 및 옵션 설정
lane :release do |options|
    if options[:v]
    
// fastlane release v:2.0.0

전에는 beta 였다면 이번에는 release이다. 특별히 옵션을 넣어서 fastlane을 실행할 때 옵션을 넣도록 했다.

  1. build configuration 설정
build_app(
        configuration: "Release"
)

빌드시 사용할 빌드 구성을 선택해준다. 현재 우리는 debug와 release 두 개가 있고 그 중 release 구성을 업로드 해주자. 이 빌드 구성으로 build setting이 되고 이 세팅으로 target이 최종 프로덕트가 된다.

  1. 앱 스토어에 업로드 명령
upload_to_app_store(

)

일전에는 testflight에 업로드하는 명령어를 사용했다면 이번에는 appstore에 업로드하는 명령어를 사용한다.

  1. upload to app store 설정
app_version: options[:v]
skip_app_version_update: false

앱 버전 설정이다. 우리는 위에서 option으로 버전을 넣어주기로 했으므로 그 값이 들어간다. 그리고 우리가 적은 버전이 업데이트 되도록 설정한다.

submit_for_review: true,
automatic_release: true

앱 스토어에 리뷰 요청을 바로 할 것인지, 그리고 승인이 되면 자동으로 앱스토어에 제출할 것인지에 대한 세팅이다.

skip_screenshots: false,
screenshots_path: "./screenshots",
overwrite_screenshots: true,

itunesConnect에서 스크린샷을 올렸다면 자동으로 fastlane deliver download_metadata 을 실행했을 때 디렉토리가 자동으로 생상되어 굳이 작성할 필요가 없다.

skip_metadata: false,
metadata_path: "./metadata",

메타 데이터를 업로드 여부에 대한 질문과 파일 경로다.

짜잔

정리하며

fastlane도 기능이 많고 각종 기능을 다양하게 사용할 수 있다. 만약 큰 앱을 다룬다면 build configuration을 나누고 해당 구성당 어떻게 테스트를 배포하고 어떻게 프로덕트를 배포할 것인지 appfile 및 fastfile에서 분기를 준다거나, 코드 사이닝 관리를 위해 match를 사용한다던가, deliverfile을 잘 활용해서 배포에 특화된 lane 구성을 할 수 있게 하는 등... 아직 해볼게 많다. 좋은 경험을 시작으로 더 나은 경험을 쌓아가보자.

profile
IOS Developer

0개의 댓글