接続から成果物の検証まで

クラウドMacをビルドフローに組み込む

ここでは概念ではなく、項目ごとに実行できる手順を紹介します。まず専用物理ノードの身元確認とセキュリティ設定を行い、Xcode、署名素材、自動化タスクを準備します。問題が起きたら、統一した形式でネットワーク出力とビルドログを収集してください。

5種類 サポートテーマ
6ステップ 自動ビルドフロー
2種類 追跡可能な問い合わせ窓口
RUNNER SUPPORT ROUTE MAC-01
01
受け取りと確認 接続パラメータ、ホストフィンガープリント、初期パスワード
準備
02
ビルド環境を準備 Xcode、ツールチェーン、署名素材、ディレクトリ
設定
03
自動化タスクを実行 チェックアウト、キャッシュ、アーカイブ、エクスポート、検証
実行
04
診断情報を収集 ノード、注文、時刻、コマンド、完全な出力
トラブルシューティング
すべての診断は再現可能な入力から始まります
初回接続

5ステップでノードの身元確認とセキュリティ設定を完了

RunnerVMが提供するのは仮想マシンではなく、専用物理Mac miniです。初回操作ではコマンドを急いで実行するのではなく、注文に対応するデバイスへ接続していることを確認し、初期アクセスをチーム独自の安全な設定に置き換えます。

  1. 01

    コンソールで引き渡し情報を取得

    注文ID、ノードリージョン、接続アドレス、SSHポート、VNCパラメータ、初期ユーザー名を確認します。完全な認証情報をチャットで転送しないでください。チームで共有する場合も、実際の作業者に必要な項目だけを渡します。

  2. 02

    先にホストフィンガープリントを記録

    コンソールに表示されたホストフィンガープリントと、初回SSH接続時の警告を1文字ずつ照合します。アルゴリズムやダイジェストが一致しない場合は接続を停止し、チケットを送信してください。異常を回避するためにローカルのknown_hosts記録を削除してはいけません。

  3. 03

    SSHコマンドライン接続を確立

    注文に記載されたホスト、ポート、ユーザー名で接続します。ログイン後、まず sw_versuname -mhostnameを実行し、システムバージョン、Apple Siliconアーキテクチャ、デバイス名を引き渡し記録に書き込みます。

  4. 04

    必要に応じてVNCリモートデスクトップを構築

    ローカルのVNCクライアントに、コンソールに表示されたアドレス、ポート、パスワードを入力します。初回はデフォルト解像度でキーボード、ポインタ、ウィンドウの拡大縮小を確認し、セッションが安定してから画面サイズを上げてください。

  5. 05

    パスワードを更新し権限を制限

    初期パスワードを直ちに変更し、SSH公開鍵と管理者権限を確認して、タスクに必要なアクセスだけを残します。その後SSHとVNCに再接続し、新しい認証情報が有効であることを確認してからプロジェクトや署名素材を取り込んでください。

コマンド実行例

接続確認からアーカイブ出力まで

ここでは一般的なビルドタスクの流れに沿って、SSH、xcodebuild、fastlaneの出力例を示します。コマンド内のホスト、ワークスペース、Scheme、エクスポート設定、laneはプロジェクトの実際の値に置き換えてください。すべてのリポジトリでそのまま使えるとは限りません。

  • 接続先を確認してから、プロジェクトディレクトリへ移動します。
  • アーカイブパスにはタスク固有のディレクトリを使い、並列実行による上書きを防ぎます。
  • 標準出力全体と終了コードを保存し、最後の1行だけを残さないでください。
runner-build-session zsh
ノードに接続 SSH
$ ssh -p 22 runner@10.0.0.12
Host key fingerprint: SHA256:…
$ sw_vers
ProductName: macOS
$ uname -m
arm64
アーカイブを生成 XCODEBUILD
$ xcodebuild archive \
-workspace RunnerApp.xcworkspace \
-scheme RunnerApp \
-archivePath build/RunnerApp.xcarchive
** ARCHIVE SUCCEEDED **
自動化フローを実行 FASTLANE
$ bundle exec fastlane ios build
[08:42:16]: Resolving signing settings
[08:43:02]: Archive completed
[08:43:11]: Export verified
[08:43:11]: fastlane finished successfully
サンプルコマンドは、プロジェクトのワークスペース、Scheme、署名方式、ディレクトリ構成に合わせて調整してください。
環境構築

Xcode、署名素材、ディレクトリを個別に検証可能にする

環境の問題は、Xcodeが開くかどうかではなく、グラフィカルインターフェースの選択、コマンドラインパス、プロジェクト設定、署名コンテキストが一致しているかどうかにあることが多いものです。以下の順で確認すると、ツールチェーンとプロジェクトの問題を迅速に切り分けられます。

01

Xcodeのバージョンとパスを確認

実行 xcodebuild -versionxcode-select -pを実行します。ノードに複数のバージョンがインストールされている場合は、まずプロジェクトの要件を確認してから開発者ディレクトリを切り替え、GUIと自動化タスクで異なるバージョンが使われないようにします。

02

Command Line Toolsを検証

実行 xcrun --find xcodebuildxcrun simctl list 、および署名なしのプロジェクト解析を1回実行します。ツールが見つからない、またはSDK一覧に異常がある場合は、プロジェクトファイルを直接変更せず、先にツールチェーンを修復してください。

03

タスク専用の署名キーチェーンを作成

自動化タスクで使う証明書を専用キーチェーンに入れ、明確なロック解除手順と最小限のアクセス範囲を設定します。パスワードをリポジトリ、スクリプト引数、ビルドログに書き込まないでください。

04

証明書とプロビジョニングプロファイルを取り込む

証明書名、有効期限、チームID、プロビジョニングプロファイルのUUIDを記録し、Bundle Identifierがターゲット設定と一致することを確認します。取り込み後、 security find-identity -v -p codesigning で利用可能な署名IDを検証します。

05

ビルドディレクトリを設計

ソース、依存関係キャッシュ、DerivedData、Archive、Export、ログを分離します。各タスクに固有のアーカイブパスを使い、共有キャッシュには再生成可能な内容だけを保存して、署名素材が混入しないようにします。

自動ビルド

1回の成功したビルドを再現可能な6段階に

自動化の目的はローカルスクリプトをリモートへ移すことではなく、入力、環境、署名、出力を再現可能にすることです。各段階で明確な記録を残し、失敗箇所を特定できるようにします。

  1. 01

    固定したコードバージョンをチェックアウト

    コミットハッシュまたは保護されたタグを使い、動き続けるブランチ先端に依存しないでください。サブモジュールのバージョン、Git LFSの状態、リポジトリがクリーンかどうかを記録します。

    git checkout --detach <commit>
  2. 02

    依存関係キャッシュを復元して検証

    キャッシュキーには少なくともロックファイルのダイジェスト、ツールバージョン、アーキテクチャを含めます。キャッシュミス時は通常どおりインストールし、「必ずキャッシュにヒットすること」をビルド成功の条件にしないでください。

    bundle check || bundle install
  3. 03

    署名設定を読み込む

    タスク専用キーチェーンをロック解除し、一致するプロビジョニングプロファイルを取り込み、利用可能な署名IDを検証します。鍵やパスワードを標準出力に書き出してはいけません。

    security find-identity -v -p codesigning
  4. 04

    Archiveを実行

    ワークスペース、Scheme、Configuration、Destination、アーカイブパスを明示的に指定します。完全なログとxcodebuildの終了コードを保存してください。

    xcodebuild archive …
  5. 05

    納品成果物をエクスポート

    エクスポート設定は秘密情報を含めず、バージョン管理に含めます。エクスポートとアーカイブのディレクトリを分け、再実行時に元のxcarchiveを上書きしないようにします。

    xcodebuild -exportArchive …
  6. 06

    結果を検証して記録

    ファイルの存在、サイズ、ダイジェスト、署名情報、タスクの終了コードを確認し、成果物IDをコミット、Xcodeバージョン、ログパスと関連付けます。

    shasum -a 256 build-output
リモートデスクトップ

VNCはGUI操作に使い、長時間のタスクは独立プロセスで実行

リモートデスクトップは、初回のGUI設定、Xcode画面の状態確認、目視確認が必要な作業に適しています。ビルドの継続は、ローカルのVNCウィンドウが接続を維持しているかどうかに依存させないでください。

接続パラメータ

コンソールに表示されたアドレス、ポート、ユーザー名、パスワードを厳密に使用します。クライアントが接続設定ファイルに対応していても、同期される平文ファイルにパスワードを書き込まないでください。

解像度の調整

初回接続はデフォルトサイズで行います。操作が安定していることを確認してから段階的に解像度を上げてください。入力遅延が発生したら、まず色深度と画面サイズを下げ、その後ネットワーク経路を確認します。

セッションのロック

デバイスから離れる前にグラフィカルセッションをロックし、VNCクライアントを閉じるだけで済ませないでください。担当者が交代するときは不要になったアクセス権を取り消します。

切断後のタスク

継続的なビルドはCI runner、launchd、tmux、その他の復旧可能なセッションで実行してください。一度は意図的に切断し、タスクとログへの書き込みが続くことを確認します。

リモートセッション引き継ぎ票 VNC / SSH
開始前 ノードとセッションの身元を確認

注文リージョン、デバイス名、現在のログインユーザーを確認します。

実行中 タスクを専用ログに書き込む

ビルドが実行中かどうかを画面出力だけで判断しないでください。

離席時 セッションをロックしバックグラウンドタスクを確認

切断後、SSHでプロセス、ログの増加、終了状態を確認します。

引き継ぎ後 一時権限を取り消す

一時公開鍵、一回限りのファイル、不要になった認証情報を削除します。

ネットワークと遅延

接続性、経路、名前解決、ポートを同時に記録

ネットワーク問題では、「どこから、いつ、どの対象へアクセスし、どんな完全な出力が得られたか」を明確にします。スクリーンショット1枚や「接続が遅い」という説明だけでは、ローカルネットワーク、経路、DNS、ポートポリシー、対象サービスの状態を切り分けられません。

PING

基本的な往復時間とパケット損失を確認

一定数のパケットを連続送信し、最小・平均・最大遅延とパケット損失率を保存します。1回の応答で接続全体の品質を判断しないでください。

ping -c 20 target-host
TRACEROUTE

経路が変化する位置を確認

問題が発生した送信元ネットワークから実行し、全ホップを保存します。中間ノードが応答しなくても回線断とは限らないため、最終対象に到達できるかと併せて判断します。

traceroute target-host
DNS

名前解決結果と所要時間を確認

現在のDNSサーバー、返されたアドレス、問い合わせ時間を記録します。ネットワークごとに結果が異なる場合は、両側の出力を同時に提出し、結果を手作業で書き換えないでください。

dig target-host
PORT

対象ポートへの到達性を確認

SSHまたはプロジェクトで実際に使うポートを個別にテストします。接続成功はTCPに到達できたことを示すだけで、認証や上位プロトコルの完了を意味しません。

nc -vz target-host 22
チケット診断パッケージ

提出時に必須の5項目

NET-CHECK
問題発生時刻
現地の日付、時刻、タイムゾーン、継続時間を記載します。
送信元の場所
送信元ノード、オフィスまたは家庭のネットワーク、通信事業者を記載します。
対象情報
注文ID、ノードリージョン、対象ホスト、ポートを記載します。
完全な出力
ping、traceroute、DNS、ポート検査の生の結果を添付します。
比較結果
可能であれば、別のネットワークまたは別の時間帯で同じテストを行った結果を追加します。

提出前にパスワード、秘密鍵、トークン、業務データを削除します。ただし、タイムスタンプ、エラーコード、経路のホップ数、コマンドパラメータは削除しないでください。

サポートへのエスカレーション

問題の範囲を絞ってから追跡可能なチケットを送信

購入前の質問、一般的な問い合わせ、特定の注文に紐づかない説明はメールで送信できます。ノード、ビルド失敗、接続異常、請求記録に関する問題は、コンソールにログインしてチケットを送信してください。注文に紐付け、対応状況を継続して確認できます。

  1. 01

    該当するガイドを検索して実行

    初回接続、環境構築、自動化、ネットワーク診断から適切な手順を選びます。実行済みの手順、コマンド、結果、最初に異常が発生した箇所を記録してください。

  2. 02

    最小限の再現情報を整理

    注文ID、ノードリージョン、問題発生時刻、再現手順、期待結果、実際の結果、機密情報を除いた完全なログを提供します。ビルド問題ではコミットとXcodeのバージョンも記載してください。

  3. 03

    コンソールからチケットを送信

    問題に最も近いカテゴリーを選び、ログを添付または本文のコードブロックとして提出します。1つのチケットは1つの問題に集中させ、ネットワーク、ビルド、請求の異常を混在させないでください。

  4. 04

    元のチケットに進捗を追加

    再テスト後も元のチケットに返信し、新しい時刻、コマンド、出力を追加します。緊急の場合もコンソールで対応状況を確認し、同じチケットを複数作成しないでください。

特定の注文に関連

コンソールチケット

接続失敗、ノード異常、ビルド環境、請求確認、継続対応が必要な問題に適しています。チケットを注文に紐付け、対応のタイムライン全体を保存できます。

  • 注文IDとノードリージョン
  • タイムゾーン付きの問題発生時刻
  • 再現手順と完全なエラー出力
  • 実行済みの診断コマンドと結果
コンソールにログインしてチケットを送信
一般的な問い合わせ

サポートメールを送信

購入前の選定、手順確認、セキュリティ報告、ノードとの紐付けが不要な説明に適しています。メールの件名に問題のカテゴリーを記載し、本文にパスワードや鍵を含めないでください。

support@runnervm.com
テンプレートを整理する場合

まず構造化された説明を作成

お問い合わせページでは、購入前、技術、請求、セキュリティに関する必須情報を案内しています。メール送信前の資料確認に利用できます。

お問い合わせ方法を見る
よくある判断

診断を始める前に境界を確認

以下の回答は、デバイスの引き渡し、接続方法、ビルドタスク、サポート資料を区別し、誤った方向での試行を減らすためのものです。

RunnerVMが提供するのは仮想インスタンスですか?

いいえ。注文に対応する専用物理Mac miniノードで、構成はRunner M4:Mac Mini M4、16GB RAM、256GB SSDです。リモート接続はアクセス方法にすぎず、サービスが共有仮想リソースになることはありません。

VNCを切断してもビルドタスクは続きますか?

タスクの起動方法によります。CI runner、launchd、tmux、独立したバックグラウンドプロセスは通常VNCウィンドウに依存しません。一方、グラフィカルセッションに直接紐付いた対話型タスクはセッション状態の影響を受ける場合があります。本番利用前に一度切断し、プロセス、ログ、終了状態を確認してください。

初回接続前に何を準備すべきですか?

SSHとVNCクライアント、チーム内の認証情報保管方法、プロジェクトが必要とするXcodeバージョン、署名素材の一覧、リポジトリに書き込まない秘密情報管理手順を準備します。引き渡し情報を受け取ったら、まずホストフィンガープリントとデバイスの身元を確認してください。

診断によって注文の請求期間は変わりますか?

自動的には変わりません。Runner M4は日単位、週単位、月単位、四半期単位で注文でき、注文期間と処理状況はコンソールの記録に従います。特定の注文を確認する場合は、コンソールから注文に関連付けたチケットを送信してください。

タスク完了後に何を削除すべきですか?

保持するアーカイブ、成果物、機密情報を除いたログを先にエクスポートし、その後ソースワークスペース、一時署名キーチェーン、プロビジョニングプロファイル、一時公開鍵、アクセストークン、プロジェクトキャッシュ内の機密情報を削除します。平文の認証情報をシェル履歴やスクリプト引数に残さないでください。

どのノードを選べばよいか、どう判断しますか?

まず実際のオフィスネットワークまたはCIの送信元から、対象リージョンへの遅延と経路をテストします。そのうえでチームのタイムゾーンと成果物の転送先を考慮して選択してください。Runner M4はシンガポール、日本・東京、韓国・ソウル、香港、米国東部の5ノードで注文できます。実際の利用可否はコンソールのリアルタイム表示に従います。

次のビルド

検証可能なクラウドMacから始める

Runner M4と対象リージョンを選び、注文完了後、このページの手順に従って接続を確認し、ツールチェーンを準備して、最初の再現可能なビルドタスクを実行します。