Fastlane: 크루즈 컨트롤의 iOS 자동화
게시 됨: 2022-03-11iOS용 소프트웨어를 만드는 것은 단순히 Objective-C 또는 Swift 코드를 작성하는 것 이상입니다. 여기에는 UIKit 작동 방식, 인증서 생성 방식, 앱을 스토어에 게시하는 방법, 앱 리뷰를 처리하는 방법 등이 포함됩니다. 이 영원한 작업 목록이 지겹다면 워크플로의 일부 자동화가 바로 당신에게 필요한 것입니다.
각 배포에서 몇 분 또는 몇 시간을 절약하도록 설계된 도구인 Fastlane을 만나보십시오.
Fastlane은 베타 빌드를 Crashlytics, TestFlight, App Store 등에 보내는 프로세스를 자동화하는 데 도움이 됩니다.
이 기사에서는 Fastlane을 사용하여 iOS 앱 배포 워크플로를 자동화하는 방법을 배웁니다. 이 도구의 iOS 측면에 중점을 둘 것이지만 Fastlane은 Android 개발 자동화에도 똑같이 잘 작동합니다.
Fastlane 시작하기
가장 쉬운 방법에 따라 선택할 수 있는 몇 가지 설치 방법이 있습니다. Homebrew를 설치 및 구성한 경우 Fastlane을 설치하려면 다음 명령 하나만 사용하면 됩니다.
brew cask install fastlane
그렇지 않으면 Fastlane은 Ruby 기반 도구이므로 gem
은 항상 옵션입니다.
sudo gem install fastlane -NV
또는 언제든지 공식 웹사이트에서 Fastlane을 다운로드할 수 있습니다.
Fastlane을 설치했으면 프로젝트 디렉토리에서 fastlane init
를 실행하고 지침을 따르십시오.
배포 자동화
Fastlane이 설치되면 이제 Ruby 스크립트를 작성하여 원하는 위치에 배포하기 위해 수행해야 하는 작업을 단계별로 표시할 수 있습니다. 이것은 작업, 도구 및 차선을 사용하여 수행됩니다.
Fastlane 도구, 작업 및 플러그인
Fastlane은 핵심에 앱을 빌드하는 데 도움이 되는 도구를 사용하여 작동합니다. 빌드 도구 외에도 Crashlytics, HockeyApp, TestFlight 및 타사에서 만들고 게시하는 더 많은 플러그인과 같은 서비스와의 170개 이상의 내장 통합이 있어 다른 서비스 등에 연결할 수 있습니다.
그 핵심에는 다양한 작업을 수행할 수 있는 주요 도구가 있습니다. 자동화된 스크린샷을 찍는 것부터 프레임을 지정하고 스토어에 업로드하는 것까지 앱을 빌드하기 전에 모든 테스트를 자동으로 실행할 수 있습니다.
작업은 Fastlane의 핵심 도구이며 플러그인은 Fastlane 설정에 타사 작업을 추가하는 방법입니다.
차선
Fastlane은 기본적으로 작업 또는 플러그인 목록을 순차적으로 그룹화하는 레인을 사용하므로 매번 동일한 결과를 얻을 수 있습니다.
레인을 실행할 때 각 작업은 환경 변수를 내보내고 다음 작업은 이러한 변수를 자동으로 가져와 프로세스를 계속 진행합니다. 예를 들어, gym
작업을 사용하면 .ipa
파일의 경로가 생성되고 crashlytics
를 사용하면 이 .ipa
위치에 액세스하여 이 파일을 베타 서비스 배포 시스템에 업로드합니다.
iOS에서 Fastlane 사용
당신은 아주 간단한 앱을 원하는 새로운 Toptal 클라이언트로 시작하고 있습니다. 디자인은 이미 완료되었으며 앱은 몇 주 안에 코딩할 수 있습니다. 다음 단계는 코딩을 시작하는 것입니다. 반복 프로세스 중에 클라이언트에게 2주마다 베타 앱을 보내어 진행 상황을 확인하고 작동 방식에 대한 피드백을 제공할 수 있습니다.
클라이언트에게 베타 버전을 보낼 때마다 앱 서명, 베타 서비스에 업로드, 새 버전 추가 등의 기본 체크리스트를 거치게 됩니다. 여기에 해야 할 일을 추가하세요. 한 번(매년): 인증서 서명, 푸시 알림 인증서 서명(필요한 경우) 등.
Fastlane을 사용하면 이 모든 것이 이제 자동으로 수행됩니다!
Crashlytics 베타로 보내기
예를 들어 Crashlytics 베타를 통해 앱을 공유하려면 서명 인증서와 프로비저닝 프로필을 생성해야 합니다.
Fastlane에는 설정하면 다음을 수행하는 match
라는 작업이 있습니다.
- 배포 서명 인증서를 만듭니다.
- 임시 프로비저닝 프로필을 만듭니다(#1의 인증서에 첨부됨).
- #1 및 #2의 인증서와 프로필을 OpenSSL을 사용하여 암호화된 Git 리포지토리에 저장합니다.
설정은 간단합니다.
먼저 fastlane match init
를 실행하여 시작하고 Git 리포지토리를 설정한 후 fastlane match adhoc
를 호출하여 임시 프로비저닝 프로필을 가져 fastlane match appstore
를 실행하여 App Store 인증서를 가져옵니다.
match
를 사용하면 더 이상 인증서를 취소할 필요 없이 컴퓨터 간에, 그리고 팀원 간에 인증서를 매우 쉽게 동기화할 수 있고 얻을 수 있는 이점이 있습니다. fastlane match appstore
를 실행하기만 하면 몇 초 만에 인증서를 받을 수 있습니다.
이제 필요한 인증서와 프로비저닝이 있으므로 Crashlytics에 출시하겠습니다.
Fabric의 Crashlytics에 앱을 제출하는 일반적인 워크플로에는 다음 단계가 포함됩니다.

- 배포 서명 인증서를 만듭니다.
- 임시 프로비저닝 프로필을 만듭니다(#1의 인증서에 첨부됨).
- #2의 프로비저닝 프로필을 사용하도록 앱을 설정합니다.
- 앱을 보관하십시오.
- Fabric을 열고 단계에 따라 앱을 베타 테스터에게 보냅니다.
Fastlane은 잡일을 다음과 같이 대체합니다.
platform :ios do lane :beta do match(type: “adhoc”) gym crashlytics end end
이제 터미널에서 fastlane beta
를 실행하면 이 스크립트가 실행됩니다.
이것은 먼저 서명 인증서 및 프로비저닝 프로필 생성 및 업데이트를 처리하는 작업 match
를 호출한 다음 이전에 생성된 동일한 인증서와 프로필을 사용하여 앱을 빌드 및 패키지하는 작업 gym
을 호출하고 마지막으로 crashlytics
를 호출합니다. 이 서명된 .ipa
를 가져와 Crashlytics 서비스에 업로드합니다.
이러한 모든 단계는 항상 동일한 순서로 호출되어 결과 파일을 보다 예측 가능하게 만들고 오류를 줄입니다.
MacBook-Pro:TestProject user$ fastlane beta +------+-------------------------------------+-------------+ | fastlane summary | +------+-------------------------------------+-------------+ | Step | Action | Time (in s) | +------+-------------------------------------+-------------+ | 1 | Verifying required fastlane version | 0 | | 2 | match | 57 | | 3 | gym | 592 | | 4 | crashlytics | 195 | +------+-------------------------------------+-------------+ [20:25:13]: fastlane.tools just saved you 14 minutes!
이것이 Fastlane을 실행하여 앱을 Crashlytics로 보내는 방법에 대한 기본 설정이었습니다. 또 무엇을 자동화할 수 있습니까?
빌드 버전 증가
예를 들어 베타를 보낼 때마다 빌드 버전 번호를 늘리도록 설정할 수 있습니다.
이는 터미널에서 fastlane run increment_build_number
로 호출하거나 베타 레인에서 인라인으로 사용할 수 있는 increment_build_number
라는 작업을 사용하여 달성할 수 있습니다.
platform :ios do lane :beta do increment_build_number match(type: “adhoc”) gym crashlytics end end
축하합니다! 이제 빌드 버전 번호도 증가시키는 자동화된 배포 스크립트가 있습니다. 유일한 주의 사항은 이 레인을 호출하면 프로젝트에서 파일(또는 적어도 빌드 번호를 포함하는 파일)이 변경된다는 것입니다.
어쨌든 변경 사항을 저장소에 커밋할 계획이라면 그에 대한 작업이 있습니다: commit_version_bump
. 이 작업은 새 버전 번호로 파일을 커밋합니다.
platform :ios do lane :beta do increment_build_number match(type: "adhoc") gym crashlytics commit_version_bump( xcodeproj:"myProject.xcodeproj", ) end end
이렇게 하면 "Version Bump to 27"과 같은 커밋 메시지가 포함된 파일이 커밋됩니다.
Crashlytics에서 TestFlight로
글쎄요, 여기까지 왔다면 아주 짧은 시간에 Crashlytics에 자동화된 배포를 할 수 있어 장기적으로 수많은 시간을 절약할 수 있습니다. 가장 좋은 점은 앱을 대신 TestFlight로 보내고 crashlytics
를 pilot
으로 변경하기만 하면 된다는 것입니다.
또는 다음과 같이 별도의 레인을 만들 수 있습니다.
platform :ios do lane :beta-testflight do increment_build_number match(type: "adhoc") gym pilot commit_version_bump( xcodeproj:"myProject.xcodeproj", ) end end
간단해진 iOS 자동화
Fastlane은 간단하고 사용하기 쉽습니다. 그러나 이것은 사소한 일을 하지 않고 결국 낭비하게 될 시간을 절약함으로써 일반 iOS 개발 워크플로에 놀라운 가치를 제공합니다.
Fastlane에 대한 이 소개가 유용하기를 바랍니다. 공식 문서를 확인하여 Fastlane에 대해 자세히 알아볼 수 있습니다. 특히 현재 및 다음 iOS 프로젝트를 위해 자동화할 수 있는 것에 대한 영감을 찾고 있다면 작업 목록을 확인하세요.