チュートリアル: GitLab Mobile DevOpsでiOSアプリをビルドする
このチュートリアルでは、GitLab CI/CDを使用して、iOSモバイルアプリをビルドし、認証情報で署名し、アプリストアに配布するパイプラインを作成します。
モバイルDevOpsを設定するには:
はじめる前
このチュートリアルを開始する前に、以下を確認してください:
- CI/CDパイプラインへのアクセス権を持つGitLabアカウント
- GitLabリポジトリにあるモバイルアプリのコード
- Appleデベロッパーアカウント
fastlaneがローカルにインストールされている
ビルド環境をセットアップする
GitLabホストされたRunnerを使用するか、ビルド環境を完全に制御するために自己管理Runnerをセットアップします。
.gitlab-ci.ymlファイルをリポジトリのルートに作成します。サポートされているmacOSイメージを追加して、macOS GitLabホストされたRunner (ベータ) でジョブを実行します:
test: image: macos-14-xcode-15 stage: test script: - fastlane test tags: - saas-macos-medium-m1
fastlaneでコード署名を構成する
iOSのコード署名をセットアップするには、fastlaneを使用して署名付き証明書をGitLabにアップロードします:
fastlaneを初期化します:
fastlane init設定で
Matchfileを生成します:fastlane match initAppleデベロッパーポータルで証明書とプロファイルを生成し、それらのファイルをGitLabにアップロードします:
PRIVATE_TOKEN=YOUR-TOKEN bundle exec fastlane match developmentオプション。すでにプロジェクトの署名証明書とプロビジョニングプロファイルを作成している場合は、
fastlane match importを使用して既存のファイルをGitLabに読み込むます:PRIVATE_TOKEN=YOUR-TOKEN bundle exec fastlane match import
ファイルのパスを入力するように求められます。詳細を入力すると、ファイルがアップロードされ、プロジェクトのCI/CD設定に表示されます。インポート中にgit_urlを求められた場合は、空白のままにしてEnterキーを押しても安全です。
以下は、この構成のサンプルfastlane/Fastfileファイルと.gitlab-ci.ymlファイルです:
fastlane/Fastfile:default_platform(:ios) platform :ios do desc "Build and sign the application for development" lane :build do setup_ci match(type: 'development', readonly: is_ci) build_app( project: "ios demo.xcodeproj", scheme: "ios demo", configuration: "Debug", export_method: "development" ) end end.gitlab-ci.yml:build_ios: image: macos-12-xcode-14 stage: build script: - fastlane build tags: - saas-macos-medium-m1
Apple Storeのインテグレーションとfastlaneでアプリ配布をセットアップする
署名付きのビルドは、モバイルDevOps配布インテグレーションを使用してApple App Storeにアップロードできます。
前提要件:
- Appleデベロッパープログラムに登録されたApple IDが必要です。
- Apple App Store Connectポータルで、プロジェクトの新しいプライベートキーを生成する必要があります。
Apple Storeのインテグレーションとfastlaneを使用してiOSディストリビューションを作成するには:
- App Store Connect APIのAPIキーを生成します。Apple App Store Connectポータルで、プロジェクトの新しいプライベートキーを生成します。
- Apple App Store Connectのインテグレーションを有効にします:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > インテグレーションを選択します。
- Apple App Store Connectを選択します。
- インテグレーションを有効にするで、有効チェックボックスをオンにします。
- Apple App Store Connectの構成情報を入力してください:
- Issuer ID: Apple App Store Connect発行者ID。
- Key ID: 生成されたプライベートキーのキーID。
- 秘密キー: 生成されたプライベートキー。このキーは一度しかダウンロードできません。
- 保護ブランチと保護タグのみ: 保護ブランチとタグ付けでのみ変数を設定できるようにします。
- 変更を保存を選択します。
- リリースステップをパイプラインおよびfastlane設定に追加します。
以下はサンプルのfastlane/Fastfileです:
default_platform(:ios)
platform :ios do
desc "Build and sign the application for distribution, upload to TestFlight"
lane :beta do
setup_ci
match(type: 'appstore', readonly: is_ci)
app_store_connect_api_key
increment_build_number(
build_number: latest_testflight_build_number(initial_build_number: 1) + 1,
xcodeproj: "ios demo.xcodeproj"
)
build_app(
project: "ios demo.xcodeproj",
scheme: "ios demo",
configuration: "Release",
export_method: "app-store"
)
upload_to_testflight
end
end以下はサンプルの.gitlab-ci.ymlです:
beta_ios:
image: macos-12-xcode-14
stage: beta
script:
- fastlane betaおつかれさまでした。これで、アプリは自動ビルド、署名、配布用にセットアップされました。最初のパイプラインをトリガーするために、マージリクエストを作成してみてください。
サンプルプロジェクト
ビルド、署名、およびモバイルアプリをリリースするように構成されたパイプラインを備えた、サンプルモバイルDevOpsプロジェクトは、以下で利用できます:
- Android
- Flutter
- iOS
モバイルDevOpsデモプロジェクトグループのすべてのプロジェクトを表示します。