Dedicated SaaS デプロイメントをご利用の場合は、macOS VM を有効化するために担当のアカウントチームまでご連絡ください。
仕組み
runs-on フィールドで Devin がビルド・実行するプラットフォームを指定し、プラットフォームごとに個別のスナップショットが作成されます。
Linux との主な違いは、シェル、ファイルシステムのレイアウト、パッケージマネージャーの 3 点です。
macOS セッションの開始
- Blueprint:
runs-on: macosを追加すると、そのリポジトリのスナップショットが macOS 向けにビルドされます (以下を参照) 。 - Slack:
!macバングコマンドを利用して、macOS VM 上でセッションを開始します。 - API: セッション、スケジュール、自動化を作成する際に
platform: "macos"を設定します。API リファレンスを参照してください。
macOS ブループリントの作成
単一プラットフォームのブループリント
runs-on: macos を利用します。
マルチプラットフォーム対応のブループリント
--- で区切った個別の YAML ドキュメントとして記述します。各ドキュメントで独自の runs-on ラベルを宣言します。この形式の詳細については、ブループリントガイドの 複数ドキュメント YAML の補足を参照してください。
runs-on フィールド
runs-on フィールドは、アカウントに登録されている machine config に対応します。
runs-on は文字列またはリストで指定できます。
使用量とコスト
プリインストールされているもの
バージョンは、Apple が新しいリリースを提供しイメージが更新されるのに合わせて変わります。セッションに実際に何が入っているかを確認するには、Devin に次のコマンドの実行を依頼してください。
Xcode のバージョンを選択する
xcode-select が指しているものです。特定のコマンドだけ別のインストール済みバージョンを利用するには、DEVELOPER_DIR を設定してください:
PATH 上にある特定の Xcode の Contents/Developer/usr/bin から解決される xcodebuild は、DEVELOPER_DIR に関係なく自身のバージョンを報告します。そのため、これではなく /usr/bin/xcodebuild (DEVELOPER_DIR を尊重するシム) を利用してください。
あるいは、セッション全体のデフォルトを切り替えることもできます:
macOS でのセッションの動作
Shell
sed -i には引数が必要で (sed -i '') 、gsed、gdate、greadlink といった GNU ツールは Homebrew の coreutils フォーミュラで提供されます。
パス
/Users/devin/repos/<repo-name> にクローンされ、セッションにアップロードしたファイルは /Users/devin/.files/ に書き込まれます。
シークレット
$SECRET_NAME) として利用できます。App Store Connect のAPIキー、署名用の認証情報、非公開レジストリのトークンなどは、この方法で渡します。
セッションのスリープと復帰
Computer Use
iOS シミュレータ
ヒントとコツ
ビルドキャッシュのウォームアップ
environment.yml の maintenance フィールドを利用して、キャッシュを事前にウォームアップしてください。
ネットワークアクセス
コンテナの実行
colima start を再実行してください。起動後、container は CPU 上でネイティブの約 15〜25 倍遅く動作し、それぞれ起動に数秒かかります。pull はホストのネットワーク速度で行われます。リントやパッケージング用の container であれば問題ありませんが、コンパイル用途では厳しいでしょう。container を多用する作業では、Linux セッションを利用するか、macOS セッションからリモートの Docker デーモンを参照するようにしてください。
必要な場合を除き、ブループリントで Xcode をインストールしない
DEVELOPER_DIR や xcode-select で選択できる、イメージに既に含まれているバージョンを優先してください。別のリリースやベータ版が必要な場合は、Apple ID をシークレットとして保存し、ブループリントでそのバージョンをダウンロードさせることもできますが、ビルドは大幅に遅くなります。
制限事項
トラブルシューティング
maintenance に build-for-testing のステップを追加し、ビルド済みの状態をスナップショットに含めてください。
xcodebuild が誤ったツールチェーンを選択する。 xcode-select -p を確認し、ブループリントのステップで DEVELOPER_DIR を明示的に設定してください。
デスティネーションが見つからない。 xcrun simctl list devices available を実行して、インストール済みのランタイムで実際に利用できるデバイスを確認し、-destination の名前と OS をそれに合わせてください。
依存関係の解決がハングする、または TLS エラーで失敗する。 対象のホストが、macOS 向けの組織のネットワークの許可リストに含まれていない可能性があります。ネットワークアクセスを参照してください。
