env={"REGISTRY_TOKEN": "secret:repo:owner/repo:REGISTRY_TOKEN"} のように exec の environment バインドを明示的に指定する必要があります。詳しくは Secrets を参照してください。認証情報をブループリントにハードコードしないでください。クイックスタート
よくあるセットアップ向けの最小構成のブループリントです。1 つをコピーしてブループリントエディタに貼り付ければ完了です。Node.js プロジェクト
Node.js プロジェクト
Python プロジェクト
Python プロジェクト
フルスタック(Node + Python)
フルスタック(Node + Python)
リポジトリのブループリント
リポジトリごとのビルド手順、依存関係管理、Knowledge エントリ。これらは Settings > Environment > Blueprints > [ご利用のリポジトリ] で設定します。Python
- uv(推奨)
- pip + venv
Node.js
- npm
- pnpm
maintenance では npm ci ではなく npm install を利用してください。npm install は差分更新を行いますが、npm ci はコマンドが実行されるたびに node_modules を削除し、すべてを最初から再インストールします。Go
モジュールを使用した標準的なGoのセットアップ。Java
- Gradle
- Maven
Ruby on Rails
PostgreSQL を使用する Rails のセットアップ。Rust
cargo を使った標準的な Rust のセットアップ。モノレポ
- マルチ言語
- 複数の JDK バージョン
非公開パッケージレジストリ
非公開レジストリから依存関係を解決するようにパッケージマネージャーを設定します。設定は Settings > Environment > Blueprints > Org-wide setup で行います (1つのリポジトリでのみ必要な場合はリポジトリ単位で設定) 。Node.js レジストリ
- npm (scoped)
- npm (full mirror)
- pnpm
- Yarn
@myorg/*) は非公開レジストリから取得し、公開パッケージは引き続きデフォルトの npm レジストリから取得するようにします。必要なシークレット
必要なシークレット
GITHUB_PACKAGES_TOKEN—read:packagesスコープを持つパーソナルアクセストークン、または GitHub App トークン
Python レジストリ
- pip / uv
- Poetry
必要なシークレット
必要なシークレット
PYPI_REGISTRY_URL— 必要に応じて認証情報を含む、PyPI インデックスの完全な URL (例:https://user:token@nexus.example.com/repository/pypi-proxy/simple)
source ... && コマンドを maintenance に追加します。URL の認証情報に含まれる特殊文字はパーセントエンコードしてください。JVM 用レジストリ
- Maven
- Gradle
必要なシークレット
必要なシークレット
MAVEN_REGISTRY_URL— Maven レジストリの URL (例:https://artifactory.example.com/artifactory/maven-virtual)REGISTRY_USER— レジストリのユーザー名REGISTRY_PASS— レジストリのパスワードまたは API トークン
その他のレジストリ
Go モジュールプロキシ
Go モジュールプロキシ
必要なシークレット
必要なシークレット
GO_PROXY_URL— Go モジュールプロキシの URL (例:https://athens.corp.internal)
go.mod が参照できるリポジトリブループリントの maintenance にそのコマンドを追加してください。org-wide setup はリポジトリがクローンされる前に実行されるため、そこでは実行しないでください。.NET / NuGet
.NET / NuGet
必要なシークレット
必要なシークレット
NUGET_SOURCE_URL— NuGet フィードの URLNuGetPackageSourceCredentials_private— NuGet の環境変数形式でのフィード認証情報:Username=any;Password=<PAT>(フィードで required なユーザー名を利用してください)
Docker
Docker
必要なシークレット
必要なシークレット
DOCKER_MIRROR_URL(任意) — Docker Hub ミラーの URL (例:https://mirror.corp.internal)DOCKER_REGISTRY_URL— 非公開コンテナレジストリの URL (例:registry.corp.internal:5000)DOCKER_REGISTRY_USER— レジストリのユーザー名DOCKER_REGISTRY_PASS— レジストリのパスワードまたは API トークン
Rust / Cargo
Rust / Cargo
必要なシークレット
必要なシークレット
CARGO_REGISTRY_INDEX— 非公開レジストリのインデックスの URL (例:sparse+https://cargo.corp.internal/api/v1/crates/)CARGO_REGISTRIES_PRIVATE_TOKEN—privateという名前のレジストリ用の認証トークン
cargo:token プロバイダーは、指定した名前のレジストリ用トークンを環境変数から読み取ります。ビルドステップで cargo login を実行しないでください。Ruby / Bundler
Ruby / Bundler
必要なシークレット
必要なシークレット
GEM_SERVER_URL— 非公開 gem サーバーの URL (例:https://artifactory.example.com/artifactory/api/gems/gems-virtual)BUNDLE_ARTIFACTORY__EXAMPLE__COM—artifactory.example.com用のusername:password。変数名は利用する gem サーバーに合わせて変更してください
GEM_SERVER_URL を利用してください。Bundler の認証情報用変数では、ホスト名を大文字にしたものに BUNDLE_ をプレフィックスとして付け、ドットを __ に、ハイフンを ___ に置き換えます。PHP / Composer
PHP / Composer
必要なシークレット
必要なシークレット
COMPOSER_REGISTRY_URL— 非公開ComposerレジストリのURL (例:https://repo.packagist.com/<org>)COMPOSER_AUTH— レジストリホスト向けのJSON形式の認証情報。例:{"http-basic":{"repo.packagist.com":{"username":"<user>","password":"<token>"}}}
COMPOSER_REGISTRY_URL を利用します。AWS CodeArtifact トークンの更新
AWS CodeArtifact トークンの更新
awscli がプリインストール されています。設定が必要なのはトークンの更新とレジストリの構成だけです。必要なシークレット
必要なシークレット
AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEY—codeartifact:GetAuthorizationTokenおよびsts:GetServiceBearerToken権限を持つ IAM 認証情報CA_DOMAIN— CodeArtifact のドメイン名CA_DOMAIN_OWNER— ドメインを所有する AWS アカウント IDCA_REGION— AWS リージョン (例:us-east-1)CA_NPM_REPO、CA_PYPI_REPO、CA_MAVEN_REPO— 各エコシステムのリポジトリ名
source ... && コマンドを後続のビルドステップとして追加してください。取得したトークンはそのシェルの環境内にのみ保持されます。aws codeartifact login、展開済みトークンを使った npm config set、認証情報を含む pip.conf などで永続化しないでください。Enterprise インフラストラクチャ
すべての org とリポジトリに共通して適用されるマシンレベルのインフラストラクチャです。これらは Enterprise Settings > Environments > Blueprint (enterprise-wide の場合) または Settings > Environment > Blueprints > Org-wide setup (org-wide の場合) で設定します。ネットワークと接続
社内CA証明書
社内CA証明書
必要なシークレット
必要なシークレット
CORP_ROOT_CA_B64— 社内 CA の PEM 証明書を Base64 エンコードしたもの。生成方法:cat corp-root-ca.crt | base64 -w0
openssl x509 は解析済みの証明書のみを書き出すため、誤って含まれた秘密鍵がトラストストアにコピーされることはありません。各CA証明書は、次の使用例のように個別に指定してください。複数のCA証明書
複数のCA証明書
必要なシークレット
必要なシークレット
CORP_ROOT_CA_B64— Base64エンコードされたプライマリCA証明書CORP_INTERMEDIATE_CA_B64— Base64エンコードされた中間CA証明書
HTTP/HTTPS プロキシ
HTTP/HTTPS プロキシ
必要なシークレット
必要なシークレット
CORP_HTTP_PROXY— HTTP プロキシ URL (例:http://proxy.corp.example.com:8080)CORP_HTTPS_PROXY— HTTPS プロキシ URLCORP_NO_PROXY— プロキシを経由しないホストのカンマ区切りリスト (例:localhost,127.0.0.1,.corp.example.com)
認証付きプロキシ
認証付きプロキシ
必要なシークレット
必要なシークレット
PROXY_USER— プロキシのユーザー名PROXY_PASS— プロキシのパスワードPROXY_HOST— プロキシのホスト名とポート (例:proxy.corp.example.com:8080)CORP_NO_PROXY— プロキシを経由しないホスト
CA証明書 + プロキシ(併用)
CA証明書 + プロキシ(併用)
必要なシークレット
必要なシークレット
CORP_ROOT_CA_B64— Base64エンコードされた社内CA証明書CORP_HTTP_PROXY,CORP_HTTPS_PROXY— プロキシURLCORP_NO_PROXY— プロキシをバイパスするホスト
VPN接続
VPN接続
必要なシークレット
必要なシークレット
VPN_CONFIG_B64— Base64 エンコードされた OpenVPN 設定ファイル (.ovpn) 。生成方法:cat corp.ovpn | base64 -w0VPN_AUTH_USER(任意) — VPN でユーザー名/パスワード認証が必要な場合の VPN ユーザー名VPN_AUTH_PASS(任意) — VPN パスワード
WG_CONFIG_B64— Base64 エンコードされた WireGuard 設定ファイル。生成方法:cat wg0.conf | base64 -w0
curl コマンドは、トンネルを必要とする実際の作業に置き換えてください。設定には必要な証明書とキーをインラインで含め、dev tun0 を利用する必要があります。永続的な VPN サービスは有効化しないでください。WG_CONFIG_B64 を利用できる状態で明示的に実行し、curl コマンドを実際の操作に置き換えてください:maintenance に移しただけでは、一時的なものにはなりません。アクティブな tunnel や非公開の VPN 設定をスナップショットに含めないでください。カスタムDNS名前解決
カスタムDNS名前解決
アイデンティティとセキュリティ
GPGコミット署名
GPGコミット署名
必要なシークレット
必要なシークレット
GPG_PRIVATE_KEY_B64— Base64 エンコードされた GPG 秘密鍵。生成方法:gpg --export-secret-keys <key-id> | base64 -w0GPG_SIGNING_KEY— 署名鍵の完全なフィンガープリントGIT_USER_NAME— Git の作成者名 (例:Devin AI)GIT_USER_EMAIL— Git の作成者メールアドレス。GPG キーの UID と一致している必要があります。一致しない場合、GitHub は署名を検証しません。
Git アイデンティティと SSH キー
Git アイデンティティと SSH キー
必要なシークレット
必要なシークレット
GIT_USER_NAME— Git の作成者名GIT_USER_EMAIL— Git の作成者メールアドレスSSH_PRIVATE_KEY_B64— Base64 エンコードされた SSH 秘密鍵。生成方法:cat ~/.ssh/id_ed25519 | base64 -w0SSH_KNOWN_HOSTS_B64— Base64 エンコードされた known hosts の項目。サーバー管理者が公開しているホストキーのフィンガープリントと照合して検証済みのもの
システム構成
システムパッケージ
システムパッケージ
カスタム環境変数
カスタム環境変数
$ENVRC に書き込まないでください。推奨される方法は、KEY=VALUE 形式の行を $ENVRC ファイルに書き込むことです。$ENVRC に書き込まれた変数は、以降のすべてのステップと Devin セッションで自動的にエクスポートされます (GitHub Actions の $GITHUB_ENV と同様です) 。ロケールとタイムゾーン
ロケールとタイムゾーン
リソース制限(ulimits)
リソース制限(ulimits)
APTミラーの変更
APTミラーの変更
必要なシークレット
必要なシークレット
APT_MIRROR_URL— 内部 APT ミラーの URL (例:https://artifactory.example.com/artifactory/ubuntu-remote)
高度なパターン
direnv を使った環境変数の管理
direnv を使った環境変数の管理
.envrc ファイルを作成するには initialize を利用します。direnv がそれらを自動的に読み込みます。.envrc の変数は自動的に読み込まれます。手動で source する必要はありません。リポジトリごとのNodeバージョン切り替え
リポジトリごとのNodeバージョン切り替え
.nvmrc を使って、リポジトリごとに Node.js のバージョンを切り替えるには、nvm (プリインストール済み) を利用します。nvm use はリポジトリのルートにある .nvmrc を読み取ります。リポジトリに .nvmrc があることを確認してください (例: 20 を含むもの) 。ブラウザでの認証 (Playwright)
ブラウザでの認証 (Playwright)
localhost:29229 の CDP エンドポイントを備えた Chrome ブラウザを利用できます。Playwright スクリプトを利用して、ブラウザベースのログインを自動化してください。scripts/login.py) :カスタムのシステムツールとPATH
カスタムのシステムツールとPATH
initialize でシステムパッケージやカスタムバイナリをインストールし、PATH を設定します。ツールセットアップ用のGitHub Actions
ツールセットアップ用のGitHub Actions
initialize セクション内で直接実行できます。これにより、CI で利用しているのと同じアクションを使って、特定のバージョンのツールをインストールできます。setup-node や setup-python などのアクションは、PATH と環境変数を変更します。あるアクションでインストールされたバイナリは、後続のすべてのステップと maintenance で利用できます。Node.js アクションと Composite アクションはサポートされています。Docker アクションは Linux ビルドでのみサポートされます。uses ステップは maintenance では実行できません。GitHub Actions の制限事項を参照してください。複数アプリ向けローカル HTTPS リバースプロキシ
複数アプリ向けローカル HTTPS リバースプロキシ
app.example.com、api.example.com、admin.example.com のような実在しそうなホスト名で、複数のサービスを HTTPS 経由で公開できます。initialize で 1 つのリバースプロキシをインストールし、各ホスト名をそれぞれ異なるローカルのアップストリームポートにルーティングします。Caddy は、ルーティングとローカル TLS を 1 つのツールでまとめて処理します。Caddyfile では各ホスト名をアップストリームに対応付け、tls internal は Caddy に組み込まれた CA から、ホスト名ごとに信頼された証明書を自動発行します。caddy trust はその CA ルートをシステムのトラストストアにインストールし、同じルートを NSS データベースにも追加すると、ブラウザでも受け入れられるようになります。Caddyfile はブループリントエディタの File attachments セクションからアップロードしてください。アップロードすると、$FILE_CADDYFILE として利用できるようになります。/etc/hosts ループによって、セッション内では app.example.com が 127.0.0.1 に名前解決されます。Caddyfile に記述する各ホスト名について、/etc/hosts ループにもエントリを追加してください。フルスタックの使用例
これらの使用例では、Enterprise と org レベルの設定がどのように組み合わさるかを示しています。実際には、これらはスコープごとに分けて扱うのが一般的です。ここでは参考用にまとめて示しています。Enterprise向けのフルスタック(Artifactory)
Enterprise向けのフルスタック(Artifactory)
必要なシークレット
必要なシークレット
CORP_ROOT_CA_B64— Base64 エンコードされた社内CA証明書CORP_HTTP_PROXY— HTTP プロキシ URLCORP_HTTPS_PROXY— HTTPS プロキシ URLCORP_NO_PROXY— プロキシをバイパスするホスト
ARTIFACTORY_USER— Artifactory のユーザー名ARTIFACTORY_TOKEN— Artifactory API トークンまたはパスワードARTIFACTORY_MAVEN_URL— Maven リポジトリ URL (例:https://artifactory.example.com/artifactory/maven-virtual)ARTIFACTORY_PYPI_URL— PyPI リポジトリ URL (例:https://user:token@artifactory.example.com/artifactory/api/pypi/pypi-virtual/simple)ARTIFACTORY_NPM_URL— npm リポジトリ URL (例:https://artifactory.example.com/artifactory/api/npm/npm-virtual)ARTIFACTORY_DOCKER_URL— Docker レジストリ URL (例:artifactory.example.com)
- アカウント全体で共通 (
initialize) : 証明書とプロキシ - 組織全体 (
initialize): 言語ランタイムのインストール - 組織全体 (
maintenance): リテラル参照を含むレジストリ設定 - セッションコマンド: シークレットを明示的に指定し、環境設定を source で読み込み、個々の Docker 操作ごとにログインする
異なるレジストリを利用する多言語構成
異なるレジストリを利用する多言語構成
必要なシークレット
必要なシークレット
NEXUS_MAVEN_URL— Nexus Maven リポジトリ URLNEXUS_USER— Nexus のユーザー名NEXUS_PASS— Nexus のパスワードGITHUB_PACKAGES_TOKEN—read:packagesスコープを持つ GitHub パーソナルアクセストークンARTIFACTORY_USER— Artifactory のユーザー名ARTIFACTORY_TOKEN— Artifactory API トークン
非公開ミラー付きエアギャップ環境
非公開ミラー付きエアギャップ環境
必要なシークレット
必要なシークレット
CORP_ROOT_CA_B64— Base64 エンコードされた社内CA証明書
APT_MIRROR_URL— 内部 Ubuntu APT ミラーの URLMIRROR_USER— ミラー認証用のユーザー名MIRROR_PASS— ミラー認証用のパスワードJDK_TARBALL_URL— 内部ミラーから JDK tarball をダウンロードするための URLNODE_TARBALL_URL— 内部ミラーから Node.js tarball をダウンロードするための URL
INTERNAL_MAVEN_URL— 内部 Maven レジストリの URLINTERNAL_NPM_URL— 内部 npm レジストリの URLINTERNAL_PYPI_URL— 内部 PyPI レジストリの URL
VPN + 証明書 + プロキシ + 言語
VPN + 証明書 + プロキシ + 言語
必要なシークレット
必要なシークレット
VPN_CONFIG_B64— Base64 でエンコードされた OpenVPN 設定ファイル
CORP_ROOT_CA_B64— Base64 でエンコードされた社内CA証明書CORP_HTTP_PROXY— HTTP プロキシ URLCORP_HTTPS_PROXY— HTTPS プロキシ URLCORP_NO_PROXY— プロキシを経由しないホスト
MAVEN_REGISTRY_URL— Maven レジストリ URLNPM_REGISTRY_URL— npm レジストリ URLPYPI_REGISTRY_HOST— PyPI レジストリのホスト名REGISTRY_USER— レジストリのユーザー名 (Maven と pip 用)REGISTRY_PASS— レジストリのパスワード (Maven と pip 用)REGISTRY_TOKEN— npm 認証トークン
VPN_CONFIG_B64 にはインラインの証明書/キーを含め、dev tun0 を利用し、対話的な認証なしで接続できる必要があります。ランタイムのダウンロードは 1 つのトンネルライフサイクル内で実行され、プロキシ環境を明示的に読み込みます。セッションでの操作については、ネットワークと接続性 にある VPN のセットアップ/クリーンアップブロックを繰り返してください。ブループリントはセッション開始時に VPN を再接続しません。良い ブループリント を書くためのヒント
- まずセッションでコマンドをテストする。 ブループリント に追加する前に、Devin のセッションでコマンドを手動で実行してください。フルビルドを待つより、そのほうが速く済みます。
- 一度だけインストールするツールには
initialize、依存関係にはmaintenanceを利用する。 インストールに数分かかるもの (コンパイラ、大きなバイナリ、グローバルツール) はinitializeに入れます。短時間で終わる依存関係コマンド (npm install、uv sync) はmaintenanceに入れます。 maintenanceコマンドは高速に保つ。 2 分以内を目安にしてください。これらはビルド中に実行され、セッション開始時にエージェントに提示されます。- シークレット以外の環境変数には
$ENVRCを利用する。 認証情報や、そこから 由来 する トークン を$ENVRC、.bashrc、.profileに書き込まないでください。シークレット に依存するシェル設定は、それを必要とするコマンド内で明示的に読み込んでください。 - ステップには名前を付ける。
nameフィールドを使う expanded form にすると、ビルドログ内の失敗箇所を特定しやすくなります。 - モノレポ では サブシェル を利用する。
(cd packages/foo && npm install)は サブシェル 内で実行されるため、後続のステップはディレクトリ変更の影響を受けません。 npm ciではなくnpm installを利用する。npm ciはnode_modulesを削除し、ゼロから再インストールするため、maintenanceには不向きです。- 機密性の高い値には repo secrets を利用する。 ブループリント に直接書き込むのではなく、リポジトリのブループリントエディタの Secrets タブで設定してください。

