判断表・八段ランブック・二十分の受入表・CI との整合
自前の Mac を置けない小さなチームでも、Apple Silicon のマシンを時間単位で借りて GitHub Actions や Jenkins に載せる構成は珍しくありません。Fastlane Match を導入すると、すぐに二つの誤解が出ます。一つは SSH さえ通れば署名チェーンのすべてが非対話で完結するという期待、もう一つは長時間の停止を 通信の不安定さと決めつけて キーチェーンの許可待ちを疑わない癖です。本稿では、短命なレンタル環境で Match がどう振る舞うかを整理し、三つの接続モード(CLI のみ/SSH とワンショット VNC の併用/GUI を前提にした手順)へ振り分ける表、ツールチェーンの指紋からノード解体までの八段ランブック、インシデントメモに貼れる四つの短文ファクト、そして Apple が想定しがちなデスクトップ操作を一度に潰す二十分の VNC 受入グリッドを示します。Provisioning から配信までの流れは、初めての外部テスト向けチェックリストや 初回アップロードの記事とも噛み合わせやすいです。インスタンスの更新やバックアップ方針は記事タイトルが揃いにくいので、まずは ブログ一覧 から近いトピックを当たってください。
Match は証明書とプロビジョニングプロファイルを 暗号化された Git リポジトリ に集約し、共有パスフレーズで復号したうえで、レーンを実行した対話ユーザーのログインキーチェーンへ材料を流し込みます。クラウド Mac は 壁時計の課金 がそのままコストになるため、GUI を避けたまま署名トラブルをいじると予算が早く溶けます。運用上はリポジトリを 正 とみなし、個々のノードは 捨てられるキャッシュ、Developer ポータル側の Capability 変更は ポータルと Xcode の両方で人が確認する外向きイベント として扱うのが安定です。
複数の macOS アカウントを混在させると、古典的な事故が起きます。VNC で試したアリスには身元があるが、launchd で動くボブの CI には無いという状態です。レーンに触る前に、SSH と VNC が同じユーザー名・同じ UID に収束しているかを確認してください。パスワード共有が許されない設計なら、ユーザーごとにキーチェーンを分けますが、その場合は Match の材料を_principal ごとに_import するコストを最初から見込んでください。
単一の正:証明書リポジトリにブランチ保護をかけ、ポータルだけをいじったホットフィックスを Match に戻さない運用を避けます。
アカウントの一致:SSH、cron、GUI ログインが同じ UID に落ちるようにしておかないと、スモークテストの意味がブレます。
時刻の健全さ:ずれた時計は TLS を壊し、「まだ有効ではない」系のエラーを増幅させます。NTP を疑う前に時刻源を確認してください。
リースの規律:パスフレーズの預かり、デプロイ鍵、match nuke を誰が実行できるかを文書化します。
GUI 前提の負債:Organizer のエラー、二要素、キーチェーンの「常に許可」は SSH だけでは安定して自動化しにくいです。
Linux ランナーで Android を回しているチームほど、macOS を「ただの SSH ホスト」と見なしたくなりますが、Apple のツールチェーンは一部の同意フローで グラフィカルセッションに寄りかかる 前提が残っており、最終成果物がヘッドレスでも途中がそうとは限りません。
次の表はサポートチケットのルーティング用です。第四列の症状が出たら、キープアライブ値をいじる前に推奨アクセスモードへ切り替えてください。モード名をチケットに貼ると、ひとつのリースを複数人で触るときの重複エスカレーションが減ります。
| タスク | 推奨アクセス | 典型的な失敗サイン | 見かけ上の誤診 |
|---|---|---|---|
| 定期の match readonly | CI ユーザーで SSH | security / codesign 内で停滞 | CocoaPods ミラーのせいにする |
| このノードへの初回インポート | CI ユーザーで VNC | User interaction is not allowed | DerivedData を消し続ける |
| 自動署名の切り替え | Xcode 設定を VNC | ポータルとプロファイル一覧のズレ | Git 側だけを編集する |
| Organizer アップロード/2FA | VNC | トランスポータが進まない | SSH のタイムアウトを延ばす |
| match nuke による再構築 | 証人を VNC、実行は SSH も可 | 並列オペレータの衝突 | チャットでのミューテックス欠如 |
| キャッシュ後のユニットテスト | SSH | キーチェーンのランダムロック | 古い Xcode 不具合 ID への固定 |
GUI 依存タスクを最初にラベルしておけば、従量課金ノードでの無意味な SSH リトライを減らせます。
企業ネットワークでは SSH は通るが VNC だけ落ちる、という切り分けも珍しくありません。該当する社内手順がまだ無い場合は、まず ブログ一覧 でトンネルや帯域まわりの記事を探し、結論をチームのネットワーク担当と一緒に固定してください。
順番はこのまま実行することをおすすめします。六番と七番のあいだでキーチェーンを手で触ったら必ずログに残してください。さもないと次の CI が非決定的になります。xcodebuild -version、Ruby の管理ツール、Bundler のロック、Fastlane の版をセットで記録しておくと、後追いが楽です。ツールチェーンをノード更新と切り離したい場合は、社内でタイトルが揃った記事が見つかるまで ブログ一覧 を起点に調査してください。
三つ組の固定:Xcode・Fastlane・Ruby の版を README に書き、時間課金マシンがリリース途中で勝手に伸びないようにします。
秘密の棚卸し:リポジトリ URL、デプロイ鍵、パスフレーズ保管庫を検証し、CI ログから MATCH_PASSWORD が漏れないようにします。
VNC ブートストラップ:自動化ユーザーで Xcode にサインインし、規約や端末まわりの初回プロンプトを一度処理します。
レーン実行:Bundler 経由で development または appstore レーンを走らせ、方針が許す範囲でキーチェーンに常に許可を付けます。
身元の確認:security find-identity -v -p codesigning でハッシュを控え、チケットに貼れる形にします。
スモークアーカイブ:最小限のアーカイブまたは IPA を作り、バンドル ID に応じた TestFlight 系のゲートと突き合わせます。
パイプライン配線:夜間ジョブと同じ HOME・キーチェーン方針を SSH セッションにも継承させます。
リース終了:時間課金インスタンスを止める前に、暗号化リポジトリへのプッシュが完了したこと、オフライン退避が方針どおりかを確認します。
# 対話的なキーチェーン承認が一度通ったあとの読み取り専用同期例 bundle exec fastlane match appstore --readonly security find-identity -v -p codesigning | head -n 20
注:長寿命ゴールデンイメージでは身元を先読みしていることもありますが、従量課金レンタルでもポータルローテ後は四番を定期的に再確認した方が安全です。
警告:共有リースで破壊的レーンを並列実行しないでください。チーム全体のミューテックスを取ってから動きます。
各行は一度のセッションで終わらせ、SSH は指示がある場合以外は待機させてください。スクショを変更記録に添付すると、App Store 審査や社内監査がバイナリの出自を追いやすくなります。
| チェック | 手順 | 合格条件 |
|---|---|---|
| ユーザー一致 | メニューバーのアカウントと SSH の whoami を突き合わせる。 | 別ユーザーの二重化が無い。 |
| Xcode アカウント | 設定のアカウント一覧を開く。 | 説明のつかない黄色警告が残っていない。 |
| キーチェーン検索 | 配布用身元でフィルタする。 | 期限切れの重複が山積みしていない。 |
| readonly レーン | 自動化ユーザーでターミナルから実行。 | 終了コードゼロで、プロファイルの時刻が Git と整合。 |
| codesign ドリル | 成果物に codesign -dvvv を当てる。 | チェーンが揃い、アドホックな驚きが無い。 |
| Organizer スポット | 検証またはドライアップロード。 | アカウント画面で進行が塞がれない。 |
設備投資とオペックスの比較は記事タイトルが英語と日本語で揃いにくい場合があります。まず ブログ一覧 でコストや Mac mini の記事を探し、財務との会話に数字の出典を添えてください。
Match でプロファイルを引いたあとのアーカイブとゲート。
読む →手元に Mac が無い前提での初回配信手順。
読む →ネットワークやツールチェーン固定の記事を検索。
読む →キーチェーンの許可ダイアログは同じユーザーの対話セッションが無いと進みません。一度 VNC で承認し、そのあと readonly レーンを再利用してください。
暗号化 Git は残りますがディスク上のキャッシュは残りません。リース終了前にリポジトリからの再ブートストラップを決めてください。
デプロイ鍵の権限を絞り、レーンを分離できれば多くの場合は運用できます。ポータルロール変更と同じ頻度で秘密情報を見直してください。
アカウント紐付け、Organizer の失敗、信頼修復、自動署名の切り替え、常に許可が要るキーチェーンフローです。詳しくは二節の表を参照してください。
Fastlane Match が解くのは 版管理された署名資産 であり、macOS の同意 UX までは肩代わりしません。SSH だけに寄せたワークフローは、提出前夜まで対話的な負債を隠し、時間課金が積み上がったタイミングで VNC 席を探す羽目になりやすいです。自前の Mac mini を置けばリースのタイマーは消えますが、キャピタルコスト、スリープ方針、リリースの谷間に遊ぶ遊休機という別の線形計画が始まります。
VNC をインフラの一部としてスケジュールし、readonly レーンとセットで文書化しておくと、クラウドノードの挙動は読みやすくなります。
上記の受入表どおり フル GUI で観察できる Apple Silicon ホスト が必要になったら VNCMac のレンタルをご検討ください。主ボタンは 購入ページ、プランの全体像は プロダクトホーム で並行確認するとスムーズです。