GitLab with fastlaneがiOSアプリをApp Storeで収集、署名、公開する方法。
最近、GitLabとfastlaneを 使用してAndroidアプリケーションを迅速にビルドおよび実行する方法についての投稿を行いました 。 ここでは、iOSアプリケーションをビルドして実行し、TestFlightに公開する方法を説明します。 iPad ProでGitLab Web IDEを使用してどのくらいクールに変更を行っているかを確認し、ビルドして、開発した同じiPad Proでアプリケーションのテストバージョンの更新を取得します。
ここでは、ビデオを録画したSwiftの簡単なiOSアプリを取り上げます。
Apple Storeの構成に関するいくつかの言葉
App Storeのアプリ、配布証明書、およびすべてをバインドするための初期化プロファイルが必要になります。
ここで最も難しいことは、App Storeで署名権を構成することです。 あなた自身でそれを理解できることを願っています。 あなたが初心者の場合、正しい方向を示しますが、ここではApple証明書の管理の複雑さについては説明しません。それらは常に変化しています。 この投稿はあなたが始めるのに役立ちます。
私のアプリケーション
.xcodebuild
構成のIDを.xcodebuild
するには、App Store Connectにアプリが必要です。 プロファイルとアプリケーションIDは、コードアセンブリ、価格設定、可用性、およびテストアプリケーションをユーザーに配布するためのTestFlight構成を組み合わせます。 公開テストは行わないでください。小規模なグループで簡単なセットアップができ、Appleからの追加の許可が必要ない場合は、プライベートで十分です。
初期化プロファイル
アプリケーションのセットアップに加えて、Apple Developerコンソールの[Certificates、Identifiers&Profiles]セクションで作成されたiOS配布キーと開発キーが必要です。 これらの証明書はすべて、初期化プロファイルで組み合わせることができます。
認証ユーザーには証明書を作成する機能が必要です 。そうしないと、 証明書とため息のステップでエラーが表示されます 。
その他のオプション
この簡単な方法に加えて、証明書とプロファイルを構成する他の方法があります。 したがって、異なる方法で作業する場合は、再構築する必要があります。 最も重要なのは、必要なファイルを指す.xcodebuild
構成が必要であり、ランナーが動作する名前のユーザーがビルドコンピューターでキーチェーンを使用できるようにすることです。 デジタル署名にはfastlaneを使用します。問題がある場合、または詳細を知りたい場合は、デジタル署名に関する詳細なドキュメントをご覧ください。
この例では、 cert and sighアプローチを使用していますが、実際のアプリケーションでは、おそらく一致の方が優れています。
GitLabとfastlaneの準備
CIランナーの準備
このすべてのデータを収集したら、MacOSデバイスでのGitLabランナーの構成に進みます。 残念ながら、iOSアプリの作成はMacOSでのみ現実的です。 しかし、状況は変化する可能性があり、この分野での進展を待っている場合は、 xcbuildやisignなどのプロジェクト、および内部タスクgitlab-ce#57576に注目してください 。
ランナーのセットアップは非常に簡単です。 macOSでGitLab Runnerをセットアップするための現在の指示に従ってください。
ご注意 ランナーはshell
実行可能ファイルを使用する必要があります。 これは、コンテナを介さずに、ユーザーとして直接動作するためにmacOSでiOSを構築するために必要です。 shell
を使用する場合、アセンブリおよびテストはランナーユーザーの代わりに、アセンブリホストで実行されます。 コンテナほど安全ではないので、何も見逃さないようにセキュリティ文書をスクロールするのが最善です。
sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64 sudo chmod +x /usr/local/bin/gitlab-runner cd ~ gitlab-runner install gitlab-runner start
Xcodeが構築する必要があるキーにアクセスできるように、このホストでAppleキーチェーンを構成する必要があります。 これをテストする最も簡単な方法は、ビルドを開始するユーザーとしてログインし、手動でビルドを試みることです。 システムがキーチェーンへのアクセスを要求する場合は、CIの動作を常に許可するを選択します。 パイプラインの最初のペアを入力して観察する価値がある場合があります-一連のキーを要求しないようにするためです。 問題は、Appleが自動モードでの作業を容易にすることではないが、修正するとすべてがうまくいくことです。
fastlane init
プロジェクトでfastlaneを使用するには、 fastlane init
実行しfastlane init
。 自動CIパイプラインを介した高速で予測可能な起動が必要なため、特にGemfileセクションのfastlaneのインストールと起動の手順に従ってください 。
プロジェクトディレクトリで、次のコマンドを実行します。
xcode-select --install sudo gem install fastlane -NV # Alternatively using Homebrew # brew cask install fastlane fastlane init
fastlaneは基本構成を要求し、プロジェクトに3つのファイルを持つfastlaneフォルダーを作成します。
1. fastlane/Appfile
ここで複雑なことはありません。 Apple IDとアプリケーションIDが正しいことを確認してください。
app_identifier("com.vontrance.flappybird") # The bundle identifier of your app apple_id("your-email@your-domain.com") # Your Apple email address
2. fastlane/Fastfile
Fastfile
はビルド手順を定義します。 多くの組み込み高速レーン機能を使用しているため、ここでもすべてが明確になっています。 証明書を受け取り、ビルドして、TestFlightに読み込む1行を作成します。 必要に応じて、このプロセスを異なるタスクに分割できます。 これらのすべての操作( get_certificates
、 get_provisioning_profile
、 gym
およびupload_to_testflight
)はすでにfastlaneに含まれています。
get_certificates
およびget_provisioning_profile
は、 証明書とため息署名のアプローチに関連しています。 マッチなどを使用している場合は、変更を加えます。
default_platform(:ios) platform :ios do desc "Build the application" lane :flappybuild do get_certificates get_provisioning_profile gym upload_to_testflight end end
3. fastlane/Gymfile
これはオプションのファイルですが、デフォルトの出力ディレクトリを変更して現在のフォルダーに出力を配置するために手動で作成しました。 これにより、CIが簡素化されます。 興味がある場合は、 ドキュメントの gym
とそのパラメーターについてお読みください。
https://docs.fastlane.tools/actions/gym/
.gitlab-ci.yml
したがって、プロジェクトのCIランナーがあり、パイプラインをテストする準備ができています。 .gitlab-ci.yml
ものを見てみましょう:
stages: - build variables: LC_ALL: "en_US.UTF-8" LANG: "en_US.UTF-8" GIT_STRATEGY: clone build: stage: build script: - bundle install - bundle exec fastlane flappybuild artifacts: paths: - ./FlappyBird.ipa
すべてが素晴らしい! 必要に応じてfastlaneのUTF-8形式を設定し、 shell
実行可能ファイルでclone
戦略を使用して、各アセンブリのクリーンなワークスペースを確保し、上記のように、 flappybuild
fastlaneを呼び出します。 その結果、TestFlightの最後のアセンブリのアセンブリ、署名、および展開を取得します。
また、アーティファクトを取得し、アセンブリとともに保存します。 .ipa
形式は、シミュレータで実行されない署名付きARM実行可能ファイルであることに注意してください。 シミュレータの出力が必要な場合は、それを生成するアセンブリターゲットを追加して、アーティファクトへのパスに含めます。
その他の環境変数
すべてが機能する環境変数がいくつかあります。
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
およびFASTLANE_SESSION
App Storeでの認証とTestFlightへのアップロードには、fastlaneの認証が必要です。 これを行うには、CIで使用されるアプリケーションのパスワードを作成します。 詳細はこちら 。
2要素認証を使用している場合は、 FASTLANE_SESSION
変数を作成します(指示があります)。
FASTLANE_USER
およびFASTLANE_PASSWORD
certおよびため息が初期化プロファイルおよび証明書をオンデマンドで呼び出すためには、 FASTLANE_USER
およびFASTLANE_PASSWORD
変数を設定する必要があります。 詳細はこちら 。 別の署名方法を使用する場合、これは必要ありません。
結論として
私の簡単な例でそれがすべてどのように働くか見ることができます。
これがお役に立てば幸いで、GitLabプロジェクトでiOSビルドを使用するように促しました。 念のため、fastlaneのCIのヒントをいくつか紹介します。 CI_BUILD_ID
(インクリメンタルビルド用)を使用して、バージョンを自動的にインクリメントすることができます 。
もう1つのクールな高速レーン機能は、App Storeの自動スクリーンショットです。これは非常に簡単にセットアップできます。
コメントで経験を共有し、iOSアプリ開発のためにGitLabを改善するためのアイデアを共有してください。