2026年8月21日時点で、CircleCI公式資料にはmacOSのlaunch agentからMachine Runner 3へ移行する手順が公開されています(公式移行ガイド)。
判定:旧launch agentを使うノードには移行が適しています。ただし、既存ホストを一度に全量置換する方法は不適切です。 隔離したMacでサービス起動、タスク経路、作業領域の清掃、署名認証情報、再起動復旧を確認し、合格後に本番ノードを段階的に切り替えてください。切り戻し先も、旧サービスを復元するのか予備ノードへ送るのか、事前に固定します。
この内容は、CircleCIのmacOS自前Runnerを保守するプラットフォーム担当者、コード署名や私設ネットワークへの影響を避けたい企業IT責任者、既存Macの継続利用・隔離ノード追加・弾力的なMac利用を比較する技術責任者に向いています。単にRunnerをオンライン表示にする手順ではなく、本番投入を承認するための問題別チェックリストです。
最終更新:2026年8月21日。移行手順、設定項目、対応条件は、公開後もMachine Runnerの公式changelogと関連公式資料を再確認してください。
00受入範囲と切り戻し責任
先に作る移行台帳
全量置換を避けるには、最初に「何を移すか」ではなく「何が止まると困るか」を記録します。対象ノード、利用するリポジトリ、リソースクラス、署名の有無、私設ネットワークへの接続、保守時間帯、切り戻し担当者を一つの台帳にまとめます。
| 確認対象 | 記録する内容 | 合格の条件 |
|---|---|---|
| 移行対象 | Macの識別子、OS、Apple Siliconの有無、実行ユーザー | 試験ノードと本番ノードが区別されている |
| 依存パイプライン | checkout、ビルド、テスト、署名、成果物公開 | 重要度と停止許容条件が明記されている |
| タスク経路 | namespace、resource class、対象プロジェクト | 試験用プロジェクトだけが試験ノードを呼び出す |
| 切り戻し | 旧サービス復元または予備ノードへの切替 | 実行担当者と判断条件が決まっている |
| 証跡 | ログ、設定ファイルのハッシュ、操作記録 | 受入後に第三者が追跡できる |
本番唯一のビルド機を試験機に兼用すると、失敗時に調査と復旧が同じホストで競合します。既存ノードを止める前に、隔離Macまたは別の待機ノードで同じ基準ジョブを通せる状態を作ることが重要です。
旧サービスの残留
旧launch agentのplist、インストール先、実行プロセスが残ると、新旧サービスが異なる設定を読み込んだり、同じノードで接続状態を争ったりする可能性があります。公式のmacOS移行手順に沿って停止と削除を行い、手作業で別方式の起動設定を追加しないでください。
確認には、対象ユーザーのサービス一覧とプロセス一覧を使います。
launchctl list | grep -i circleci
ps aux | grep -i '[c]ircleci'
出力が空であることだけを合格条件にせず、旧plistの保存場所、削除日時、停止ログを証跡として残します。新Runnerの導入は、macOSインストールガイドに掲載された現在の方法と配布物を使い、バイナリの入手元、署名、notarizationの状態、インストールログを記録します。
01設定とタスク経路の検証
互換性ではなく実行意味を確認する
既存のconfig.yamlが読み込めることは、移行完了の証拠ではありません。working_directory、cleanup_working_directory、runner mode、command_prefix、タスクの最長実行時間、task-agentのキャッシュ動作を、Machine Runner 3設定リファレンスと照合します。
特に確認すべきなのは、パスの置換、環境変数の継承、実行ユーザー、ディレクトリ所有者です。旧環境で暗黙に成立していた相対パスやログインシェルの設定が、新サービスの起動コンテキストでは成立しないことがあります。
既存のconfig.yamlはそのまま使えますか。
構文や一部設定が互換でも、パス、権限、環境変数、キャッシュの扱いまで同一とは限りません。コピーして本番投入するのではなく、認証情報を含まない基準タスクでcheckout、ビルド、ログ出力、終了コード、成果物回収を個別に確認します。
| 検証領域 | 基準タスクで行う確認 | 失敗時の判断 |
|---|---|---|
| checkout | 対象リポジトリを取得し、意図した作業ディレクトリを表示 | パスまたは権限を修正するまで停止 |
| ビルド | Xcodeなど必要なツールの呼び出しと終了コードを記録 | ツールチェーン差異を調査 |
| ログ | 標準出力、標準エラー、失敗理由が追跡可能か確認 | ログ欠落なら本番不可 |
| 成果物 | 試験用成果物だけを回収し、公開経路を使わない | 公開先を分離して再試験 |
| 清掃 | 終了後の作業ディレクトリ、キャッシュ、秘密情報を確認 | 清掃不備なら署名ジョブを載せない |
タスクのルーティング
Runnerがオンラインでも、意図しないプロジェクトがMacへタスクを送れるなら受入失敗です。namespace、resource class、認証トークン、プロジェクト設定を照合し、試験プロジェクトからは試験ノードへ、許可されていないプロジェクトからは拒否されることを確認します。
組織の設定ポリシーは、自前Runner向けの公式設定ポリシーを基準に設計します。信頼できるリリース用パイプラインと、一般的なテストや外部コントリビューションを同じmacOSリソースクラスへ流さないことが基本です。
トークンはリポジトリ、共有スクリプト、ビルドログに現れてはいけません。許可プロジェクト、拒否プロジェクト、リソースクラスの対応表、トークンの保管者とローテーション担当者を受入証跡に含めます。
02ワークスペースと署名資産の隔離
残留物の検査
cleanup_working_directoryが設定されていても、作業ディレクトリだけを見て完了とはしません。キャッシュ、checkout用SSHキー、一時Keychain、Provisioning Profile、署名証明書、ビルド成果物、環境変数に展開された秘密情報を、企業の保持方針に沿って確認します。
自前Mac Runnerにコードや署名認証情報を残さない方法はありますか。
分離した試験プロジェクトを用意し、プロジェクトAのジョブ終了後にプロジェクトBを実行します。BからAのソース、環境変数、Keychain、Provisioning Profile、キャッシュが読めないことを確認し、失敗した場合は共有Runnerへの署名ジョブ投入を止めます。
署名を扱うノードでは、専用実行アカウントと専用resource classを優先します。一般テストを同じ信頼境界へ混在させると、清掃処理の一時的な失敗やログの誤出力が、横方向のアクセス経路になり得ます。
再起動と異常終了
macOS再起動後にMachine Runner 3が自動でタスクを受けない場合、何を確認しますか。
サービスの登録先、起動ユーザー、設定ファイルの所有権、ネットワーク到達性、認証情報の読み込み、旧launch agentの残留を順に確認します。再起動後に画面へログインしないと起動しない構成なら、無人のCIノードとしては不合格です。
以下の試験を、公開や本番署名を伴わない基準ジョブで実施します。
- 試験ノードを遠隔から再起動し、ログイン操作なしでRunnerが接続するか確認します。
- Runnerプロセスを停止し、再起動またはサービス復旧後に再び接続するか確認します。
- 短時間のネットワーク中断を発生させ、同一タスクが重複実行されないか記録します。
- タスクを意図的にタイムアウトさせ、後続タスクへ壊れた作業領域が渡らないか確認します。
- 接続不能、署名失敗、成果物未回収の各ケースで、担当者が定めた切り戻しを実行します。
注意: 再接続できたことと、重複公開が起きないことは別の確認項目です。リリース処理には冪等性、公開前の承認、成果物識別子の照合を組み込み、Runnerの復旧だけを安全性の根拠にしないでください。
03受入判定と容量の選択
証跡カード
各試験は「実施した」ではなく、入力、期待結果、実際の結果、ログの保存先、担当者、判定を一行で記録します。性能値や処理時間を推測で埋めず、実際の基準パイプラインから取得できた値だけを採用します。
| 試験 | 必須証跡 | 判定 |
|---|---|---|
| サービス切替 | 旧プロセス停止、新サービス起動、バイナリ情報 | 合格/制限付き |
| 設定互換 | 読み込んだ設定、実行ユーザー、パス、終了コード | 合格/差し戻し |
| 経路制御 | 許可・拒否プロジェクトとresource class | 合格/差し戻し |
| 清掃 | AからBへの情報漏えいがない検査結果 | 合格/署名利用禁止 |
| 復旧 | 再起動、異常終了、通信断、タイムアウトの記録 | 合格/待機ノードへ切替 |
| 運用性 | キュー、成功率、失敗原因、手動復旧の記録 | 放量可否を決定 |
容量については、固定ノードの台数を先に決めるのではなく、実際のキュー、同時実行、リリース締切、復旧時間を継続的に記録します。Apple Siliconを使うiOS CI/CDでは、署名やXcodeの実行環境だけでなく、同時実行時のメモリ、ディスク、キャッシュ競合も基準ジョブで確認します。
条件分岐による決定
- 旧サービスが停止し、新Runnerが無人再起動後に接続し、許可外プロジェクトを拒否できる場合は、試験ノードで署名なしの段階的なジョブを開始します。
- 設定は読み込めるが、実行ユーザー、パス、キャッシュの挙動が説明できない場合は、config.yamlを修正し、基準タスクを再実行します。
- コード、Keychain、Provisioning Profileの清掃を証明できない場合は、共有ノードへの署名ジョブ投入を止め、専用アカウントと専用resource classへ戻します。
- 再起動後の自動復旧または重複実行の抑止を確認できない場合は、固定本番ノードの切替を延期し、予備ノードへルーティングします。
- キューが継続的に長く、公開締切に対する余裕を説明できない場合は、固定Macの増設、隔離ノード、弾力的なリモートMac容量を比較します。
- 失敗時に旧launch agentを安全に復元できない場合は、旧サービスを本番ホスト上で即興復元せず、事前検証済みの待機ノードへ切り替えます。
遠隔Macを試験ノードにする判断
既存のMacを試験に回すと、本番ジョブの停止、物理機の占有、社内ネットワーク変更、返却時のデータ消去が同時に発生します。短期間だけ隔離した実機を用意し、同じ基準パイプラインで移行証跡を作る方法なら、唯一の本番ビルド機を変更せずに検証できます。
| 選択肢 | 向いている条件 | 注意点 |
|---|---|---|
| 既存Macで試験 | 予備機があり、停止時間を確保できる | 本番設定や秘密情報を試験へ持ち込まない |
| 専用Macを購入 | 長期に固定負荷があり、物理接続が必要 | 調達、保守、故障時の代替機を別途管理 |
| リモートMacを短期利用 | 隔離試験、増設、移行前の比較が必要 | 接続経路、権限、データ消去条件を確認 |
| 既存ノードと待機ノードを併用 | リリースSLAが厳しく、切替停止を避けたい | ルーティングと認証情報の分離が必要 |
企業のMac基盤をレンタルで試す価値はどこにありますか。
移行前の試験では、固定資産として購入する前に、実際のジョブ、再起動、清掃、署名隔離を確認できる点にあります。NUKCLOUDでは、Macのリモート利用方法を確認したうえで、試験ノードを本番と分離し、必要な期間だけ運用する構成を検討できます。長期の高負荷運用や物理USB機器が必須の場合は、購入した専用Macのほうが適しています。
受入後の運用
判定は「合格」「制限付きで放量」「差し戻し」の三つに分けます。制限付きの場合は、許可プロジェクト、実行種別、署名利用の可否、監視担当者、再評価条件を明記し、オンライン表示だけで本番利用へ広げないことが必要です。
本番容量を追加する場合は、日本向けMacレンタルの案内を比較対象に含め、固定ノードの増設費だけでなく、故障時の代替、保守担当者の工数、移行試験期間、キュー滞留によるリリース遅延もTCOに入れます。価格や性能を一般論で埋めず、実際の契約条件と基準パイプラインの記録で判断してください。
旧launch agentからMachine Runner 3への移行は、設定ファイルを置き換えてRunnerがオンラインになれば終わる作業ではありません。サービス残留、実行意味の差、誤ったタスク経路、署名資産の残留、再起動後の復旧失敗を別々に検査し、すべての証跡と切り戻し手順が揃って初めて本番切替を承認できます。
唯一の本番Macを直接改造する方法は、停止リスク、復旧時の設定混在、物理機の調達待ちという弱点を抱えます。まずNUKCLOUDの隔離したリモートMacを試験環境として使い、実際のiOS CI/CDで経路、清掃、再起動、署名保護を検証し、合格後にキューとSLAを根拠として長期ノード数を決める流れが、企業の移行リスクを抑えやすい選択です。