Fastlane: 크루즈 컨트롤의 iOS 자동화

게시 됨: 2022-03-11

iOS용 소프트웨어를 만드는 것은 단순히 Objective-C 또는 Swift 코드를 작성하는 것 이상입니다. 여기에는 UIKit 작동 방식, 인증서 생성 방식, 앱을 스토어에 게시하는 방법, 앱 리뷰를 처리하는 방법 등이 포함됩니다. 이 영원한 작업 목록이 지겹다면 워크플로의 일부 자동화가 바로 당신에게 필요한 것입니다.

각 배포에서 몇 분 또는 몇 시간을 절약하도록 설계된 도구인 Fastlane을 만나보십시오.

Fastlane iOS를 통한 배달 자동화

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. 배포 서명 인증서를 만듭니다.
  2. 임시 프로비저닝 프로필을 만듭니다(#1의 인증서에 첨부됨).
  3. #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. 임시 프로비저닝 프로필을 만듭니다(#1의 인증서에 첨부됨).
  3. #2의 프로비저닝 프로필을 사용하도록 앱을 설정합니다.
  4. 앱을 보관하십시오.
  5. 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로 보내고 crashlyticspilot 으로 변경하기만 하면 된다는 것입니다.

또는 다음과 같이 별도의 레인을 만들 수 있습니다.

 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 프로젝트를 위해 자동화할 수 있는 것에 대한 영감을 찾고 있다면 작업 목록을 확인하세요.