- MacOSで利用可能なマシンタイプ
- 対応MacOSイメージ
- MacOSのイメージアップデートポリシー
.gitlab-ci.yml
ファイルの例- fastlaneによるiOSプロジェクトのコード署名
- Homebrewの最適化
- Cocoapodsの最適化
- 既知のイシューと使用上の制約
MacOSのSaaSランナー(PREMIUM SAAS BETA)
MacOS上のSaaS Runnerは、オープンソースプログラムおよびPremiumプランとUltimateプランのお客様向けのベータ版です。
SaaS Runner on macOSは、GitLab SaaSCI/CDとインテグレーションされたオンデマンドのmacOSビルド環境を提供します。これらの Runner を使用して、Apple エコシステム(macOS、iOS、watchOS、tvOS)向けのアプリをビルド、テスト、デプロイします。GitLabのシングルDevOpsプラットフォームのすべての機能を活用でき、ビルド環境の管理やオペレーションは不要です。当社のモバイルDevOpsソリューションは、iOS向けモバイルアプリケーションのビルドとデプロイに関する機能、ドキュメント、ガイダンスを提供します。
私たちはMacOS上のSaaS Runnerを一般的に利用できるようにするために反復を続けたいと考えています。関連エピックで、この目標に向けた私たちの作業を追うことができます。
MacOSで利用可能なマシンタイプ
GitLab SaaSはAppleシリコン(M1)チップ上のMacOSビルドマシンを提供します。Intel x86-64 ランナーは Apple シリコンに取って代わられました。x86-64ターゲット向けにビルドするには、Rosetta 2を使ってIntel x86-64ビルド環境をエミュレートしてください。
ランナータグ | vCPUS | メモリ | ストレージ |
---|---|---|---|
saas-macos-medium-m1 | 4 | 8 GB | 25 GB |
対応MacOSイメージ
Linux上のGitLab SaaSランナーではどのようなDockerイメージでも実行できますが、GitLab SaaSではmacOS用のVMイメージのセットを提供しています。
.gitlab-ci.yml
ファイルで指定した以下のイメージのいずれかでビルドを実行できます。
各イメージは、特定のバージョンの MacOS と Xcode を実行します。
VMイメージ | ステータス |
---|---|
macos-12-xcode-13 | GA |
macos-12-xcode-14 | GA |
macos-13-xcode-14 | Beta |
MacOSのイメージアップデートポリシー
macOSとXcodeは1年ごとにリリースされ、その間にGitLabは同期してバージョンを増やします。GitLabは通常、複数のバージョンのプリインストールツールをサポートしています。詳細については、プリインストールされているソフトウェアの完全なリストを参照してください。
GitLabは、異なるアップデートパターンに従うstable
とlatest
macOSイメージを提供します:
-
安定したイメージ:安定版イメージ:
stable
イメージとインストールされたコンポーネントはリリースごとに更新されます。:latest
のプレフィックスがないイメージは安定したイメージとみなされます。 -
最新イメージ:
latest
イメージは通常毎週更新され、イメージ名に:latest
という接頭辞を付けます。このイメージを使うことで、latest
より定期的にコンポーネントが更新され、Homebrew や asdf の更新時間が短くlatest
なります。latest
イメージはlatest
stable
イメージにコンポーネントをリリースする前に、ソフトウェアコンポーネントをテストするために使用されます。定義上、latest
イメージは常にベータlatest
です。latest
イメージはlatest
利用できません。
イメージのリリースプロセス
Appleが新しいバージョンのmacOSをリリースすると、GitLabは次のリリースでそのOSをベースにしたstable
とlatest
イメージの両方をリリースします。どちらのイメージもベータ版です。
macOSへの最初のパッチがリリースされると、stable
イメージは一般利用可能になります(GA)。一度にサポートされる GA イメージは 2 つだけなので、以前の OS バージョンは非推奨となり、サポートされるイメージのライフサイクルに従って3 ヶ月後に削除されます。
.gitlab-ci.yml
ファイルの例
次のサンプル.gitlab-ci.yml
ファイルは、MacOS 上で SaaS Runner の使用を開始する方法を示しています:
.macos_saas_runners:
tags:
- saas-macos-medium-m1
image: macos-12-xcode-14
before_script:
- echo "started by ${GITLAB_USER_NAME}"
build:
extends:
- .macos_saas_runners
stage: build
script:
- echo "running scripts in the build job"
test:
extends:
- .macos_saas_runners
stage: test
script:
- echo "running scripts in the test job"
fastlaneによるiOSプロジェクトのコード署名
GitLabをAppleのサービスとインテグレーションしたり、デバイスにインストールしたり、Apple App Storeにデプロイしたりする前に、アプリケーションにコード署名をする必要があります。
runner on macOSの各VMイメージには、モバイルアプリのデプロイを簡素化することを目的としたオープンソースのソリューションであるfastlaneが含まれています。
アプリケーションにコード署名を設定する方法については、Mobile DevOpsドキュメントの説明を参照してください。
関連トピック
Homebrewの最適化
デフォルトでは、Homebrewはオペレーション開始時にアップデートの有無を確認します。HomebrewのリリースサイクルはGitLabのMacOSイメージのリリースサイクルよりも頻繁かもしれません。このリリースサイクルの違いにより、Homebrew がアップデートを行う間、brew
を呼び出すステップの完了に余計な時間がかかることがあります。
Homebrewの意図しないアップデートによるビルド時間を短縮するには、.gitlab-ci.yml
でHOMEBREW_NO_AUTO_UPDATE
変数を設定してください:
variables:
HOMEBREW_NO_AUTO_UPDATE: 1
Cocoapodsの最適化
プロジェクトでCocoapodsを使用する場合、CIのパフォーマンスを向上させるために以下の最適化を考慮する必要があります。
ココアポッズCDN
プロジェクトリポジトリ全体をクローンする代わりに、コンテンツデリバリネットワーク(CDN) アクセスを使ってCDNからパッケージをダウンロードすることができます。CDNアクセスはCocoapods 1.8以降で利用可能で、MacOS上のすべてのGitLab SaaS Runnerでサポートされています。
CDNアクセスを有効にするには、Podfileが:
source 'https://cdn.cocoapods.org/'
GitLabキャッシングを使う
GitLab の Cocoapods パッケージでキャッシングを使用すると、ポッドが変更されたときだけpod install
を実行し、ビルドのパフォーマンスを向上させることができます。
プロジェクトにキャッシュを設定するには、以下の手順に従います:
-
.gitlab-ci.yml
ファイルにcache
の設定を追加します:cache: key: files: - Podfile.lock paths: - Pods
-
cocoapods-check
プラグインをプロジェクトに追加します。 -
pod install
を呼び出す前にインストールされている依存関係をチェックするようにジョブスクリプトを更新します:bundle exec pod check || bundle exec pod install
ソース管理でポッドをインクルードします。
ソース管理にポッドディレクトリを含めることもできます。これにより、CIジョブの一部としてポッドをインストールする必要はなくなりますが、プロジェクトのリポジトリ全体のサイズが大きくなります。
既知のイシューと使用上の制約
- VMイメージにジョブに必要な特定のソフトウェア・バージョンが含まれていない場合、必要なソフトウェアをフェッチしてインストールする必要があります。そのため、ジョブの実行時間が長くなります。
- 独自のOSイメージを持ち込むことはできません。
- ユーザー
gitlab
のキーチェーンは公開されていません。代わりにキーチェーンを作成する必要があります。