接続・移行・CI/CD

問題解決の手順:接続確認からパイプライン復旧まで

まず問題が発生している層を特定し、ノード、タイムスタンプ、完全なエラー内容、直近の変更を収集します。ArmMacsクラウドMacのGUI、コマンドライン、Xcode、自ホストRunnerに使える確認手順です。

diagnostic-checklist

01 ノードとモデルを特定

02 ローカルネットワークの状態を記録

03 タイムスタンプ付きで1回再現

04 サニタイズ済みログを収集

05 証拠を問い合わせに添付

GUIとコマンドラインを完全サポート 専用物理ノード、仮想マシンではありません 365日、年間を通じて安定稼働

サポートの振り分け

まず問題の種類で振り分ける

同じ現象でも、ローカルネットワーク、ノードのシステム、ツールチェーン、パイプライン設定が原因の場合があります。最も近いカテゴリを選び、問題が発生したノード、現地時刻とタイムゾーン、エラー全文、直近の成功時刻を記録してください。

エラー全文を残し、「使えない」だけで済ませないでください。ログを提出する前に、パスワード、秘密鍵、アクセストークン、署名素材の内容、リポジトリ内の業務データを削除します。

初回接続

初回接続は4ステップで完了

ネットワーク、認証情報、システム設定を同時に変更しないでください。各ステップの完了後に結果を確認すると、問題の発生箇所を特定できます。

  1. 01

    認証情報を取得して確認

    コンソールで該当する注文を開き、モデル、ノード、接続先、ユーザー名、一時パスワードまたはSSH認証情報を確認します。対象のインスタンスであり、終了済みまたは別リージョンの注文ではないことを確認してください。認証情報は管理対象のパスワードマネージャーだけに保存します。

  2. 02

    ローカルからノードへのネットワークを確認

    まずローカルネットワークの種類、外部接続環境、テスト時刻を記録し、DNS名前解決、接続先への到達性、必要なポートを確認します。社内ネットワークでは失敗し予備回線で利用できる場合は、ノードを繰り返しリセットせず、ローカルのファイアウォール、プロキシ、出口ポリシーを確認します。

  3. 03

    VNCまたはSSHで接続

    GUIが必要な場合はVNCリモートデスクトップを使用し、スクリプト実行、リポジトリ同期、自動化接続にはSSHを優先します。初回接続では短いセッションでキーボード入力、ファイルの読み書き、コマンド実行を確認してから、大容量データの移行や依存関係のインストールを開始してください。

  4. 04

    初期セキュリティ設定を変更

    一時パスワードを直ちに変更し、チームのルールに従ってSSH公開鍵を設定します。認証情報の閲覧範囲を制限し、リモートアクセス設定を確認してください。秘密鍵、証明書パスフレーズ、パイプライントークンを共有スクリプト、ビルドログ、リポジトリファイルに書き込まないでください。

接続時の証拠

接続に失敗したら、少なくとも次の情報を記録

node: SG / JP / KR / HK / US-W
protocol: VNC or SSH
local_network: office / home / mobile
timestamp: YYYY-MM-DD HH:MM timezone
result: timeout / refused / authentication failed
last_success: YYYY-MM-DD HH:MM timezone

移行パス

ローカルMacから再現可能なパイプラインへ

移行はユーザーディレクトリ全体のコピーではありません。プロジェクトデータ、ツールチェーン定義、Runner設定を分けて扱うことで環境差異を抑え、利用期間終了前の完全なエクスポートも容易になります。

PATH 01

プロジェクトデータを移行

  1. 対象範囲を整理リポジトリ、必要なデータセット、設定テンプレート、ビルド入力だけを移行し、無関係なキャッシュはコピーしません。
  2. 容量を計算ソースディレクトリのサイズ、ファイル数、チェックサムを記録し、依存関係とビルド成果物の容量を確保します。
  3. 分割して転送小規模なリポジトリは先に権限と改行形式を確認し、大容量データはディレクトリ単位で分割して転送後に抜き取り確認します。
  4. 秘密情報を分離機密性の高い認証情報は管理された方法で個別に設定し、圧縮ファイル、リポジトリ、通常の同期ディレクトリには含めません。
PATH 02

Xcodeと依存関係を再現

  1. バージョンを固定Xcode、コマンドラインツール、言語ランタイム、パッケージマネージャーのバージョンを記録します。
  2. 依存関係を復元ロックファイルと実行可能なインストールスクリプトを優先し、ローカルのビルドキャッシュを直接コピーしません。
  3. ベースラインビルドを実行最小ターゲットを先に実行し、その後テストと完全アーカイブを実行します。終了コードとログは個別に保存します。
  4. チェックリストを整備バージョン、インストール順、環境変数名、確認コマンドをチームの運用マニュアルに記載します。
PATH 03

CI/CD Runnerを接続

  1. 専用の実行環境を作成パイプラインジョブと日常のリモートデスクトップ操作を分離し、権限とディレクトリの競合を減らします。
  2. 正確なラベルを設定ラベルには少なくともプラットフォーム、チップグレード、Xcodeメジャーバージョンを含め、ジョブの誤割り当てを防ぎます。
  3. 単一同時実行から開始ビルド、テスト、アーカイブ、成果物の返送を確認してから、同時実行の必要性を評価します。
  4. クリーンアップを定義ジョブ終了後に一時認証情報、Derived Data、不要な成果物を削除し、必要なログは保持します。

Xcodeの診断

Xcodeクラウドビルドを層別に切り分け

まずツールチェーンを確認し、次に権限、キャッシュ、ストレージを確認します。同じ再試行でXcodeの更新、依存関係の更新、署名ファイルの交換を同時に行うと、どの変更が効果をもたらしたかログから判断できません。

確認する層 確認する事実 推奨アクション 問い合わせの証拠
バージョン選択 XcodeのGUIバージョン、コマンドラインツールのパス、プロジェクトが要求するSDKが一致しているか 1つのバージョンに固定して最小ビルドを実行し、パイプラインと対話型ターミナルが同じパスを使用していることを確認 バージョン出力、選択パス、失敗したターゲット
署名ファイル ファイルが完全か、期限切れでないか、ターゲットと設定が正しく参照しているか 分離環境でファイルの読み取りを確認し、機密情報をログに書き込まない サニタイズ済みの名前、有効期限、エラー全文
証明書の権限 ビルド実行ユーザーが必要な証明書と鍵素材にアクセスできるか 対話型ビルドとRunnerユーザーの権限環境を比較して差異を絞り込む 実行ユーザー、権限結果、失敗段階
Derived Data 古いキャッシュが別ブランチ、Xcodeバージョン、ビルド設定に由来していないか 失敗ログを1回保存してから対象キャッシュを削除し、同じコマンドを実行して比較 クリーンアップ前後の終了コードとログの差異
ディスク容量 システムボリュームの空き容量、アーカイブディレクトリ、シミュレーターデータ、依存関係キャッシュの使用量 再生成可能なキャッシュと期限切れの成果物を先に削除し、唯一のコピーは削除しない 失敗直前の空き容量と最大ディレクトリ
ビルドログ 最初の実際のエラー、失敗したターゲット、終了コード、前後の文脈が完全か 元のテキストログを保存し、最初のエラー前後の関連行を切り出してサニタイズ コマンド、タイムスタンプ、終了コード、ログ添付ファイル

ログには問題の切り分けに必要な文脈だけを残します。提出前にトークン、パスワード、秘密鍵の内容、証明書パスフレーズ、内部リポジトリURL、業務データを検索して削除してください。

Runner運用ガイド

2種類のRunnerに共通する接続・クリーンアップ基準

ArmMacsは専用物理ノードを提供するため、ジョブディレクトリとツールチェーンをビルド間で保持できます。一方でキャッシュ、認証情報、古い成果物は自動的に消えないため、パイプラインでクリーンアップの範囲を明確に定義する必要があります。

GitHub Actions

自ホストMac Runner

  1. 登録専用Runner IDで登録し、サービス起動後もオンライン表示が継続することを確認します。Runner名とワークディレクトリを記録してください。
  2. ラベルプラットフォームラベルを維持し、チップグレード、Xcodeメジャーバージョン、用途ラベルを追加します。ワークフローは実際に必要なラベルの組み合わせだけに一致させます。
  3. 同時実行まずは1ジョブずつ直列実行します。複数のXcodeアーカイブを同時に実行すると、ディスク、キャッシュ、署名リソースが競合し、偶発的な失敗が増えます。
  4. クリーンアップ各ジョブ終了後に一時認証情報とジョブ単位のファイルを削除します。キャッシュはキーと容量の制限内で保持し、アーカイブの返送成功後に古いローカルコピーを削除します。
GitLab CI

macOS Runner

  1. 登録Runnerの所属範囲と実行方式を明確にし、ビルドユーザーのディレクトリ権限を確認します。登録時刻と設定概要を保存してください。
  2. ラベルmacOS、チップグレード、Xcodeメジャーバージョン、ジョブ種別のラベルを設定し、ラベルのないジョブが専用ノードを誤使用しないようにします。
  3. 同時実行初期同時実行数は1に設定します。ジョブディレクトリ、ポート、キャッシュ、署名素材を完全に分離してから、同時実行数の増加を評価してください。
  4. クリーンアップジョブ終了時にワークディレクトリ内の秘密ファイルと一時成果物を削除します。失敗したジョブもクリーンアップを実行し、サニタイズ済みログは個別に保持します。

リリース前の最小検証マトリクス

checkout ✓ 依存関係の復元 ✓ ビルド ✓ テスト ✓ 成果物のエクスポート ✓ 秘密情報のクリーンアップ ✓

リモートデスクトップ

リモートデスクトップは画面・入力・セッションを分けて確認

VNCの操作感は、ローカルネットワーク、リージョン間の経路、解像度、画面変化の頻度に左右されます。問題が起きたら、まずノードとローカルネットワークの状態を記録し、変数を1つだけ変更して比較してください。

画面の遅延やスクロールの引っかかりを解消するには

ノード、ローカルネットワークの種類、テスト時刻、プロキシの有無を記録します。まずリモートデスクトップの解像度と画質を下げ、変化の多いアニメーションや動画を停止して入力の反映を比較します。予備回線で明らかに改善する場合は、ローカルの出口混雑やポリシーを確認します。同じ時刻に複数のネットワークで同じ症状が出る場合は、ノードとタイムスタンプを添えて問い合わせてください。

解像度が合わない、またはUIの拡大表示がおかしい場合

まず単一ディスプレイ環境で一般的な解像度を設定し、切断後にセッションを再接続します。クライアントの拡大表示とリモート側の表示設定を同時に拡大していないことを確認してください。問題を記録する場合は、クライアントウィンドウのサイズとリモート側の解像度も残します。

ショートカットキーや記号入力が一致しない場合

ローカルとリモートのキーボードレイアウトを確認し、まずテキストエディタで英字、数字、記号、組み合わせキーをテストします。特定のアプリだけで発生する場合はアプリ名とショートカットを記録し、すべてのアプリで異常がある場合は両端のレイアウトとクライアントバージョンを添付します。

セッションが切断されたら、すぐにノードを再起動すべきですか

すぐに再起動しないでください。ローカルネットワークの切り替え、端末のスリープ、VNCの切断中もSSH接続が可能かを確認し、中断時刻を記録します。SSHでアクセスできる場合は、先に作業状態と関連ログを保存してください。両方のプロトコルに到達できない場合は、コンソールから問い合わせます。

再接続前に残すべき情報

ノード、プロトコル、ローカルネットワーク、クライアントバージョン、最終成功時刻、中断時刻、エラー全文を残します。再接続では、ネットワーク切り替えや解像度低下など1つの条件だけを変更して結果を記録し、比較が無効にならないようにします。

ストレージ管理

ストレージ、バックアップ、利用期間終了前のエクスポート

物理ノード上のワークディレクトリはビルドや検証に適していますが、コード、証明書、モデル、ビルド成果物の唯一のコピーにしてはいけません。データ移行、外部バックアップ、最終エクスポートは利用チームがプロジェクト計画に含めて管理してください。

01

移行前に分類

データを、リポジトリから復元できるもの、依存関係ソースから再構築できるもの、必ずバックアップするもの、アップロード禁止のものに分類します。ソースコードの容量だけでなく、プロジェクト、依存関係、Derived Data、アーカイブ、ログの最大容量を見積もってください。

02

スナップショット外部バックアップを作成

重要なコード、証明書、モデル、データセット、最終成果物をチーム管理の外部バックアップ先に保存します。定期的に復元確認を行い、ファイル一覧だけで内容が利用できないバックアップになっていないことを確認してください。

03

機密認証情報を管理

認証情報は最小権限で設定し、手動操作用とパイプライン用を分けます。shell履歴、リポジトリ、通常の環境ファイル、ビルド成果物には書き込まず、ローテーション後は古いコピーを速やかに削除してください。

04

キャッシュの増加を管理

依存関係キャッシュ、Derived Data、シミュレーターデータ、アーカイブの保持ルールを設定します。削除前に再生成可能であることを確認し、容量不足時は期限切れキャッシュと返送済み成果物を優先して処理します。

利用期間終了前

利用期間終了前の作業チェックリスト

  • 未プッシュのコード、データセット、モデル、アーカイブ、テスト結果をエクスポート
  • 外部コピーのファイル数、サイズ、重要なチェックサムを確認
  • Runnerを停止し、パイプラインから該当する実行ノードを削除
  • トークン、SSHキーの認証、仮アクセス認証情報を取り消す
  • ノード上の業務データ、秘密ファイル、不要になったログを削除
  • コンソールで利用期間、更新状況、注文終了時刻を確認

サポートへの問い合わせ

そのまま再現できる問い合わせを1件作成

レンタル中のノードに障害が発生した場合は、まずコンソールにログインして問い合わせを送信してください。コンソールでは問題を注文と関連付けられるため、モデル、ノード、提供状況を確認しやすくなります。コンソールに入れない場合は、 support@armmacs.comまでメールを送信できます。

ticket-evidence.txt
注文番号:
モデル:
ノード:
問題の種類:
発生時刻とタイムゾーン:
最終成功時刻:
再現手順:
期待する結果:
実際の結果:
エラー全文:
直近の設定変更:
ローカルネットワークの状態:
添付:サニタイズ済みログ/スクリーンショット

再現手順は実行可能な形で記載

実際の順序に沿って接続方法、実行コマンド、対象プロジェクト、失敗段階を記載します。毎回発生しない場合は、発生頻度と確認済みの比較条件も説明してください。

タイムスタンプには必ずタイムゾーンを付ける

完全な日付、時、分、タイムゾーンを使用します。「さっき」や「今日」だけでは、ノードのイベントやRunnerログと正確に照合できません。

添付ファイルは先にサニタイズ

スクリーンショットとログに、パスワード、秘密鍵、トークン、証明書パスフレーズ、業務データを含めないでください。エラー全文、終了コード、必要な文脈だけを残します。

診断の準備完了

ノード、タイムスタンプ、ログの準備ができました

コンソールにログインして注文と関連付け、問い合わせを送信してください。請求は米ドルのみで、USDT-TRC20とVisa / Mastercard / Amex(Stripe経由)に対応しています。実際に利用できる決済ゲートウェイはコンソールの表示結果に従います。