原因を絞って解決

ビルドを止めないために

接続、ツールチェーン、署名、料金の問題を確認できます。まずは以下のコマンドと注意点をチェックし、解決しない場合はノード情報と個人情報を伏せたログを添えてサポートにお問い合わせください。

ご利用中のノードについては、インスタンスや請求情報を確認できるよう、ご注文のアカウントからお問い合わせください。

問題が起きた段階から確認

問題が発生した工程から確認を始めましょう。パイプライン全体を変更する前に、最小限の再現タスクが成功するかを確認してください。

アカウントと料金

注文に紐づくメールアドレス、利用期間、請求状況を確認します。更新前にインスタンスと期間を確認し、支払い後はコンソールの結果をご確認ください。

接続とリモートデスクトップ

まず、SSHに接続できない、認証に失敗する、画面共有に接続できない、のどれかを確認します。具体的なエラーを記録し、チケットにログインパスワードを貼り付けないでください。

Xcodeと署名

現在のDeveloperディレクトリを確認してから、証明書の秘密鍵、プロビジョニングプロファイル、Targetを確認します。ツールチェーンと署名の問題は個別に検証してください。

CI/CD連携

runnerの実行ユーザー、ラベル、作業ディレクトリを確認します。手動タスクが成功してから、自動実行と認証情報の設定に進みましょう。

データと再インストール

ソースコード、キャッシュ、秘密鍵を分けて管理します。再インストール前に必要なデータをノード外へバックアップし、実際に復元できることを確認してください。

コマンドで確認

ビルド環境のよくある質問

以下のパス、Scheme、プロジェクト名はコマンド例です。実行前にご自身のプロジェクト情報に置き換えてください。権限や証明書に関わる操作は、まずテストタスクで確認してください。

xcode-selectで複数のXcodeを切り替えるには?

現在のDeveloperディレクトリとバージョンを確認し、使用するXcodeがインストールされていることを確認します。以下の例では、システムのデフォルトディレクトリを /Applications/Xcode.appに切り替えます。別のバージョンを使う場合は、実際のアプリケーションパスに置き換えてください。

xcode-select -p
xcodebuild -version
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
xcodebuild -version
xcrun --find swift

システム全体の切り替えは、その後に起動するほかのタスクにも影響します。パイプラインごとに異なるバージョンを使う場合は、タスク環境で DEVELOPER_DIRを設定し、複数のジョブからグローバルなディレクトリを何度も変更しないようにしてください。

DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
xcodebuild -list -workspace MyApp.xcworkspace

切り替え後、Schemeを一覧表示してからArchiveを実行します。プラットフォームコンポーネントが不足している場合や初回設定が必要な場合は、macOSのGUIで該当するツールチェーンを初期化してから、自動化タスクを再開してください。

配布証明書とプロビジョニングプロファイルを読み込むには?

秘密鍵を含む証明書の書き出しファイル、そのパスワード、アプリの識別子と配布方法に合ったプロビジョニングプロファイルを用意します。証明書だけで対応する秘密鍵がない場合、通常はコード署名できません。

  1. ビルドタスクを実行するmacOSユーザーで「キーチェーンアクセス」を開き、そのユーザーのキーチェーンに証明書を読み込みます。
  2. 証明書を展開し、対応する秘密鍵が表示されることを確認します。以下のコマンドで、有効なコード署名IDを確認できます。
  3. 使用するXcodeのバージョンに応じた方法でプロビジョニングプロファイルをインストールし、プロジェクトの署名設定でTeam、Bundle Identifier、配布方法を確認します。
  4. App、Widget、Extensionそれぞれの署名設定を確認してから、Archiveと書き出しを検証します。
security find-identity -v -p codesigning

CIの実行ユーザーとリモートデスクトップのユーザーでは、キーチェーン環境が異なる場合があります。無人ビルドでは、ジョブ内でキーチェーンのロックを解除し、必要なアクセス権を設定してください。パスワードはCIの保護された変数から読み込み、リポジトリやコマンド出力、チケットに記載しないでください。

手動ビルドは成功するのにCIで失敗する場合は、まず実行ユーザーとキーチェーンの状態を比較してください。署名エラーについて問い合わせる際は、証明書の種類、有効期限、個人情報を伏せたエラー行だけをお送りください。秘密鍵や証明書のパスワードはアップロードしないでください。

システムを再インストールすると、ノードのデータは残りますか?

再インストールしてもファイルが残るとは限りません。システムや作業ディレクトリが消去される場合があります。依頼する前にコンソールのチケットで作業範囲を確認し、ノード外にバックアップしてください。利用期間終了後はノードのディスクが消去されるため、期限後のノードを復元元にすることはできません。

バックアップには、未プッシュのソースコード、ビルド設定、必要な成果物、プロビジョニングプロファイル、保護された秘密鍵を含めてください。DerivedDataや依存関係のダウンロード先などのキャッシュは再生成できますが、復元後の初回ビルドに時間がかかる場合があります。

バックアップを取っただけでは、復元できるとは限りません。別のディレクトリにバックアップを展開し、ファイル数と重要な設定を確認して、最新の成果物を取り出せることを確かめてから、元のノードのタスクを停止してください。再インストール後はツールチェーンを入れ直し、署名環境を復元してrunnerを登録します。

利用期限前に更新するには?

注文に紐づくアカウントにログインし、コンソールでインスタンス、期限、選択できる更新期間を確認してから、画面に表示された請求に従ってお支払いください。更新の完了と新しい利用期間は、コンソールに表示される最新の結果で確認してください。支払い画面のスクリーンショットや、ブラウザーを閉じる前の表示だけで判断しないでください。

お支払いはUSDT-TRC20、Visa、Mastercard、Amex(Stripe)に対応しており、すべて米ドルで決済されます。実際に利用できる決済手段は、バックエンドから返される情報をご確認ください。暗号資産で支払う場合は、送金前にネットワーク、金額、送金先を確認してください。カード決済後はコンソールに戻り、請求状況をご確認ください。

請求情報とインスタンスの状態が一致しない場合は、注文番号、請求番号、取引参照情報を添えてお問い合わせください。状態を直そうとして支払いを繰り返したり、チケットにカード番号全桁を記載したりしないでください。期限前に成果物や必要なファイルをバックアップし、更新をデータのバックアップ手段として扱わないようにしてください。

SSHやリモートデスクトップに接続できないとき、まず何を確認すればよいですか?

まずコンソールでノードのアドレス、ポート、ユーザー名、インスタンスの状態を確認します。接続タイムアウトと認証失敗を区別してください。タイムアウトの場合はネットワーク到達性を、認証失敗の場合はユーザー名、パスワード、鍵を確認します。SSHとVNCでは接続情報が異なるため、ポートを混同しないでください。

ssh -v -p PORT USER@HOST

を実際の情報に置き換えてください。 PORT、USER、HOST ログにホストフィンガープリントの変更が表示された場合は、信頼できるコンソール情報またはチケットで理由を確認してください。ホスト認証をすぐに無効にしないでください。

リモートデスクトップはmacOSのGUI、キーチェーン、Xcodeの設定確認に適しています。SSHはコマンドライン操作やCIに適しています。ログを送る前に、ユーザー名、アドレス、ローカルパスに含まれる機密情報を削除し、エラーの種類と発生順だけを残してください。

self-hosted runnerを登録したのに、ジョブが待機中のままなのはなぜですか?

次の4点を確認します。runnerがオンラインか、ジョブのラベルが一致しているか、プロジェクトでそのrunnerの使用が許可されているか、プロセスが正しいユーザーで実行されているか。登録が完了しても、すべてのジョブが自動的にそのノードへ割り当てられるわけではありません。

まずツールチェーン情報だけを出力するテストジョブを実行し、実行ユーザー、ディレクトリ、Xcodeのバージョンを確認します。その後、依存関係のインストールと署名の手順を追加してください。

whoami
pwd
xcode-select -p
xcodebuild -version
security find-identity -v -p codesigning

ラベルにはmacOS、チップのアーキテクチャ、用途を記載し、プロジェクト設定で明示的に選択してください。初回は同時実行を1つに制限し、キャッシュ、キーチェーン、成果物のディレクトリが互いに上書きされないことを確認してから、同時実行数を増やします。登録トークンは認証情報です。チケットやビルドログに記載しないでください。

プロジェクトはコンパイルできるのにArchiveが失敗します。原因を絞るには?

正しいworkspace、共有Scheme、Release設定を使っていることを確認します。Archiveとシミュレーター向けビルドでは手順が異なります。実機向けの署名、アーキテクチャ、書き出し設定は個別に確認してください。

xcodebuild -list -workspace MyApp.xcworkspace
xcodebuild archive \
  -workspace MyApp.xcworkspace \
  -scheme MyApp \
  -configuration Release \
  -destination 'generic/platform=iOS' \
  -archivePath build/MyApp.xcarchive

最後の「失敗」という結論だけでなく、最初に発生した具体的なエラーと前後のログを残してください。依存関係のインストール、スクリプトの実行、署名、ディスクへの書き込みを個別に確認します。Archiveが成功しても、書き出した成果物を検証してください。アーカイブの完了は、配布可能なパッケージの作成完了を意味しません。

ディスク容量が不足しています。キャッシュをすべて削除しても大丈夫ですか?

まずディスク使用量とタスクの状態を確認し、再生成できるキャッシュと保持が必要な成果物を区別してください。実行中のジョブが使用しているディレクトリは削除しないでください。ソースコード、署名関連データ、未アップロードのArchiveもキャッシュとして扱わないでください。

df -h
du -sh ~/Library/Developer/Xcode/DerivedData
du -sh ~/Library/Developer/Xcode/Archives

キャッシュと成果物には、それぞれ別の保持ルールを設定してください。削除後は初回のコンパイルや依存関係の解決に時間がかかる場合があるため、次のビルドはコールドスタートの検証として扱いましょう。長期的に容量が不足する場合は、プロジェクトと成果物の増加量を確認し、適切なマシンやSSDオプションを選択してください。

チケットで使う用語を統一

リソース、接続、ビルド、署名でよく使う8つの用語を解説します。対象を具体的に記載すると、確認のやり取りを減らせます。

物理ノード
macOSが稼働する実際のMac miniです。XCRentでは仮想マシンではなく、専有の物理マシンを提供します。ノード情報はインスタンスの特定に使用し、プロジェクトのCIジョブ番号とは区別してください。
専有
利用期間中、1台の物理ノードを1人の利用者が使用します。同じ利用者の複数のジョブはCPU、メモリ、ディスクを共有するため、並列実行やディレクトリの分離はご自身で管理してください。
VNC
macOSのGUIを操作するためのリモートデスクトップ接続方式です。Xcodeの設定、キーチェーン、システムの状態確認に適しています。実際の接続先と認証情報は、ログイン後にコンソールで確認してください。
SSH
コマンドの実行、ファイル転送、自動化のデプロイに適した暗号化通信方式です。鍵認証では秘密鍵を安全に保管し、接続先の本人確認を行ってください。リモートデスクトップ用のプロトコルではありません。
self-hosted runner
自分のノードに配置するCI実行プロセスです。プロジェクトのジョブを受け取り、指定されたユーザーとして実行します。オンライン状態、ラベル、権限、作業ディレクトリによってジョブが実行できるかどうかが決まります。
Archive
Xcodeで作成するアーカイブ済みビルド成果物です。後続の書き出しに使うアプリの内容や関連情報が含まれます。Archiveの成功は書き出しの成功を意味しないため、署名と配布設定を引き続き確認してください。
プロビジョニングプロファイル
アプリの識別子、機能、証明書、配布範囲を定める署名ファイルです。Targetの設定と一致している必要があり、配布証明書と対応する秘密鍵の代わりにはなりません。
ユニファイドメモリ
Apple SiliconでCPUとGPUが共有するメモリです。コンパイル、シミュレーター、モデル関連のタスクを同時に実行する場合は、全体のメモリ負荷を確認し、容量を特定のジョブだけに割り当てないようにしてください。
稼働率と補償

月間の基準を確認し、ビルド失敗とサービス停止を区別

ノードは年間365日稼働します。サービスの稼働状況とプロジェクトのビルド結果は分けて確認してください。証明書の期限切れ、プロジェクト設定の誤り、利用者側の操作による失敗は、それだけでノードの停止を意味するものではありません。

月間稼働率の保証

99.9%

月間稼働率が保証値を下回った場合は、未達時間に応じて利用期間を補償します。申請時にインスタンス、影響を受けた時間帯、接続記録をお知らせください。サポート担当者がサーバー側の記録と適用範囲を確認します。

過去90日間の記録について

このページにはノードの監視記録が連携されていないため、日ごとの稼働状況は表示しておらず、保証値を実測結果として掲載していません。実際のイベント記録はコンソールのチケットからご確認ください。

確認対象期間
過去90日間
このページのデータ状況
監視記録は未連携
補償の算定期間
月ごとに確認

記録しておく情報

異常の発生時刻と復旧時刻をタイムゾーンとともに記録し、接続エラー、再試行の結果、影響を受けたインスタンスを保管してください。不可抗力や利用者側の操作などの対象外事項は、サービス条件に基づいて確認します。パイプラインの失敗画面だけを送ったり、ローカルネットワークの切断時間からノードの停止時間を推定したりしないでください。

調査をすぐに始められるチケットを送信

ご利用中の方はコンソールからチケットを送信してください。導入前のご相談、商談、セキュリティ報告は、次のメールアドレスへお送りください: support@xcoderent.comこの2つの窓口ですべてのお問い合わせを受け付けています。

  1. 01

    インスタンスを明記

    注文番号、ノードの設置都市、マシンのモデルをお知らせください。ノードはシンガポール、東京、ソウル、香港、米国東部、米国西部にあります。モデルはXR Build 16、XR Build 24、XR Build Pro 64のいずれかを記載し、「あのビルド機」のような曖昧な表現は避けてください。

  2. 02

    症状を説明

    どの手順で、いつから失敗しているか、現在も続いているかを記載してください。直近でXcodeの切り替え、署名の変更、runnerの設定変更を行ったかもお知らせください。記録の照合ができるよう、時刻にはタイムゾーンを添えてください。

  3. 03

    再現に必要な情報を添付

    機密情報を伏せたコマンド、最初に発生した具体的なエラー、すでに試した確認内容をお送りください。秘密鍵、ログインパスワード、登録トークン、カード情報全桁は送信しないでください。ログに含まれる機密性の高いパスも事前に削除してください。

  4. 04

    影響範囲を明記

    単一プロジェクトの失敗、すべてのジョブの失敗、ノードへの接続失敗を区別してください。ほかに実行できるタスクがある場合は、成功したものと失敗したものを記載すると、ツールチェーン、プロジェクト、インスタンスのどこに問題があるか判断しやすくなります。

対応状況はどこで確認できますか?

チケットの進捗、追加情報の依頼、対応内容への返信はコンソールで確認できます。確認前の分単位の対応時間はお約束していません。納期や復旧の見込みが必要な場合は、業務上の期限をチケットに記載してください。サポート担当者が実際の状況に応じて確認します。同じ内容のチケットを重複して送信しても、調査に必要な情報は増えません。元のチケットに記録を追加してください。

お探しの情報が見つかりませんか?

ビルドキュー、利用期間、具体的なエラーについてお知らせください。お問い合わせページでは、ご相談内容のまとめ方を案内しています。ご注文済みのサービスについては、コンソールからお問い合わせいただくと調査記録を一元管理できます。