Fastlane:クルーズコントロールでのiOS自動化
公開: 2022-03-11iOS用のソフトウェアを作成することは、Objective-CまたはSwiftコードを作成することだけではありません。これには、UIKitの動作、証明書の作成方法、ストアへのアプリの公開方法、アプリレビューの処理方法などを知ることが含まれます。 この永遠のタスクリストに飽き飽きしている場合は、ワークフローの自動化がまさに必要なものです。
Fastlaneをご覧ください。これは、各デプロイで数分または数時間も節約できるように設計されたツールです。
Fastlaneは、ベータビルドをCrashlytics、TestFlight、AppStoreなどに送信するプロセスを自動化するのに役立ちます。
この記事では、Fastlaneを使用してiOSアプリのデプロイワークフローを自動化する方法を学習します。 このツールのiOSの側面に焦点を当てますが、FastlaneはAndroid開発の自動化にも同様に機能します。
Fastlane入門
最も簡単な方法に応じて、いくつかのインストール方法を選択できます。 Homebrewをインストールして構成している場合、Fastlaneのインストールには次の1つのコマンドが必要です。
brew cask install fastlane
それ以外の場合、FastlaneはRubyベースのツールであるため、 gem
は常にオプションです。
sudo gem install fastlane -NV
または、公式WebサイトからいつでもFastlaneをダウンロードできます。
Fastlaneをインストールしたら、プロジェクトディレクトリでfastlane init
を実行し、指示に従います。
展開の自動化
Fastlaneをインストールすると、Rubyスクリプトを記述して、必要な場所にデプロイメントを配置するために必要なことを段階的に示すことができるようになります。 これは、アクション、ツール、およびレーンを使用して行われます。
Fastlaneツール、アクション、およびプラグイン
Fastlaneは、アプリの構築に役立つツールをコアに持つことで機能します。 ビルドツールに加えて、Crashlytics、HockeyApp、TestFlightなどのサービスとの170以上の組み込み統合があり、サードパーティが作成および公開するプラグインにより、他のサービスなどに接続できます。
基本的に、さまざまなタスクを実行できる主要なツールを利用できます。自動スクリーンショットの撮影からフレーミング、ストアへのアップロードまで、アプリをビルドする前にすべてのテストを自動的に実行できます。
アクションはFastlaneのコアツールであり、プラグインはサードパーティのアクションをFastlaneセットアップに追加する方法です。
レーン
Fastlaneは、基本的にアクションまたはプラグインのリストを順番にグループ化するレーンを使用するため、毎回同じ結果を得ることができます。
レーンを実行すると、各アクションは環境変数をエクスポートし、次のアクションはこれらの変数を自動的に取得してプロセスを続行します。 たとえば、 gym
アクションを使用すると、 .ipa
ファイルのパスが生成され、 crashlytics
を使用すると、この.ipa
の場所にアクセスして、このファイルをベータサービス配布システムにアップロードします。
iOSでFastlaneを使用する
あなたは非常にシンプルなアプリを望んでいる新しいToptalクライアントから始めています。 設計はすでに完了しており、アプリは数週間でコーディングできます。 次のステップはコーディングを開始することです。反復プロセス中に、数週間ごとにベータ版アプリをクライアントに送信して、クライアントが進捗状況を確認し、状況がどのように機能しているかについてフィードバックを提供できるようにします。
ベータ版をクライアントに送信するたびに、基本的なチェックリストを確認します。アプリへの署名、ベータサービスへのアップロード、新しいバージョンの追加などです。これに、必要な作業を追加します。 1回(毎年):証明書への署名、プッシュ通知証明書への署名(必要な場合)など。
Fastlaneを使用すると、これらすべてを自動的に実行できるようになります。
Crashlyticsベータ版に送信する
たとえば、Crashlytics Betaを介してアプリを共有するには、署名証明書とプロビジョニングプロファイルを作成する必要があります。
Fastlaneには、 match
というアクションがあり、設定すると次のようになります。
- 配布署名証明書を作成します。
- アドホックプロビジョニングプロファイルを作成します(#1の証明書に添付されています)。
- 証明書とプロファイルを#1と#2からGitリポジトリに保存し、OpenSSLを使用して暗号化します。
セットアップは簡単です。
まず、 fastlane match init
を実行して開始し、Gitリポジトリを設定したら、 fastlane match adhoc
を呼び出してアドホックプロビジョニングプロファイルを取得するか、 fastlane match appstore
を実行してAppStore証明書を取得します。
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に送信する方法の基本的な設定でした。 他に何を自動化できますか?
ビルドバージョンのインクリメント
たとえば、ベータ版を送信するたびに、ビルドバージョン番号を増やしたいと設定できます。
これは、 increment_build_number
と呼ばれるアクションを使用して実現できます。このアクションは、 fastlane run 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
これにより、「VersionBumpto27」のようなコミットメッセージでファイルがコミットされます。
TestFlightへのCrashlytics
さて、ここまで進んだら、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プロジェクトで自動化できるものについてのインスピレーションを探している場合は、アクションのリストについては、公式ドキュメントを確認してください。