3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SaaS runners on macOS で Xcodeビルドするときの証明書周りのセットアップ

Posted at

はじめに

Gitlab CI のビルドマシンとして Mac mini を使用していましたが、Gitlab のSaaS Runner でビルドできるということを聞いたので移行してみました
Mac mini でやっていた xcodebuild に加えていくつかセットアップが必要になったのでこちらを紹介したいと思います

gitlab-ci.yml

全体はこんな感じです


build-jop:
  tags: [shared-macos-amd64]
  image: macos-12-xcode-14
  stage: build
  variables:
    SECURE_FILES_DOWNLOAD_PATH: ./securefiles
  script:
    - curl --silent "https://gitlab.com/gitlab-org/incubation-engineering/mobile-devops/download-secure-files/-/raw/main/installer" | bas
    - security create-keychain -p "password" gitlab.keychain
    - security default-keychain -s gitlab.keychain
    - security set-keychain-settings -l gitlab.keychain
    - security unlock-keychain -p "password" gitlab.keychain
    - security import $SECURE_FILES_DOWNLOAD_PATH/"証明書.p12" -k gitlab.keychain -P "p12password" -A
    - security set-key-partition-list -S "apple:" -s -k password gitlab.keychain
    - uuid=$(grep UUID -A1 -a $SECURE_FILES_DOWNLOAD_PATH/dis.mobileprovision | grep -io "[-A-F0-9]\{36\}")
    - mkdir -p ~/Library/MobileDevice/"Provisioning Profiles"
    - cp $SECURE_FILES_DOWNLOAD_PATH/dis.mobileprovision ~/Library/MobileDevice/"Provisioning Profiles"/$uuid.mobileprovision
    - xcodebuild ...

スクリプト解説

1. セキュアファイルダウンロード

ビルド中に使用するファイルをセキュアファイルとして登録でき、以下のコマンドでインストールできます
セキュアファイルは ビルドに必要な証明書(.p12)や Provisioning Profile (.mobileprovision)などを置いておきます
ファイルの登録方法は以下の記事が参考になります
[GitLab CI/CD] macOS SaaS Runner と GitLab Mobile DevOps で iOSビルド実行環境の簡単セットアップ

    - curl --silent "https://gitlab.com/gitlab-org/incubation-engineering/mobile-devops/download-secure-files/-/raw/main/installer" | bas
2. 証明書をキーチェーンに登録

証明書を登録するためのキーチェーンを作成し、タイムアウトを終了までにしてからアンロックします。
デフォルトのタイムアウトは300秒ですが、これだとRun ScriptPodCarthageの署名のタイミングでロックされている可能性があります
また、codesignが利用できるようにパーティションリストの設定も行います

    - security create-keychain -p "password" gitlab.keychain
    - security default-keychain -s gitlab.keychain
    - security set-keychain-settings -l gitlab.keychain
    - security unlock-keychain -p "password" gitlab.keychain
    - security import $SECURE_FILES_DOWNLOAD_PATH/"証明書.p12" -k gitlab.keychain -P "p12password" -A
    - security set-key-partition-list -S "apple:" -s -k password gitlab.keychain
3. Provisioning Profileの配置

.mobileprovision 内からUUIDを抽出し、ファイル名にしてProvisioning Profileディレクトリへ移動させます

    - uuid=$(grep UUID -A1 -a $SECURE_FILES_DOWNLOAD_PATH/dis.mobileprovision | grep -io "[-A-F0-9]\{36\}")
    - mkdir -p ~/Library/MobileDevice/"Provisioning Profiles"
    - cp $SECURE_FILES_DOWNLOAD_PATH/dis.mobileprovision ~/Library/MobileDevice/"Provisioning Profiles"/$uuid.mobileprovision
4. xcodebuild

上記の設定ができれば証明書周りのセットアップが済んでいる状態です
xcodebuildでアーカイブ、エクスポートなど行ってください

おわりに

Shared Runner は手元に実機がなくてもCIを実現できるのが良いですが、ビルド時間が Mac mini (8GB Intel) と比較して少し長く掛かるようです
早さを重視するのであればオンプレで用意してしまうのもありかもしれません

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?