エンジニア向けサポート

どの段階で失敗したかを特定してから、エスカレーションを判断

VMRunner は専用の Apple Silicon 物理ノードを提供します。接続失敗、ビルド異常、署名中断、ディスク容量、ノード変更の相談、請求確認は、再現可能な情報から始めましょう。再起動やチケットの重複送信を繰り返す必要はありません。

  • 接続失敗
  • ビルド異常
  • ディスク容量
  • ノード相談
  • 請求確認
診断を実行

ビルド工程診断ボード

ノード応答中
  1. 01
    接続ハンドシェイク ノードアドレス、ポート、ホストフィンガープリント、認証情報を確認
    確認
  2. 02
    環境の基準値 システム時刻、ディスク空き容量、ツールのバージョンを記録
    確認
  3. 03
    タスクを再現 同じブランチ、コマンド、引数で再実行
    実行
  4. 04
    ログを整理 最初のエラーと前後の関連出力を保存
    保存
  5. 05
    エスカレーション 注文ID、ノード、時刻、期待する結果を送信
    チケット
物理ノード専有 1注文 = 1専用ノード
初回の切り分け手順

6項目の基準チェックで、環境の全消去より迅速に確認

まず現在の状態を保存し、項目ごとに範囲を絞ります。各項目の結果を記録すれば、接続、システム、プロジェクト設定を推測で行き来せずに済みます。

  1. 01

    接続情報を確認

    ノードアドレス、ユーザー名、ポート、鍵ファイルが現在の注文に対応しているか確認します。ホストフィンガープリントが変わった場合は、検証を無視せずノード情報を確認してください。

    ssh -v vmrunner-node
  2. 02

    ネットワーク到達性を確認

    DNS、対象ポート、ローカルネットワークを個別に確認します。ネットワーク切り替え後に再テストすれば、ローカル出口、経路、ノード接続の問題を切り分けられます。

    nc -vz node.example 22
  3. 03

    ディスク空き容量を確認

    システムボリューム、作業ディレクトリ、キャッシュディレクトリを同時に確認します。ビルド失敗はディスクが完全に埋まった後とは限らず、空き容量不足で依存関係の展開やアーカイブに問題が起きることもあります。

    df -h
  4. 04

    システム時刻を確認

    時刻のずれは証明書検証、トークンの有効期限、依存関係のダウンロードに影響します。システムのタイムゾーンと現在時刻を記録し、タスクログのタイムスタンプと照合してください。

    date && systemsetup -gettimezone
  5. 05

    開発ツールのバージョンを固定

    Xcode、Command Line Tools、Ruby、Fastlane、パッケージマネージャーのバージョンを記録します。再現中に複数のコンポーネントを同時に更新しないでください。

    xcodebuild -version
  6. 06

    最初の有効なエラーを保存

    タスク開始位置から最初のエラーを探し、最後の1行だけを切り取らないでください。最後に表示される失敗は、上流のエラーの結果であることが多いものです。

    tee build.log
コマンドラインで再テスト

同じコマンドで比較可能な出力を残す

以下のコマンドは SSH 接続、Xcode ビルド、Fastlane の手順をそれぞれ確認します。コピー後、プロジェクトの scheme と lane に合わせて調整してください。公開チケットに鍵や完全なトークンを添付しないでください。

build-session · ssh / xcodebuild / fastlane
接続と環境の基準値
ssh -v vmrunner-node
sw_vers
date
df -h
xcode-select -p
xcodebuild -version
Xcode ビルドの再現
set -o pipefail
xcodebuild \
  -workspace App.xcworkspace \
  -scheme App \
  -configuration Release \
  clean build | tee xcodebuild.log
Fastlane 出力の抜粋
bundle exec fastlane beta --verbose | tee fastlane.log
grep -n -E "error:|failed|Exit status" fastlane.log
Xcode と署名

コンパイル、アーカイブ、署名のどこで失敗したかを切り分ける

同じパイプラインで、依存関係の解決、コンパイル、テスト、アーカイブ、書き出しが順に実行される場合があります。まず失敗段階を確認し、対応する設定を調べてください。

証明書

証明書の有効性

現在の Keychain で証明書が確認できるか、有効期限内か、秘密鍵と正しく対応しているかを確認します。証明書名が表示されるだけでは、署名チェーンが完全とは限りません。

security find-identity -v -p codesigning
Keychain

キーチェーンのロック解除

非対話型タスクでは、Runner セッション内で指定した Keychain のロックを明示的に解除し、署名ツールが秘密鍵にアクセスできることを確認します。パスワードをリポジトリやビルドログに直接書かないでください。

security list-keychains -d user
プロビジョニングプロファイル

プロファイルの一致

Bundle Identifier、証明書の種類、対象環境、プロファイルの適用範囲を確認します。同じ target で自動署名と手動署名を混在させないでください。

xcodebuild -showBuildSettings
キャッシュ

DerivedData の削除

古いインデックス、モジュールキャッシュ、中間生成物が原因と考えられる場合に限り DerivedData を削除します。まずパスと現象を記録し、安定して再現する問題を偶発的な問題に変えないようにしてください。

xcodebuild clean
コマンドラインツールのパスも記録する

次を実行 xcode-select -pxcrun xcodebuild -version。グラフィカルインターフェースと Runner で異なる Xcode パスを使用していると、同じプロジェクトでも結果が変わることがあります。

CI/CD の切り分け

Runner が起動しても、タスク環境が一致しているとは限らない

継続的インテグレーションの問題は、アカウント権限、環境変数のスコープ、キャッシュの所有者、並列実行の競合、成果物の転送先が原因になることが多いものです。Runner を何度も登録し直すより、項目ごとの確認が効果的です。

認証

Runner の権限

実行アカウントがリポジトリを読み取り、作業ディレクトリに書き込み、必要な Keychain にアクセスし、ビルドスクリプトを実行できることを確認します。対話型ターミナルとサービスプロセスのユーザーIDを比較してください。

whoami
環境

環境変数

変数がログインシェルだけでなく、現在の job に注入されているか確認します。出力するのは変数名の一覧だけにし、値をログに書き込まないでください。

env
キャッシュ

キャッシュディレクトリ

依存関係キャッシュ、DerivedData、ビルドディレクトリの所有者が現在のアカウントか確認します。キャッシュキーにはツールのバージョンとロックファイルの要約を含め、バージョンをまたいだ再利用を避けてください。

du -sh
ジョブ

並列タスク

複数のタスクが同じ作業ディレクトリ、シミュレーター、出力ファイル名、Keychain 状態を共有していないか確認します。まず同時実行数1で再現し、段階的に並列実行へ戻してください。

ps aux
成果物

ビルド成果物の転送

アーカイブの実際のパス、アップロード手順の終了コード、ファイル権限、保持ルールを確認します。ビルドに成功して成果物がない場合は、まずスクリプトによってパスが書き換えられていないか確認してください。

find
リモートセッション

画面の遅延とノードの計算性能を分けて判断する

リモート画面はローカルネットワーク、エンコード、解像度、セッション状態の影響を受けます。まずコマンドラインのタスクが正常に動作しているか確認し、問題がグラフィカルセッションだけで起きているかを判断してください。

01 · 遅延

ローカルネットワークの基準値を測定

有線と無線のネットワークで、往復遅延、ジッター、パケットロスを記録します。上り帯域を使用する同期タスクを停止してから再テストし、ローカルの混雑をノード障害と誤認しないようにしてください。

02 · 画面

解像度を下げて比較

まず解像度とリフレッシュ要件を下げ、入力遅延が改善するか確認します。コマンドラインビルドの所要時間が安定しているのに画面だけが遅い場合は、リモートセッション経路を優先して調べてください。

03 · 入力

キーボードマッピングを確認

ローカルキーボードレイアウト、修飾キーのマッピング、リモートの入力メソッド状態を確認します。ショートカットに問題がある場合は、まずプレーンテキストエディタでテストし、開発ツールだけで判断しないでください。

04 · セッション

ロックと再接続を確認

元のセッションがロック中または切断状態になっていないか確認します。古いセッションを安全に切断してから再接続し、同じデスクトップを複数のグラフィカルセッションで奪い合わないようにしてください。

サポートリクエストを送信

6種類の情報を一度にそろえれば、チケットをすぐ切り分けに回せます

サポートリクエストに秘密鍵は不要です。注文を特定し、発生時刻と再現エラーを確認できる情報を提供し、送信前に必要なマスキングを行ってください。

注文ID
コンソールで確認できる注文番号
ノードのロケーション
シンガポール、日本(東京)、韓国(ソウル)、香港
発生時刻
タイムゾーンを含む障害の開始時刻と直近の再現時刻
再現手順
どのコマンドまたは操作から始めたか、重要な手順を順番に記載
ログの抜粋
最初のエラー、終了コード、前後の関連出力をマスキングして記載
期待する結果
本来生成されるはずだったビルド、署名、セッション、請求の結果を説明
エスカレーション

自己診断をやめてサポートへ連絡するタイミング

接続先に継続して到達できない

現在の注文情報を確認し、別のネットワークから再テストしても、対象ポートへの接続を確立できない。

同じタスクで安定して再現する

コード、コマンド、ツールのバージョンを固定しても、同じ手順でエラーが発生する。

ノードまたはディスク要件が変わった

ノード選択、ストレージ拡張、タスクのリソース上限を確認する必要があり、現在の注文情報だけでは判断できない。

請求情報を照合できない

注文ID、請求期間、支払い記録がコンソールの表示と一致せず、手動確認が必要。

利用を開始

新しい専用物理ノードなら、モデルと期間を選ぶだけ

3種類の Apple Silicon 構成を日、週、月、四半期単位でレンタルできます。シンガポール、日本(東京)、韓国(ソウル)、香港の4拠点から選択でき、利用可能状況はコンソールのリアルタイム表示に基づきます。