관리 메뉴

김종권의 iOS 앱 개발 알아가기

[fastlane] 1. fastlane이란 본문

iOS 앱 배포와 출시

[fastlane] 1. fastlane이란

jake-kim 2020. 12. 3. 00:49

1. fastlane이란?

2. Bundler란? cocoapod 동기화 방법?

3. fastlane match (certificate, provisioning profile 정보를 git에 저장)

4. fastlane build_app (빌드, Firebase에 배포)

5. fastlane 앱 스토어에 배포 (App Store Connect)

6. fastlane register devices, 디바이스 정보(UDID, Name) Apple Developer 등록 방법 (register_devices)

*7. fastlane 총 정리 및 phase별 configuration 설정, 환경변수 설정

*8. fastlane Bitrise 이용한 자동 배포 구축 방법

 

* bundler를 이용하여 cocoapods사용 시 설명은 메인 프로젝트와 여러개의 프레임워크로 이루어진 .workspace프로젝트 대상으로 사용하고 있으므로 먼저 참고:  ios-development.tistory.com/217

cf) fastlane 환경 변수 (.env.default) 사용하여 가장 단순한 match 사용 방법

fastlane이란

  • ruby 기반 클라이언트 자동 빌드 오픈소스 라이브러리

iOS 배포 과정 (아래 작업을 fastlane하나로 CI / CD 가능)

  • info.plist에서 버전과 빌드 올리는 작업
  • 타겟이 여러 개인 경우, 모든 타겟이 버전과 빌드가 동일한지 체크
  • 빌드
  • 3인 이상의 개발자가 동시에 개발하는 경우, 1년에 한 번 씩 certificate, provisioning profile을 발급받고 공유
  • archive를 누른 후 끝날 때까지 대기
  • archive가 완료되면 배포 버튼 누르고, 배포가 될 때 까지 대기
  • 노티

fastlane 기능

  • match: certificate와 provisioning profile을 생성 및 유지, git 레포지토리에 저장하여 동기화
  • gym: iOS 어플리케이션을 빌드하고 사이닝
  • deliver: 스크린샷, metaData(앱스토어에 앱을 올릴 때 필요한 데이터) 및 앱 번들 관리, 앱스토에 있는 앱을 업로드

fastlane설치

*참고: docs.fastlane.tools/getting-started/ios/setup/#getting-started-with-fastlane-for-ios

  • Xcode 커맨드 라인 툴 설치
xcode-select --install
  • fastlane 추가
$ fastlane init

4번 선택
생성된 파일
위 fastlane폴더 안의 파일

  • Gemfile, Gemfile.lock: podfile과 podfile.lock이 있듯이, ruby의 번들이 gemfile에 적혀져있는 내용을 보고(버전관리) 실행하기 위함

Appfile 의미

  • fastlane은 Appfile에 기입된 내용을 보고 환경을 세팅한 후 Fastfile을 참고하여 특정 기능을 수행하도록 진행
  • 만약 fastfile에서 인증서를 갱신하는 코드가 있을 때, alpha, beta, release인지 알지 못하는데 밑의 default 번들 ID값으로 지정

fastfile에서 사용할 bundleID의 디폴트 설정

  • app_identifier() 부분에 bundle id를 배열로 다수 넣을 수 있지만, 다수를 넣으면 fastlane match 시 다수가 한꺼번에 실행되므로 지저분해지는 현상 발생
  • for_lane이라는 함수를 통해 fastfile과 동일한 이름을 가진 lane에 bundleID를 세팅할 수 있는 기능 존재

fastfile에서 build_beta,.. 등의 lane이 지정되었을때 bundleID설정

  • Appfile에 default bundle id, apple id, team id 정의
# default 번들 ID
app_identifier("com.jake.Kimp.alpha")

# Your Apple email address
apple_id("palatable7@naver.com")

# Developer Portal Team ID
team_id("SS7U83UJNK") 

fastfile의 의미

  • fastlane의 기능들을 lane으로 정의한 후 그 lane을 실행시키면 인증서 관리, firebase배포, appstore에 업로드하는 기능이 존재
Comments