Programer/iOS

[Fastlane] iOS App 자동 배포 해보기

아즈샤 2019. 4. 10. 12:57
반응형

대부분 App을 배포할 때 2~3개 정도의 버전을 배포하는데 (Develope, Production, etc..) 아카이빙하고, 앱스토어에 올리는 일이 여간 귀찮은 일이 아니었다. 예전에 Fastlane을 알게되어 적용을 해보려고 했는데, 프로젝트도 어느 정도 마무리되어 시간이 남아 적용해보게 되었다.

 

1. 설치

# RubyGems를 이용하는 방법

$ sudo gem install fastlane -NV

 

# Homebrew를 이용하는 방법

$ brew cask install fastlane

 

커맨드 창에 입력만 하면 된다. 나는 Homebrew를 통해 설치하였다.

(설치후, fastlane 명령어를 전역에서 사용할 수있도록 profile 세팅 방법을 알려주는데, 필요시 추가해주면 된다.)

 

2. Fastlane 초기화

iOS 프로젝트 홈 디렉토리로 간 후

 

$ fastlane init

 

위 명령어를 입력하면 간단하게 초기화 할 수 있다.

 

What would you like to use fastlane for?

1. 📸  Automate screenshots

2. 👩‍✈️  Automate beta distribution to TestFlight

3. 🚀  Automate App Store distribution

4. 🛠  Manual setup - manually setup your project to automate your tasks

?

 

초기화 실행시 위와 같이 용도에 따라 안내를 해주는데 나중에 수정할 수 있으니 어떤 것을 골라도 상관없다.

나는 4번으로 일단 선택했다.

 

--- ✅  Successfully generated fastlane configuration ---

 

위 메시지가 뜬 뒤 엔터 몇번 쳐주면 초기화가 완료된다.

 

3. Fastlane 설정

초기화가 끝나면 fastlane 폴더가 생성되고 그 안에 설정 파일들이 생성된다.

 

Appfile의 경우, 기본적인 앱 정보나 사용자 정보를 설정할 수 있고

Fastfile는 실제 어떤 작업을 하고 싶은지 작성을 할 수 있다.

나의 경우는 아래와 같이 작성 하였다.

 

default_platform(:ios)

platform :ios do
  desc "Description of what the lane does"
  lane :upload do
    # dev
    build_app(scheme: "(빌드할 스키마명)")
    upload_to_testflight(
      username: "(앱스토어 커넥트 ID)",
      team_id: "(앱스토어 팀 ID)",
      skip_waiting_for_build_processing: true
    )
    # staging
    build_app(scheme: "(빌드할 스키마명)")
    upload_to_testflight(
      username: "(앱스토어 커넥트 ID)",
      team_id: "(앱스토어 팀 ID)",
      skip_waiting_for_build_processing: true
    )
    # production
    build_app(scheme: "(빌드할 스키마명)")
    upload_to_testflight(
      username: "(앱스토어 커넥트 ID)",
      team_id: "(앱스토어 팀 ID)",
      skip_waiting_for_build_processing: true
    )

    # add actions here: https://docs.fastlane.tools/actions
  end
end

 

현재 진행중인 프로젝트는 3개의 스키마로 관리가 되어 있다. 해당 스키마를 순서대로 빌드하고 테스트 플라이트에 등록하도록 설정했다.

그 중 2개의 스키마는 다른 계정의 앱스토어 커넥트에 등록을 해야기 때문에 일일히 해당 정보 값을 입력했다. (username, team_id)

skip_waiting_for_build_processing 값은 테스트 플라이트 에 올라간 후 빌드가 처리 될 때까지 (등록이 될 때까지) 기다릴 것인지 여부인데, ture 값을 넣으면 기다리지 않고 바로 다음 명령을 수행한다.

4. Fastlane 실행

설정이 완료 되었다면,

$ fastlane upload

 

간단하게 실행된다. upload는 설정 파일에 해당 명령어 이름을 upload로 설정했기에 적절한 네이밍을 한 뒤 사용하면 된다.

작업이 완료되면 Appstore Connect에 잘 올라갔는지 확인하면 된다.

5. 기타

현재 2019.04.10 기준,

skip_waiting_for_build_processing = false 값을 넣으면 에러가 발생하는데, 확인해보니 조만간 수정 버전이 배포될 예정이다.

 

앱스토어에 올라간 버전이 있다면, 그 버전보다 위 버전을 설정한 뒤 실행해야 에러가 발생하지 않는다.

예를 들어 앱 스토어에 1.1.0 버전이 배포되어 있다면, 적어도 1.1.0 이상 (ex) 1.1.1) 버전으로 올려야 한다. (당연한 건가..)

 

참고로, https://docs.fastlane.tools 에서 더 작은 작업들을 알아볼 수 있다.

 

fastlane docs

fastlane fastlane is the easiest way to automate beta deployments and releases for your iOS and Android apps. 🚀 It handles all tedious tasks, like generating screenshots, dealing with code signing, and releasing your application. You can start by creating

docs.fastlane.tools

반응형