Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.devin.ai/llms.txt

Use this file to discover all available pages before exploring further.

ツールのインストール用にシェルスクリプトを書く代わりに、ブループリントのinitializeまたはmaintenanceセクションでGitHub Actionsを直接参照できます。Devinはスナップショットのビルド時にそのアクションをダウンロードして実行します。これは、GitHubのCIランナーがアクションのステップを実行するのと同じ仕組みです。 これは、setup-pythonsetup-nodesetup-goのような言語セットアップ用アクションで特に便利です。これらは、バージョン管理やPATHの設定を自動的に処理します。

構文

ブループリント内の任意のセクションに uses ステップを追加します:
initialize:
  - name: Install Python 3.12
    uses: github.com/actions/setup-python@v5
    with:
      python-version: "3.12"
フィールド説明
namestring (optional)ビルドログに表示される、人が理解しやすいラベル
usesstringGitHub Action の参照 (形式は以下の書式を参照)
withmap (optional)アクションに渡す入力パラメータ
envmap (optional)ステップ用の追加の環境変数
ステップでは、run (シェルコマンド) または uses (アクション) のいずれか一方を指定する必要があり、両方は指定できません。

アクションの参照形式

github.com/<owner>/<repo>@<ref>
github.com/<owner>/<repo>/<subpath>@<ref>
github.com/ プレフィックスと @<ref> サフィックスは、どちらも必須です。ref は通常、v5 のようなバージョンタグです。 使用例:
リファレンス解決先
github.com/actions/setup-python@v5タグ v5actions/setup-python
github.com/actions/setup-node@v4タグ v4actions/setup-node
github.com/gradle/actions/setup-gradle@v4gradle/actions リポジトリ、setup-gradle サブディレクトリ、タグ v4

入力の指定

アクションに入力を渡すには、with フィールドを使用します。すべての値は、GitHub Actions の動作に合わせて文字列として扱われます。
initialize:
  - uses: github.com/actions/setup-java@v4
    with:
      java-version: "21"
      distribution: "temurin"
with の値では、必ずバージョン番号を引用符で囲んでください。YAML は引用符のない 3.10 を浮動小数点数 3.1 として解釈してしまうため、意図した動作になりません。代わりに python-version: "3.10" と記述してください。

環境変数の設定

env フィールドを利用して、1 つのアクションステップのみに適用される環境変数を設定します。
initialize:
  - uses: github.com/actions/setup-node@v4
    with:
      node-version: "20"
    env:
      RUNNER_DEBUG: "1"
アクションによって設定された環境変数 (GITHUB_ENV または GITHUB_PATH 経由) は、ブループリント内の以降のステップにも自動的に引き継がれます。

使用例

特定のバージョンを指定した Python プロジェクト

initialize:
  - name: Install Python 3.12
    uses: github.com/actions/setup-python@v5
    with:
      python-version: "3.12"

maintenance: |
  pip install -r requirements.txt

knowledge:
  - name: test
    contents: pytest

多言語プロジェクト

initialize:
  - name: Install Node.js
    uses: github.com/actions/setup-node@v4
    with:
      node-version: "20"
  - name: Install Python
    uses: github.com/actions/setup-python@v5
    with:
      python-version: "3.12"
  - name: Install Go
    uses: github.com/actions/setup-go@v5
    with:
      go-version: "1.22"

アクションとシェルコマンドを組み合わせる

アクションとシェルコマンドは、同じセクション内で自由に組み合わせて使えます。
initialize:
  - name: Install Python
    uses: github.com/actions/setup-python@v5
    with:
      python-version: "3.12"
  - name: Install project tools
    run: pip install ruff pytest
  - name: Install Node.js
    uses: github.com/actions/setup-node@v4
    with:
      node-version: "20"
  - name: Install frontend deps
    run: npm install -g pnpm

Gradle を使用する Java プロジェクト

initialize:
  - name: Install JDK 21
    uses: github.com/actions/setup-java@v4
    with:
      java-version: "21"
      distribution: "temurin"
  - name: Install Gradle
    uses: github.com/gradle/actions/setup-gradle@v4

maintenance: |
  ./gradlew dependencies

knowledge:
  - name: build
    contents: ./gradlew build
  - name: test
    contents: ./gradlew test

Actions とシェルスクリプト

Actions を使う必要はありません。通常のシェルコマンドで十分です。Actions は、同等のシェルスクリプトが長くなったり、ミスしやすくなったりする場合に便利です。
initialize:
  - uses: github.com/actions/setup-go@v5
    with:
      go-version: "1.23"

仕組み

Devinは、スナップショットのビルド中にusesステップを検出すると、次の処理を行います。
  1. アクションのリポジトリをダウンロードします (ピン留めされた ref の shallow clone)
  2. アクションのaction.ymlメタデータを読み取り、ランタイムとエントリポイントを特定します
  3. INPUT_*GITHUB_*RUNNER_*変数を使って実行環境を構築します
  4. アクションのpreステップ (定義されている場合) を実行し、その後mainエントリポイントを実行します
  5. 副作用を引き継ぎます — アクションがGITHUB_PATHまたはGITHUB_ENVに書き込んだエントリは、後続のブループリントのステップに適用されます
Actionsは実際のGitHubワークフローの外で実行されます。github.repositoryのような前提情報変数にはスタブ値が設定されます。GitHub APIへのライブアクセスを必要とするActions (例: PRへのコメント、リリースの作成) は、ブループリントでは動作しません。

制限事項

  • Node.js actions のみ — Node.js ランタイム (node16node20node24) を利用する GitHub Actions のみサポートされています。Docker ベースの action と composite action には対応していません。
  • post ライフサイクルなし — ビルドは使い捨ての VM 上で実行されるため、Devin は premain のステップは実行しますが、post のクリーンアップステップはスキップします。
  • GitHub 前提情報はスタブ — GitHub APIコール、ワークフロー のイベントデータ、または リポジトリ の前提情報に依存する action は、これらの値がビルド環境ではプレースホルダーであるため、正しく動作しない場合があります。
  • バージョンを固定する — 再現可能なビルドのため、ブランチ名ではなく、必ず特定のバージョンタグ (例: @v5) を参照してください。