メインコンテンツへスキップ
これを手作業で記述する必要はありません。 環境を設定する最も簡単な方法は、Devinのセッションを開始し、リポジトリの設定を依頼することです。Devinがプロジェクトを解析し、依存関係をインストールしたうえで、設定案を提示します。あとはタイムラインの提案カードで Approve をクリックします。 このガイドは、Devinが生成した内容を理解したい場合、カスタマイズしたい場合、または設定を一から作成したい場合に向けたものです。

Devin の環境の仕組み

Devin は専用の VM 上で動作します。各セッションは、マシンイメージ (ツール、リポジトリ、dependencies があらかじめインストールされた保存済みの スナップショット) から起動します。Settings > Devin’s Environment で環境設定を編集することで、そのイメージに何を含めるかを制御できます。

設定の記述

environment.yaml は 3 つのセクションで構成されています。
Section目的実行されるタイミング実行されるか
initializeツールをインストールし、依存関係をコンパイルするビルド 時のみ — 結果はマシンイメージに保存されますはい
maintenance依存関係を最新の状態に保ち、認証情報の設定を作成するビルド 時 + 各セッションの開始時はい
knowledge環境設定に関連する簡単なメモ (例: lint/test コマンド)セッション開始時に読み込まれますいいえ — 参照用メモのみ

initialize — 1回限りのセットアップ

時間がかかる処理や、一度だけ実行すればよい処理には initialize を利用します。たとえば、パッケージマネージャーのインストール、グローバル CLI ツールのインストール、ネイティブ依存関係のコンパイル、システムパッケージの追加などです。 結果はマシンイメージに保存され、セッション開始時に再度実行されることは ありません
initialize: |
  curl -LsSf https://astral.sh/uv/install.sh | sh
  npm install -g pnpm
複数行文字列は set -e を付けた 1 つの bash スクリプトとして実行されるため、どこか 1 行でも失敗するとビルドは停止します。行継続には \ を利用するか、ビルドログに個別に表示される名前付きステップのために展開形式に切り替えてください。
シークレット ファイルは、マシンイメージが保存される前に削除されます。initialize 内のコマンドがシークレット値を設定ファイルに書き込むと (例: 認証トークンを .npmrc に書き込む) 、その値がイメージ内に残ってしまう可能性があり、セキュリティリスクになります。認証情報を書き込む処理は、代わりに maintenance に配置してください。maintenance では、シークレット が各セッションごとに新たに読み込まれます。

展開形式

名前付きステップが必要な場合は、リスト形式を利用します。名前付きステップにすると、ビルドログのデバッグがしやすくなります。何かが失敗したとき、単なる行番号ではなく、どのステップで失敗したのかがわかります。
initialize:
  - name: Install uv
    run: curl -LsSf https://astral.sh/uv/install.sh | sh
  - name: Install system packages
    run: |
      sudo apt-get update -qq
      sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq libpq-dev ffmpeg
名前付きステップと名前なしステップは混在させることができます。run のないステップはスキップされます。

環境変数の設定

後続のステップで使用する環境変数を設定するには、KEY=VALUE 形式の行を $ENVRC ファイル (GitHub Actions の $GITHUB_ENV と同様) に書き込みます。$ENVRC に書き込まれたすべての変数は、後続のステップと Devin セッションに対して自動的にエクスポートされます。
initialize:
  - name: Configure environment
    run: |
      echo "NODE_ENV=production" >> $ENVRC
      echo "CI=true" >> $ENVRC

maintenance — セッションごと

依存関係を最新の状態に保ち、認証情報の設定ファイルを書き込むために、maintenance を利用します。 これはビルド中 (initialize の後) および 各セッションの開始時、最新のコードを pull した後に実行されます。セッション開始のたびに実行されるため、コマンドは高速で、差分更新で済むものにしてください。
maintenance: |
  npm install
  pip install -r requirements.txt
npm ci ではなく、npm install を利用してください。 npm cinode_modules を削除し、毎回すべてを最初から再インストールします。npm install は差分更新で済むため、依存関係に変更がない場合は大幅に高速です。

認証情報の設定

設定ファイル (.npmrcsettings.xmlpip.conf) にシークレットを書き込むステップは、initialize ではなく maintenance に含めてください。これにより、各セッションの開始時に認証情報を最新の状態に保てます。
maintenance:
  - name: Install dependencies
    run: npm install
  - name: Configure private registry
    run: npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN

knowledge — 環境固有のメモ (任意)

knowledge は、今構築した環境を Devin が実際に利用するために必要な、ちょっとしたセットアップ情報を記載するために使います。たとえば、lint コマンド、テストコマンド、あるいは開発サーバーの起動方法などです。
これはメインの Knowledge 機能と同じものではありません。 Devin に覚えておいてほしいことの大半 — アーキテクチャ、慣例、注意点、チームのワークフローなど — には、独立した Knowledge 機能を使ってください。こちらのほうがトリガーがより充実しており、編集もしやすく、プロジェクト全体の一般的な前提情報を置くのに適しています。environment.yamlknowledge セクションは、このファイル内の環境設定に直接ひもづく短いメモだけに使ってください (例:“lint コマンドは npm run lint”) 。このセクションは任意であり、ほとんどの環境では必要ありません。
各エントリは参照用のメモであり、実行はされません。短く保ってください:
knowledge:
  - name: lint
    contents: |
      Run `npm run lint` to check for errors.
      Run `npm run lint:fix` to auto-fix.
  - name: test
    contents: |
      Run `npm test` for the full suite.
      Run `npm test -- --watch` during development.
  - name: startup
    contents: |
      Run `npm run dev` to start the dev server on port 3000.

設定レベル

Devin は 3 つの設定階層をサポートしています。各階層のコマンドは厳密に加算されるため、ビルド 時に順番に実行され、下位レベルで上位レベルの設定を上書きしたり変更したりすることはできません。
レベル設定する場所ここに記載する内容
Account-wide (Enterprise)Enterprise Settings > Environmentすべての組織で必要なインフラCA 証明書、社内プロキシ、VPN、DNS
組織全体Settings > Environment > Organization-wide setupすべてのリポジトリで共有するツールやセットアップ言語ランタイム (pnpmuv)、Docker 認証、共有 CLI ツール
Repo-specificSettings > Environment > [リポジトリ]プロジェクト固有のセットアップと knowledgenpm install、lint/test/ビルド コマンド、アーキテクチャに関するメモ
何をどこに置くかの判断基準:
  • Enterprise 内のすべての組織で必要な場合 → account-wide
  • 組織内のすべてのリポジトリで必要な場合 → 組織全体
  • 1 つのリポジトリでのみ必要な場合 → repo-specific
Enterprise ユーザー: Enterprise レベルの設定 (権限、ビルド の継承、複数 org の管理、Enterprise への移行) に関する詳しいガイダンスについては、Enterprise Environment Setup ページを参照してください。

仕組み

マシンイメージ

各組織には 1 つのマシンイメージ があります。これは、ツール、リポジトリ、依存関係があらかじめインストールされた VM のスナップショットです。設定されているすべてのリポジトリが、その 1 つのイメージにクローンされ、セットアップされます。各セッションはクリーンなコピーから起動されます。

ビルドの流れ

ビルドでは、次の順序で新しいマシンイメージが作成されます。
1. Enterprise config (runs in ~):
   a. initialize
   b. maintenance
2. Org-wide config (runs in ~):
   a. initialize
   b. maintenance
3. Clone all repositories (up to 10 concurrent)
4. For each configured repo, in the order shown in Settings
   (runs in ~/repos/<repo-name>):
   a. initialize
   b. maintenance
5. Health check, then image is saved
レイヤーは積み上げ式です。repo固有のコマンドでは、組織全体またはEnterpriseの設定でインストールされたツールを利用できます。下位レベルでは、上位レベルで設定された内容を上書きできません。 ビルドには通常5〜15分かかります。個々のコマンドは1時間でタイムアウトし、ビルド全体は2時間でタイムアウトします。

セッションの仕組み

各セッションでは、マシンイメージのクリーンなコピーが起動します。セッションが終了すると、すべての変更は破棄されます。 セッション開始時には:
  1. Enterprise および組織全体の maintenance が (~ で) 実行されます。
  2. 関連するリポジトリの最新のコードが取得されます。
  3. 前回のビルド以降の依存関係の変更を反映するため、そのリポジトリの maintenance が再度実行されます。
  4. そのリポジトリの knowledge エントリが Devin の前提情報に読み込まれます。
Knowledge はリポジトリごとです。 5 つのリポジトリを設定している場合、Devin が参照できるのは、現在作業しているリポジトリの knowledge エントリだけです。

ビルドステータス

ステータス意味
Successすべてのステップが完了しました。マシンイメージの準備ができています。
Partial一部の リポジトリ は失敗しましたが、コアビルドは成功しました。セッションは動作しますが、一部の リポジトリ は完全にはセットアップされていない可能性があります。
Failedコアビルドが失敗しました (例: クローンの失敗、Enterprise/org のセットアップ失敗) 。
Cancelled新しいビルドにより置き換えられました。
Skipped設定変更は検出されませんでした。
ビルドが失敗している場合は、ステップごとのデバッグガイドについて Troubleshooting & FAQ を参照してください。

リポジトリの状態

Environment Settings UI では、リポジトリは 3 つの状態で表示されます。
状態意味
Configuredinitialize/maintenance/Knowledge の YAML 設定があります。マシンイメージ で完全にセットアップされています。
Includedマシンイメージ にクローンされていますが、カスタム設定はありません。Devin はコードにアクセスできます。
Availableorg からアクセスできますが、Environment には追加されていません。クローンもされていません。
Included と Configured の違い: “included” の リポジトリ は、Devin がコードにアクセスできるようクローンされていますが、カスタムのセットアップコマンドはありません。“configured” の リポジトリ には、initialize/maintenance/Knowledge の instructions が明示的に設定されています。

どの操作で再ビルドがトリガーされますか?

次の場合、新しいビルドがトリガーされます。
  • Settings > Devin’s Environment で設定を保存する
  • Settings で Rebuild をクリックする
  • タイムラインで Devin が提案した環境アップデートを適用する

シークレット

$VARIABLE_NAME 形式でシークレットを参照します。Settings > Secrets で追加してください。
maintenance:
  - name: Configure private registry
    run: npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN
シークレットは、ビルドおよびセッション中に環境変数として利用できます。シークレットファイルはマシンイメージが保存される前に削除されますが、initialize 中にコマンドによってシークレットの値が設定ファイルに展開された場合、その展開後の値がイメージ内に残る可能性があります。認証情報は代わりに、各セッションで新たに読み込まれる maintenance に常に記述してください。 シークレットの管理について詳しくは、Secrets & Site Cookies を参照してください。

リポジトリのパターン

複数のリポジトリ

複数の リポジトリ を設定すると、それぞれに対応する YAML が Settings に作成されます。ビルド 中は、すべての リポジトリ が同じイメージ内でセットアップされ、別々のディレクトリにクローンされ、依存関係もそれぞれ個別にインストールされます。セッション 中は、アクティブな リポジトリ のメンテナンスと Knowledge のみが対象になります。 2 つのリポジトリが競合した場合はどうなりますか? 各リポジトリのコマンドはそれぞれ独自のディレクトリで実行されるため、依存関係の競合はまれです。2 つのリポジトリがグローバルツールの異なるバージョンをインストールしたり、共有ファイル (~/.bashrc など) を変更したりする場合は、最後に実行されたものが有効になります。これを避けるには、共有ツールのインストールを組織全体設定に含めてください。

モノレポ

モノレポでは、すべてのサブプロジェクトを対象とする1つのYAMLを作成します。後続のステップの作業ディレクトリを変更せずにサブディレクトリでコマンドを実行するには、サブシェルを利用します:
initialize:
  - name: Install pnpm
    run: npm install -g pnpm
  - name: Install uv
    run: curl -LsSf https://astral.sh/uv/install.sh | sh

maintenance:
  - name: Frontend deps
    run: (cd packages/frontend && pnpm install)
  - name: Backend deps
    run: (cd packages/backend && uv sync)
  - name: Shared library
    run: (cd packages/shared && pnpm install)

knowledge:
  - name: structure
    contents: |
      Monorepo with three packages:
      - `packages/frontend` — React app (TypeScript, pnpm)
      - `packages/backend` — Python API (FastAPI, uv)
      - `packages/shared` — Shared TypeScript utilities
丸括弧 (cd ... && ...) は重要です。これによりコマンドがサブシェル内で実行されるため、次の手順では作業ディレクトリがリセットされます。 マルチリポジトリ構成とモノレポ構成の使い分け: コードが 1 つの Git リポジトリにある場合は、サブシェルを使った 1 つの YAML を利用します。複数の Git リポジトリにまたがっている場合は、Settings で各リポジトリを個別に設定します。

次のステップ

YAML リファレンス

フィールドのリファレンス表、実行の詳細、プリインストールされたツール、用語集。

設定例

Node.js、Python、Java、Go、モノレポ、Enterprise 向けパターンなど、コピー&ペーストで使える使用例。

トラブルシューティングと FAQ

ビルド 失敗のデバッグ、対話型セットアップからの移行、よくある質問への回答。

Enterprise 環境のセットアップ

権限、ビルド の継承、複数orgの管理、Enterprise への移行。