接続プランナー
同じ認証情報を個人セッションと自動化タスクに同時に渡さないでください。まず取り消し可能な専用アカウントを作成し、その後Runnerを接続します。
まず、作業に必要なのがコマンドライン、リモートデスクトップ、無人実行のどれかを判断し、認証情報、ツールチェーン、権限を確認します。VMRunnerが提供するのは専用Apple Silicon物理ノードで、仮想マシンではありません。接続情報はコンソールの納品済み注文を基準にしてください。
同じ認証情報を個人セッションと自動化タスクに同時に渡さないでください。まず取り消し可能な専用アカウントを作成し、その後Runnerを接続します。
コマンドラインは頻繁なスクリプト化操作に、リモートデスクトップは対話が必要なツールに、継続タスクは専用Runnerに適しています。切り分けることで権限範囲が明確になり、接続問題も特定しやすくなります。
Git操作、依存関係のインストール、ログ確認、スクリプト実行、ビルドに適しています。帯域消費が少なく、接続が切れても復旧しやすい方法です。
Xcodeの画面デバッグ、シミュレータ確認、音声・動画プロジェクトの処理、ウィンドウ状態の確認が必要な作業に適しています。解像度が高いほど、ローカルネットワークへの要求も高くなります。
テスト、アーカイブ、署名、成果物転送に適しています。Runnerは専用アカウントで実行し、環境変数はタスクごとに注入します。個人のデスクトップセッションと認証情報を共有しないでください。
リモート接続の調査で最も時間を失いやすいのは、複雑な障害ではなく、ノードのアドレス、アカウント用途、ローカルネットワークの基準値が不明確なことです。初回接続前に以下を記録すれば、変化した層を判断できます。
注文ID、ノードの都市、ノードアドレス、アカウント用途、ホストフィンガープリントの確認結果、初回接続成功時刻。秘密鍵は管理対象の端末だけに保存し、チケット、チャット、コードリポジトリには書き込まないでください。
コンソールで注文状態と接続情報を確認します。納品が完了する前に、古いアドレスや他人の記録を使って接続しないでください。
個人操作、自動化タスク、一時的な共同作業には、それぞれ取り消し可能なアカウントまたは鍵を使い、長期的な認証情報を共有しないでください。
有線・無線ネットワークでの遅延、パケット損失、安定性を記録します。リモートデスクトップが重いときは、まずこの基準値と比較してください。
開発アカウントには作業ディレクトリに必要な権限だけを付与し、Runnerアカウントはビルドディレクトリ、キャッシュ、必要な署名リソースだけにアクセスできるようにします。
初回接続の目的は警告を急いで無視することではなく、現在のアドレスが納品済みノードに対応していることを確認することです。フィンガープリントを確認した後、エイリアス、接続維持設定、最小権限アカウントを整えます。
ssh-keyscan -t ed25519 NODE_ADDRESS
ssh USER@NODE_ADDRESS
初回に取得したフィンガープリントをコンソールの納品情報と照合します。アドレス変更やシステム再インストール後にフィンガープリントが変わった場合は、原因を確認してから接続してください。
ssh-keygen -t ed25519 -a 64
ssh-copy-id USER@NODE_ADDRESS
VMRunnerノード専用の鍵を生成します。秘密鍵にはローカルパスフレーズを設定し、リポジトリに登録せず、Runnerのデプロイ鍵とも共有しないでください。
Host vmrunner-build
HostName NODE_ADDRESS
User ACCOUNT_NAME
IdentityFile ~/.ssh/vmrunner_ed25519
ServerAliveInterval 30
ServerAliveCountMax 3
エイリアスを使うとアドレスの転記ミスを減らせます。接続維持パラメータは切断を検知するだけで、中断したプロセスを自動復旧するものではありません。長時間の作業はタスクマネージャーまたはCI Runnerに任せてください。
管理者権限を日常の既定にしないでください。依存関係のインストール、システム設定、パイプライン実行ではアカウントを分けます。一時的な権限昇格が終わったら直ちに通常権限へ戻し、変更内容を記録してください。
リモートデスクトップは、Xcode、シミュレータ、タイムライン画面を確認する必要がある操作に適しています。すべてのバックグラウンド作業の代わりにはしないでください。まず低い解像度で安定したセッションを作り、徐々に画質を上げます。
ツールウィンドウをすべて表示できる最低設定から始め、入力遅延と画面更新を確認します。
ネットワークが不安定なときは視覚効果を下げ、操作への応答とファイル同期に帯域を優先します。
安全なテキストウィンドウでよく使うショートカットをテストしてから、署名、削除、公開操作に進みます。
中断後はまず以前のセッション状態を確認し、ツールの重複起動や同じ作業ディレクトリの占有を防ぎます。
コード、証明書、キャッシュ、パイプラインを一度にすべて移行しないでください。各段階で検証可能な出力を残し、前段階の確認後に次へ進みます。
まずリポジトリ、ロックファイル、必要な素材、ビルドスクリプトを同期します。大容量キャッシュや再ダウンロード可能な依存関係は初回移行の対象にしません。
Xcode、コマンドラインツール、パッケージマネージャー、証明書、プロビジョニングプロファイルを確認します。まず小規模なテストターゲットを実行し、完全なリリースパイプラインは後に回します。
専用Runnerアカウントを作成し、環境変数の読み取り範囲を制限します。ロールバック可能なテストタスクを1回実行し、成果物を転送します。
同じコードでも2台のMacで動作が異なる場合、通常はツールのバージョン、パス、キャッシュ、権限の違いが原因です。最初の正式ビルド前に、以下の項目を記録してください。
xcodebuild -version
バージョンがプロジェクト基準と一致
xcode-select -p
パスが対象Xcodeを指している
Runnerで開発者のデスクトップアカウントを再利用しないでください。専用IDにより、権限の取り消し、キャッシュの削除、ファイル所有者の問題の特定が容易になり、個人セッションによるパイプラインへの干渉も減らせます。
CIトラブルシューティングを見るアカウントはリポジトリの作業領域、依存関係キャッシュ、ビルドディレクトリ、必要な署名リソースだけにアクセスし、日常的な管理者権限は付与しません。
パイプラインプラットフォームの登録手順で現在のノードに紐付け、チップ、システム、タスク種別を識別できるラベルをRunnerに設定します。
変数はリポジトリ、環境、タスクの範囲ごとに設定します。ログでは機密値を隠し、完全な設定ファイルをビルド記録に出力しないでください。
依存関係が少なく短時間で終わるターゲットから始め、終了コード、テスト結果、キャッシュヒット、作業ディレクトリのクリーンアップを確認します。
成果物名、生成元コミット、チェックサム、保存場所を記録します。転送成功を確認してから、完全なパイプラインへ拡大します。
本番利用前に、認証情報、共有範囲、バックアップ、復旧情報をもう一度確認します。すべてのアカウント、セッション、自動化タスクを個別に取り消せる状態にすることが目的です。
初回確認後に初期パスワードまたは鍵を変更し、不要になった一時的な権限を削除します。認証情報の用途と担当者も記録してください。
利用者ごと、Runnerごとに専用IDを使います。権限を変更するときは該当アカウントだけを取り消し、他のワークロードに影響させません。
コードはリモートリポジトリを主とし、署名素材、プロジェクト素材、重要な成果物はチームの方針に従ってバックアップします。復旧手順も定期的に検証してください。
使わなくなったリモートデスクトップセッションをロックして閉じ、一時サービスを停止します。バックグラウンドタスクに明確な所有者がいるか確認してください。
注文ID、ノードの都市、アカウント用途、ツールのバージョン、直近で成功したビルドを記録し、サポート担当者が問題をすぐ特定できるようにします。
注文ID、ノードの都市、発生時刻、再現手順、機密情報を除いたログ、期待結果を送ってください。秘密鍵、完全なアクセストークン、証明書パスワード、未加工の設定ファイルは送信しないでください。
認証情報の確認、ツールバージョンの記録、テスト成果物の転送を終えてから、本番プロジェクトを専用Apple Silicon物理ノードへ移行します。