複数地域でのビルドも、権限を明確に

1台のMacに、1つの責任範囲

Mac miniはデータセンターで運用し、コードと署名資産はチームが管理します。1台のマシンを1人の顧客に貸し出すため、仮想マシンではありません。

夜間のXcodeクラウドビルドを、年中稼働する物理ノードに任せながら、ログインキー、ビルド認証情報、契約終了時のデータ持ち出しをチームの手順に組み込みましょう。専有ハードウェアでリソースを分離できますが、日々のアクセス権限は担当者ごとに明確にする必要があります。

1日単位で利用でき、$19.2/日から。利用開始前に、機器の管理者、アクセスするメンバー、データの持ち出し方法を決めておきましょう。

ハードウェアから分離

顧客間でMacを共有しません

専有の物理マシンにより、顧客ごとに1台まるごと利用できます。他の顧客と同じホスト上の実行リソースや、マシンのストレージを共有する必要はありません。

1台を1顧客に貸し出し

提供するのは物理Mac miniであり、ホストから切り分けた仮想マシンではありません。チップ、ユニファイドメモリ、内蔵ストレージは、利用中の顧客のワークロード専用です。

境界:顧客間でマシンを共有しません。

ストレージを他の顧客と共有しない

リポジトリ、DerivedData、依存関係のキャッシュ、ビルド成果物は、契約期間中マシンに保存できます。ディレクトリ構成や読み書きできるメンバーは、チームで設定してください。

境界:チーム内のファイル権限は別途設定が必要です。

同じチーム内のタスクはリソースを共有

専有マシンでも、タスクごとにリソースが分かれるわけではありません。複数のrunner、シミュレーター、archiveを同時に実行すると、同じマシンのメモリ、CPU、ディスクを使用します。

推奨:ビルドの並列数とタスクキューを設定しましょう。

担当者ごとにアクセス権を設定

キーは個別に発行し、画面共有の認証情報は定期的に更新

SSH / VNCの認証情報を受け取ったら、ソースコードや署名資材を取り込む前に、チーム独自のアクセスルールを整えましょう。アジア太平洋地域と北米のメンバーが交代で使う場合、長期間同じパスワードを使い続ける運用は避けてください。

  1. 01

    SSHは個人用キーで接続

    ログインが必要なメンバーごとに公開鍵を登録し、秘密鍵をチャットで共有しないでください。メンバーが離れたら該当する鍵の許可を削除し、CI用のキーは個人のログイン用キーと分けて管理します。

    パスワード認証を無効にする前に、現在のセッションを維持したまま別のセッションで鍵認証によるログインを確認してください。チームがマシンにアクセスできなくなる事態を防げます。

  2. 02

    VNCパスワードはチームで設定

    初回接続後、チーム専用のVNCパスワードを設定し、コンソールやリポジトリの認証情報と使い回さないでください。メンバーの変更時や、情報漏えいのおそれがある場合は速やかに変更します。

    画面共有は人による確認が必要な操作に使い、自動ビルドにはSSHとrunnerを優先してください。作業後は機密情報を扱うツールからログアウトし、エクスポート用パスワードを画面に表示したままにしないでください。

  3. 03

    必要なサービスだけを有効に

    macOSの共有設定を確認します。プロジェクトで不要なファイル共有、リモートAppleイベントなどの共有サービスをオフにし、実際に利用するリモートログインや画面共有だけを残してください。

    サービスを無効にする前に、依存関係を確認してください。ファイアウォールやリモートアクセスの設定を変更する際は、元の設定を記録し、チームが引き続き管理できる経路を確保します。

引き継ぎでは、マシンのパスワードを変えるだけでは不十分です。リポジトリのトークン、runnerの登録情報、アーティファクトリポジトリの認証情報、署名用ファイルのエクスポートパスワードは、それぞれ別々に権限を管理します。メンバーがプロジェクトを離れるときは、VNCパスワードを変更するだけでなく、項目ごとに確認してください。

署名資産をプロジェクトごとに管理

証明書、秘密鍵、ビルドログを分けて管理

証明書ファイルをコピーできるからといって、すべてのビルドタスクから読み取れるようにする必要はありません。署名資材を独立した資産として扱い、取り込む担当者、使用するキーチェーン、失効または更新のタイミングを明確にしましょう。

証明書とプロビジョニングプロファイル

証明書、対応する秘密鍵、プロビジョニングプロファイルをプロジェクトごとに保管します。取り込む前に用途、有効期限、対象のtargetを確認し、秘密鍵を含むエクスポートファイルをリポジトリにコミットしないでください。

バックアップが必要な場合は、パスワードで保護したファイルにエクスポートし、ファイルとは別の経路でパスワードを共有してください。バックアップはチームが管理する場所に保管し、ビルドマシンだけに置かないようにします。

記録項目:プロジェクト、用途、担当者、有効期限。

専用のビルド用キーチェーン

CIの署名IDは専用キーチェーンに保存し、日常の対話操作用とは分けることをおすすめします。実際のビルド要件に合わせてロック解除とアクセス権を設定し、手間を省くためにすべてのプロセスへ秘密鍵へのアクセスを許可しないでください。

自動化タスクでロック解除が必要な場合は、CIの保護された変数からパスワードを読み込みます。runnerの対象タスクを広げる前に、管理されたビルドで署名を確認してください。

記録項目:キーチェーン、呼び出すタスク、ロック解除方法。

ログと成果物のアクセス範囲

スクリプトでパスワード、トークン、署名用ファイルのエクスポートパスワードを出力しないでください。問題を調査する際は、機密性の高い手順のコマンド展開出力を無効にし、ログをアップロードする前に認証情報が含まれていないか確認します。

archive、エクスポートパッケージ、デバッグシンボルごとに、保存先と保管ルールを設定します。ビルド完了は資産のバックアップ完了を意味しません。チームのストレージから必要な成果物を取得できることを、少なくとも一度は確認してください。

記録項目:成果物の保存先、アクセスするメンバー、保管ルール。

署名IDを確認してからリリースビルドを実行

対象のビルドユーザーで以下の読み取り専用チェックを実行し、想定したコード署名IDがキーチェーンにあることを確認します。出力はローカルでの確認に使い、環境情報全体を公開記録に貼り付けないでください。

security find-identity -v -p codesigning

このコマンドはIDを一覧表示するだけです。証明書の取り込みやキーチェーンのアクセス権設定は行いません。

データセンターとチームで責任を分担

データセンターは電源を管理し、チームはビルド環境を管理

すべてのノードは年間365日稼働します。電源、ネットワーク、冷却はデータセンターが管理するため、夜間のパイプラインをオフィスのMacの電源状態に左右されずに実行できます。

インフラの運用を提供しますが、アプリケーション層の権限管理やバックアップ管理はチームの責任です
管理項目データセンター・プラットフォームの担当チームで対応する項目
物理環境マシンを運用し、電源、ネットワーク、冷却を管理します。インスタンスとプロジェクトの対応関係を確認し、機器の担当者を記録します。
システムアクセスコンソールでマシンのログイン情報を提供します。SSHキー、VNCパスワード、メンバー権限を設定します。
ビルド環境リモート利用できる専有の物理Macを提供します。Xcodeツールチェーン、runner、依存関係、タスクの並列数を管理します。
プロジェクト資産契約終了後、マシンのデータを消去してから引き渡します。コードと署名資産をバックアップし、成果物をエクスポートして、外部システムの権限を取り消します。

年中稼働とはノードの運用体制を指し、ビルドの成功を保証するものではありません。スクリプトのエラー、証明書の失効、ディスク容量不足、チームによるシステム設定の変更は、プロジェクトの運用手順で監視・対応する必要があります。

利用終了前に引き継ぎを完了

資産を持ち出してからマシンを返却

契約終了後、マシンのデータを消去して次の顧客に引き渡します。データ消去でマシン上のデータは整理されますが、リポジトリ、CI、その他のシステムの権限は取り消されません。この2つは別々に対応してください。

  1. 01

    バックアップをエクスポートして検証

    未プッシュのコード、ビルドスクリプト、archive、エクスポートパッケージ、デバッグシンボル、必要な署名資材を取り出します。コピー処理が終わったことだけでなく、ファイルが完全で、別の場所からチームが読み取れることを確認してください。

  2. 02

    外部システムの権限を解除

    CIプラットフォームから該当するrunnerを削除し、使用しなくなったデプロイキーとアクセストークンを失効させます。共有した秘密情報はチームのルールに従って更新してください。マシン上のファイルを消去しても、外部システムが古い認証情報を信頼しなくなるわけではありません。

  3. 03

    利用終了の手続きを確認

    コンソールで契約期間とインスタンス情報を確認します。データのエクスポート順や取り扱いについて調整が必要な場合は、早めに問い合わせてください。期限後のマシンをバックアップ先にせず、利用終了後に唯一のコピーを探すことのないようにしましょう。

支払い情報は別に管理

カード番号は当サイトで保管せず、照合に必要な情報だけを保持

すべて米ドル(USD)で決済します。対応する支払い方法はUSDT-TRC20とVisa / Mastercard / Amex(Stripe)のみです。利用可能な決済手段は、決済時にバックエンドから返される情報をご確認ください。

カード決済はStripeが処理

カード決済情報はStripeが処理し、当サイトではカード番号を保存しません。支払いに関するお問い合わせには注文番号と決済結果をお知らせください。カード番号全桁、セキュリティコード、カードの写真は、問い合わせフォームやメールで送らないでください。

サポートには注文情報をお知らせください。カード情報は送らないでください。

USDT-TRC20はブロックチェーン上の記録で照合

支払い前に、画面に表示されるネットワーク、送金先アドレス、金額を確認してください。照合にはブロックチェーン上の記録を使用します。確認が必要な場合は注文番号とトランザクションハッシュをお知らせください。ウォレットの秘密鍵やリカバリー情報は送らないでください。

トランザクションハッシュを保存し、注文ごとに支払い状況を確認します。

セキュリティ報告、支払いの照合、データの取り扱いに関するお問い合わせは、 support@pushmac.comまでお送りいただくか、コンソールにログインしてチケットを送信してください。最初のお問い合わせには、インスタンス番号、利用ノード、関連する操作、問題が発生した日時とタイムゾーンを記載してください。ログから秘密情報は事前に削除してください。

ビルドマシンをデータセンターに

マシンを1台まるごと専有でき、年間365日稼働。まず権限の管理者を決め、Xcodeビルドをチームのパイプラインに組み込みましょう。