iOS 개발 기록

[CI/CD] FastLane 본문

iOS/앱

[CI/CD] FastLane

택꽁이 2023. 2. 6. 13:29
728x90

Fastlane

Fastlane 설치

// homebrew를 통해 설치
brew install fastlane
// bundler(- fastlane 업데이트시 필요) 설치  
gen install bundler

Fastlane 설정

기본 설정

  • 설치하고자 하는 디렉토리로 넘어가 아래 fastlane 초기화 명령어 입력. 그럼 다음과 같은 목록이 뜬다. 나중에도 추가할 수 있어서 아무거나 눌러도 된다. 나는 4번을 눌러 기본 설정을 마쳤다.

fastlane init 

 

  • 설정을 마치면 다음과 같은 파일들이 생긴다.
Gemfile
Gemfile.lock
fastlane/Appfile
fastlane/Fastfile

GemfileGemfile.lock 파일은 fastlane의 버전을 관리하는 파일이라 크게 신경쓸 필요 없다. fastlane 폴더에 있는 파일이 앱 프로젝트와 애플 계정, lane 설정에 대한 내용을 담고 있기에 자주 사용할 파일이다.
4개의 파일은 팀원들과 공유하고 있는 것이 좋다. 따라서 .gitignore을 사용하더라도 4개의 파일은 무시하지 않는 것이 좋다.

Appstore 인증: Cert,sigh

Appstore에 앱을 업로드 할 때에 인증 과정이 필요한데 Fastlane에서는 크게 두 가지 방법을 지원한다.

  • Cert, Sigh
    소규모 개발에 유리한 설정. 뭔가 특별한 설정을 할 필요 없이 애플계정을 제대로 입력해뒀고, 인증서를 로컬 키체인에 입력해두면 알아서 인증해주는 방식이다.
  • Match
    대규모 팀일 때에 사용하는 인증방식. Match는 하나의 인증서를 Github private 저장소에 넣어두고 팀원들이 매번 저장소에서 인증서를 가져와 사용하는 방식이다. 인증서를 갱신할 때에 저장소의 인증서만 갈면 돼서 인증문제를 고민할 필요가 없다.

일단 Cert, Sigh 인증 방식만 적어보고, Match는 기회가 있다면 업데이트 할 것 .

Cert, Sigh 인증방식

  • fastlane/Appfile 에서 앱의 번들ID와 애플 ID를 작성한다.
// fastlane/Appfile
# app_identifier("[[\(앱의 BundleID)]]") # The bundle identifier of your app
# apple_id("[[\(애플 계정 ID)]]") # Your Apple Developer Portal username

# For more information about the Appfile, see:
#     https://docs.fastlane.tools/advanced/#appfile
  • 여러명에서 협업할 경우 fastlane 폴더 안에 .env 파일을 만들고, 애플 아이디를 환경변수 설정하고 환경 변수 파일을 .gitignore 처리 하자.
  • App password는 https://appleid.apple.com/account/manage에서 설정할 수 있다.
// .env 파일
APPLE_ID="\(애플 아이디)"
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD = "\(APP_PASSWORD) "

// fastlane/Appfile
# apple_id("[ENV["APPLE_ID"]") # Your Apple Developer Portal username

Fastfile 업로드 메소드 설정

  • 업로드 관련된 명령은 모두 fastlane/Fastfile에서 작성한다. Ruby로 작성하며, 해당 설정과 메소드는 Doc에서 확인하자
// fastlane/Appfile
desc "build app and upload to testflight"
    // fastlane을 통해 실행할 메소드의 이름 
  lane :beta do
        // cert, sigh 인증시 사용하는 메소드 
    get_certificates
    get_provisioning_profile
        // testflight의 빌드넘버 기준으로 프로젝트의 빌드넘버를 올려준다. 
    increment_build_number(
        build_number: latest_testflight_build_number + 1
    )
        // 앱 빌드 설정. Debug, Release 등 원하는 버전으로
    build_app(
      configuration: "Debug"
    )
        // testflight에 업로드
    upload_to_testflight
        // slack 채널에 결과를 업로드한다. 
    slack(
      message: "Testflight 배포에 성공했습니다!",
      slack_url: "https://hooks.slack.com/자신의 채널 훅스 링크"
    )
  end

참고

  • Doc

fastlane

  • 정리

iOS - 배포 자동화, Fastlane 시작부터 적용까지

Fastlane (4) - Upload Screenshots to the App Store

Todo

Fastlane 으로 iOS 빌드 과정을 손쉽게 자동화하자

[iOS] fastlane 이용한 배포 자동화 (match 편)

  • CI/CD

Slack으로 iOS 앱 배포하기

iOS 앱 배포 자동화를 위한 Fastlane 설치 및 구성 | DevSecOps 구축 컨설팅, 교육, 기술지원 서비스 제공

'iOS > ' 카테고리의 다른 글

[iOS] 성경필사 앱  (0) 2022.06.02
[iOS] D-day앱: 3일차  (0) 2022.05.20
[iOS] D-day앱 : 2일차  (1) 2022.05.12
[iOS] D-day 앱 : 1일차  (0) 2022.05.11
[iOS] D-day 앱  (0) 2022.05.11