モバイルチームは Bitrise のクラウド macOS と 専用リモート Mac 上のセルフホスト エージェントの間で揺れます。前者は請求とキューの意味が明快ですがスタック境界が固定され、後者は VPS のように機械契約を握れますがシークレットとディスク運用が必須です。読者:プラットフォームエンジニアと iOS リード。課題:分課金、スタック追従、エージェント プール、キーチェーン境界が絡み合うこと。本文の約束:暗黙の前提を 7 つ解体し、四者対照表(GitHub Actions Runner/GitLab Runner と相互参照)、6 ステップのオンボーディング Runbook、FAQ で レンタル料金 と ヘルプセンター へ誘導します。
Bitrise は YAML、ステップマーケット、分単位のダッシュボードを束ねますが、実際の障害は Xcode の指紋・署名境界・ディスク増幅 の交点に集中します。レビューから外すとロゴ論争になります。
セルフホスト=運用ゼロ:エージェントは実行端末に過ぎず、Ruby/Bundler、CocoaPods/SwiftPM、DERIVED_DATA の契約は自社で管理します。依存関係とディスク運用 と揃えます。
クラウド分とリース CapEx が線形に足せる:リリース週のスパイクと夜間アイドルのコアを財務モデルに載せます。常時オンラインの専用ノードはアイドルコストをビルドごとに按分します。
Xcode/スタック更新を軽視:クラウド Job は自動移行する一方、セルフホスト側はカナリア Workflow とロールバック窓が必要です。
署名を個人ノート PC に置く:エンタープライズ証明書と match は専用 CI ユーザーとローテーション Runbook が前提です。Fastlane 無人 CI を参照します。
パス隔離なしで Bitrise と他オーケストレータを同居:エンタープライズビルドプール と同じく、名前のないワークスペースはリリース列車で衝突します。
初回 GUI 依存を過小評価:SSH と VNC のチェックリスト に沿って一度だけ対話セッションを用意し、その後ヘッドレスに戻します。
ネットワーク確認がブラウザ疎通で止まる:安定した外向き通信とコンソール コールバックが要です。TLS インスペクションはワーカーをゾンビ化させ、アプリログには出ません。
共通原因は「CPU レンタル」と見なすことです。ツールチェーン指紋とコンプライアンス境界を持つ本番ノードとして扱ってください。CircleCI/Buildkite も検討中なら CircleCI ハイブリッド と Buildkite Agent で制御面と実行面を分けて読みます。
運用では第二エージェント購入前に キュー深さ P95、Archive E2E の所要分布、週次ディスク増分 を公開します。無ければ混沌を複製するだけです。オフィスの場つなぎノート PC と比べれば、リースした専用ハードは電源・部品・リモートハンズの予測可能性が高く、グレーな仮想化より Apple Silicon 実機は署名と審査リスクを下げます。差分は RFC に書き、チャットに残さないでください。
万能解はありません。ワークフローがリポジトリにどれだけ近いか、分課金を誰が背負うか、macOS 容量が物理的に専用かをレビューで固定します。
| 次元 | Bitrise クラウド macOS | Bitrise セルフホスト(専用リモート Mac) | GitHub Actions セルフホスト | GitLab Runner(shell) |
|---|---|---|---|---|
| 制御面 | Bitrise UI/API とリポ YAML | 同上+エージェント設置パスとプールを明示 | runs-on ラベルと Runner グループ | tags と登録スコープ |
| 課金の捉え方 | Workflow 分+スタック段階 | クラウド分と固定リースの二軌が多い | Actions 分+減価償却 | Runner 同時実行ライセンス+機械 |
| 弾力性 | 並列ステージとマーケットが成熟 | 1 台あたりの CPU/IO 上限が正直 | マトリクスとラベル分割 | resource_group に相当する互斥 |
| 典型用途 | 単体テストや IPA 試作を速く | Archive・企業署名・長統合でディスクを温めたい | GitHub イベント駆動に深く入り込んでいる | GitLab の権限モデルと強結合 |
Bitrise の文脈で「VPS のように Mac を借りる」とは、ワークフロー体験は維持しつつ Xcode・シークレット・NVMe を契約上の専用ホストに閉じ込めることです。
Steps にロックイン済みでも一部ジョブだけディスクと署名領域を予測したい場合、軽検証はクラウドスタック、重ビルドはセルフホスト プールへ Workflow 条件で明示分割します。単にクラウド並列を上げるより、「クレジット待ち」から「自前キュー待ち」へピークが移り、失敗は SSH 可能なホスト近傍に寄ります。
Bitrise・GitHub・GitLab で「誰が署名を変えられるか」「誰がキャッシュを消せるか」を RACI 化しないと、証明書期限の午後に三本のパイプラインが同時にページします。財務比較は 購入対レンタル TCO の前提表を再利用してから Bitrise のスタック切替を議論します。
順序が重要です。まずアカウントとディレクトリ、次にエージェント登録、最後に並列化です。メニュー表記は Bitrise 最新ドキュメントに従い、ここでは工学スケルトンを示します。
専用 macOS CI ユーザーを用意:個人の Apple ID セッションと混ぜない。~/bitrise-ci のような接頭辞を標準化します。
ツールチェーン指紋を固定:xcodebuild -version、Ruby、Bundler をリポジトリ文書に記録します。
ベンダー手順でセルフホスト エージェントをインストール/登録:登録トークンはローテーション秘密として期限とともに Runbook に載せます。
Workflow を正しいスタック/エージェント プールにバインド:既定がクラウド Worker のまま残りがちです。
hello Workflow:checkout と xcodebuild -list でキューからホストまで閉ループを証明します。
同一 Git SHA をクラウド/セルフホストでカナリア:並列を増やす前に差分を見ます。
xcodebuild -version sysctl hw.memsize hw.ncpu df -h / /usr/bin/security find-identity -v -p codesigning
ヒント:システムスリープを無効化し、再起動後も LaunchDaemon/LaunchAgent が生存するか確認します。昼は緑・夜は赤は Bitrise 障害に見えがちです。
閉ループ後は キュー待ち時間 と ホストのディスク水位 に監視を配線します。前者はプール誤バインド、後者はキャッシュ暴走を暴きます。XCTest 並列 と同様、UI テストとコンパイル偏重ジョブは IO プロファイルが異なります。
緑のダッシュボードはアイドル CPU を意味しません。依存解決・コンパイル・署名のスパイクは時間でずれます。mutex ステージやカスタムキューで正直な上限を表現してください。専用リモート Mac は共有ノートや不安定な VM より NVMe 遅延 と キーチェーン連続性 に優れますが、ディスクガードレールなしでは金曜深夜に git/Xcode の半書き込み工件が残ります。
注意:空きディスクがチーム閾値を下回ったらスケジューリングを止め、意図的にクリーンし削除パスを監査ログに残します。
財務は単価だけでなく「リリース週のヒロイク時間削減」と「緊急クラウド分購入の回避」をセットで追います。セルフホストは Bitrise 請求の見え方と引き換えにパッチ、Xcode 更新、エージェント更新を抱えます。純粋自社データセンターは保守を内製化し、リースの専用ホストは多地域ロジを束ねることが多いです。三者を四半期レビューに記録します。
セキュリティ面ではセルフホストが任意のリポジトリスクリプトを実行するため、本番サーバーとして SSH 鍵ローテーション、鍵のみ認証、最小 sudo、ビルド用アカウント分離を行います。再現ビルド指紋 と突き合わせ、ツールチェーン更新ごとにカナリアとロールバック タグを用意します。
閾値はリポジトリ規模と並列方針に合わせて調整します。
借用ノート PC はスリープ方針・OS 更新・電源操作と戦い、グレーな macOS 仮想化は監査に耐えません。Bitrise を慣れたオーケストレーション層に残し、macOS 実行を 専用・常時オン・SSH 親和 のリモートノードへ載せると、パイプラインが「たまに緑」から「契約可能」へ進みます。個人所有のワンオフ機や不透明な共有ホストに対し、NodeMini の Mac Mini クラウドレンタルは SSH 契約・ディスク段階・再現可能な実行プロファイルを明瞭にし、iOS CI/CD と自動化基盤の土台として優れています。SKU は レンタル料金、オンボーディングは ヘルプセンター を参照してください。
本 Runbook を社内のツールチェーン変更レベルにバインドし、Xcode のマイナー/メジャーで承認とキャッシュ失効範囲を分けます。アップグレード当日に全赤でも署名/ディスク境界で説明できない状態を防ぎます。