初回ログインから初回リリースまで

接続・ビルド・リリース

まずコンソールでインスタンスの準備状況を確認し、専有Mac miniに接続します。コマンドラインでビルドし、GUIで環境を確認。CIで繰り返し作業を自動化しましょう。

利用中のインスタンスは接続情報を確認してください。まだレンタルしていない場合は、注文手続きに進めます。接続情報は公開ページには表示されません。

まずインスタンスの状態を確認

接続方法を選ぶ

コンソールのインスタンス詳細で、インスタンスID、ノード、準備状況を確認します。パブリックアドレス、ユーザー名、ポート、初期認証情報は、対象インスタンスに表示される値を使用してください。他のマシンの情報を流用しないでください。

SSH接続

ビルドコマンドの実行、ファイル転送、ログ確認に適しています。SSHのデフォルトポートは 22です。インスタンスに別のポートが表示されている場合は、その値を使用してください。

インスタンス詳細でホストアドレスとユーザー名を確認します。初回接続時はホストフィンガープリントを確認してから、自分の公開鍵を設定してください。秘密鍵はローカルに保管し、チケットには添付しないでください。

初回ビルドの例を見る

VNCリモートデスクトップ

Xcodeの起動、Simulatorの確認、GUIの設定に適しています。VNCのデフォルトポートは 5900です。接続先、パスワード、実際のポートはインスタンス詳細で確認してください。

接続後、まずデスクトップを操作できることを確認してください。VNCのパスワードをコードリポジトリに使用しないでください。ネットワーク環境が許す場合は、管理された接続またはSSHトンネル経由でアクセスしてください。

GUIのトラブルシューティング

コンソールのブラウザーターミナル

まずコンソールにログインし、インスタンス詳細に表示された接続方法を確認してください。ブラウザーターミナルが利用できる場合は、ブラウザーからHTTPSで接続します。通常は 443番ポートを使用するため、ターミナル用のポートを別途入力する必要はありません。

認証情報はログイン済みアカウントのセッションに紐づいており、誰でも使える公開リンクではありません。この接続方法がインスタンスに表示されない場合は、SSHまたはVNCを使用してください。ターミナルのアドレスを推測して入力しないでください。

インスタンスの接続方法を確認
まず一度成功させてから、パイプラインへ

接続とビルドを分けて確認

まずログインできることを確認し、次にXcodeのパスとバージョンを確認します。以下は出力形式の例であり、インスタンスのリアルタイムログではありません。セッション名、ビルド番号、所要時間は表示箇所を示すためのものです。

merge@tokyo-m4pro-07 ビルド出力の例
$ ssh -p <SSH_PORT> <USER>@<HOST>
Welcome to MergeMac
$ xcode-select -p
/Applications/Xcode.app/Contents/Developer
$ xcodebuild -version
$ cd <PROJECT_DIRECTORY>
$ xcodebuild -scheme App archive
** ARCHIVE SUCCEEDED **
$ fastlane pilot upload
Successfully uploaded Build 214

値を置き換えて実行

山括弧内の値をインスタンス詳細に表示された値に置き換えてください。App はschemeの例です。workspace形式のプロジェクトでは、独自の -workspaceも指定し、schemeが共有されていることを確認してください。

アーカイブ成功とアップロード完了は別

アップロードには有効な署名、エクスポート設定、アップロード認証情報も必要です。この例ではプロジェクトでfastlaneが設定済みであることを前提としています。Build 214は納品完了の証明ではありません。アップロードツールの実際の出力を確認してください。

用途を明確にしてマシンを活用

セルフホストランナーを設定

MergeMacは専有物理ノードを提供します。CIのリポジトリ権限、ジョブ設定、認証情報はお客様が管理します。まず同じ実行ユーザーでターミナルからアーカイブまで成功させてからランナーを登録し、環境の問題をジョブの割り当ての問題と混同しないようにしましょう。

GitHub Actions

  1. 対象リポジトリまたは組織のActionsランナー設定を開き、macOSと対応するApple Siliconアーキテクチャを選択します。
  2. レンタルしたノードで、現在の画面に表示されるコマンドに従ってランナーをダウンロード、検証、登録します。登録tokenは機密情報です。リポジトリやスクリーンショットに記載しないでください。
  3. ラベルを追加します。例: mergemac、macos、m4。workflowの runs-on でこれらのラベルを指定します。
  4. まずXcodeのバージョンだけを確認するジョブを実行し、正しいノードで処理されることを確認してから、依存関係のインストール、アーカイブ、アップロードを追加します。

信頼できない外部からのマージリクエストで、署名素材を保持するランナーを直接使わせないでください。リリース用ジョブと通常の検証ジョブは、別々に権限を設定してください。

GitLab Runner

  1. プロジェクトまたはグループでランナーを作成し、現在の登録手順で必要なサービスURLと認証tokenを取得します。
  2. ノードに対応するアーキテクチャのGitLab Runnerをインストールし、表示された手順に従って登録します。ローカルのXcodeツールチェーンが必要な場合は、適切なShell実行方式を選択してください。
  3. ラベルに macos、xcode などを設定し、ジョブで明示的に指定します。リリース用ランナーを使えるのは、保護されたブランチまたはタグに限ってください。
  4. まず環境確認ジョブを実行し、作業ディレクトリ、実行ユーザー、キーチェーンへのアクセスを確認してから、本番ビルドを有効にします。

tokenの更新時またはレンタル期間の終了前に、CIプラットフォームでランナーの認可を取り消してください。ノード上のファイルを削除しても、プラットフォーム側の認可は自動で取り消されません。

コンソールの用語を理解する

8つの用語をまとめて解説

ここで説明する用語はリソースや接続方法を示します。追加のソフトウェアライセンスを意味するものではなく、複数台のマシンが自動的に1台の高性能なMacに統合されるわけでもありません。

物理ノード
データセンターで個別に割り当てられ、実際のmacOS開発環境を実行するMac miniです。
専有
レンタル期間中、マシン全体のCPU、GPU、ユニファイドメモリ、内蔵ディスクのリソースが1ユーザーに割り当てられます。
非仮想マシン
物理Mac上のシステムを直接利用します。共有ホスト上に作成された仮想インスタンスではありません。
VNC
macOSのGUIをリモートで表示・操作するための接続プロトコルです。
SSH
暗号化されたコマンドラインログイン、コマンド実行、ファイル転送に使う接続プロトコルです。
セルフホストランナー
レンタルしたノードにインストールするCI実行環境です。パイプラインの設定に従ってビルドジョブを実行します。
ユニファイドメモリ
AppleチップのCPUとGPUが共有するメモリです。実際に使用できる容量は、OSや他のプロセスが使う分を差し引いた量です。
Thunderbolt 5による複数台接続
Thunderbolt 5で複数のデバイスを直接接続してマルチマシン環境を検証できます。タスクの分散には、アプリ側の対応が必要です。
証拠を保存してから環境を変更

症状から原因を絞り込む

失敗した時刻とタイムゾーン、インスタンスID、エラー全文、直近の変更を記録します。一度に変更する項目は1つにして、同じ方法で再検証してください。再インストールは最初の手段ではありません。

  1. 01

    VNCの画面が真っ暗・応答しない

    まずコンソールでインスタンスの準備状況を確認し、次にSSH接続を試します。SSHで接続できるのにGUIに問題がある場合は、ログイン・ログアウト中、またはGUIセッションの切り替え中でないか確認し、クライアントを終了してから再接続してください。

    画面が真っ暗なままの場合は、クライアントのバージョンとスクリーンショットを保存してチケットを送信してください。動作確認のためにファイアウォールを無効にしたり、何度も強制再起動したりしないでください。実行中のビルドが中断されるおそれがあります。

  2. 02

    Xcodeのバージョンが一致しない

    次のコマンドをそれぞれ実行します。 xcode-select -p と xcodebuild -versionです。対話セッションとrunnerの両方で確認してください。複数のバージョンをインストールしただけでは、コマンドラインで使うバージョンは切り替わりません。

    個別のジョブでは DEVELOPER_DIR を使って対象XcodeのDeveloperディレクトリを指定できます。マシン全体のデフォルトを変更して他のジョブに影響を与えずに済みます。ディレクトリが存在しない場合は、まずインストール先を確認し、例の名前をそのまま使わないでください。

  3. 03

    Simulatorがディスクを圧迫する

    次のコマンドで df -h 空き容量を確認し、DerivedData、archive、デバイスデータ、Simulator runtimeを調べます。残しておくビルド成果物を先にエクスポートし、Simulatorを使用中のジョブを停止してください。

    xcrun simctl delete unavailable を実行すると、利用できないSimulatorデバイスの記録を削除できます。すべてのruntimeが削除されるわけではありません。削除前に対象を確認し、プロジェクトのディレクトリやキーチェーンに対して再帰削除を実行しないでください。

  4. 04

    署名証明書が無効

    証明書の期限切れ、プロビジョニングプロファイルの無効化、秘密鍵の不足、キーチェーンのロック状態を切り分けます。証明書の有効期限を確認し、チームとbundle identifierが一致することを確かめてから、CIの実行ユーザーが該当する秘密鍵を読み取れるか確認してください。

    証明書を更新したら、プロビジョニングプロファイルと保護された変数も更新し、同じschemeで再検証してください。チケットにはエラーコードと機密情報を伏せたログだけを添付し、秘密鍵、証明書のエクスポート用パスワード、署名素材一式は送信しないでください。

先にバックアップし、再インストールを確認

再インストールで環境は変わります。作業データは保持されません。

OSの再インストールと、レンタル期間終了後のデータ消去は別の処理です。レンタルしたノードを、ソースコード、署名素材、ビルド成果物の唯一の保存先にしないでください。

レンタル期間中のセルフサービス再インストール

コンソールのインスタンス詳細を開き、OS再インストールを実行する前にCIのジョブ割り当てを停止してください。プロジェクト、成果物、必要な設定をエクスポートし、別の場所でバックアップを開けることを確認します。

初期化には通常数分かかります。実際の所要時間と完了状況はコンソールの表示を確認してください。処理中に何度も実行しないでください。完了後は接続情報を再確認し、ホストフィンガープリントを確認してから開発環境を再構築します。

再インストール後はSSH、Xcode、依存関係、runnerを再検証してください。以前のサービス設定がそのまま残っているとは限りません。

期限後のディスク消去

レンタル期間が終了すると、ノードはデータ消去とシステム初期化の工程に進んだ後、次の利用者向けに準備されます。必要なデータは期限前にエクスポートしてください。期限後も接続できることをバックアップ代わりにしないでください。

コードリポジトリのデプロイキー、CI runner token、アップロード用認証情報も忘れずに失効させてください。ディスクの消去でノード内のデータは処理されますが、外部システムのアクセス権限は取り消されません。

データの取り扱いやセキュリティ上の境界について質問がある場合は、まずセキュリティ情報を確認し、コンソールのチケットから対象インスタンスについてお問い合わせください。

次の返信からすぐに調査できるように

サポートに問題を伝える

レンタル中のインスタンスに関する問題は、注文とノードを紐づけて確認できるコンソールのチケットからお問い合わせください。ログインできない場合、レンタル前のご相談、セキュリティ報告はサポートメールにお送りください。同じ問題を複数の窓口から重複して送信しないでください。

コンソールのサポートチケット

ログイン後、チケットページでインスタンスID、影響範囲、再現手順を入力してください。既存の問題をエスカレーションする場合は、同じチケットに情報を追加し、調査記録を一つにまとめてください。

推奨形式:発生時刻とタイムゾーン → 期待する結果 → 実際のエラー → 試した操作。機密情報を伏せた最小限のログを添付し、ソースコード一式はアップロードしないでください。

ログインしてチケットを送信

サポートメール

アカウントにログインできない場合は、メールの件名に問題の種類を記載し、登録メールアドレスと照合に使える注文番号をお知らせください。アカウントのパスワードやカード番号は送信しないでください。

サポートはアジア太平洋地域と米国東部のタイムゾーンを考慮して対応します。最初の返信までの時間は問題の重要度と受付状況によって異なります。進捗はチケットまたはメールの返信をご確認ください。公表されていない平均対応時間はお約束していません。

support@mergemac.com

環境を整えたら、ビルドを任せましょう

利用中のマシンがある場合は、まずコンソールで状態を確認してください。ビルド用ノードを追加する場合は、レンタル構成を選択できます。いずれも専有の物理Mac miniで、仮想マシンではありません。