> ## 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.

# ブループリントでのGitHub Actions

> シェルスクリプトを書かずに、GitHub Actionsを使ってDevin環境に言語、ツール、SDKをインストールできます。

ツールのインストール用にシェルスクリプトを書く代わりに、ブループリントの`initialize`または`maintenance`セクションでGitHub Actionsを直接参照できます。Devinはスナップショットのビルド時にそのアクションをダウンロードして実行します。これは、GitHubのCIランナーがアクションのステップを実行するのと同じ仕組みです。

これは、`setup-python`、`setup-node`、`setup-go`のような言語セットアップ用アクションで特に便利です。これらは、バージョン管理やPATHの設定を自動的に処理します。

<div id="syntax">
  ## 構文
</div>

ブループリント内の任意のセクションに `uses` ステップを追加します:

```yaml theme={null}
initialize:
  - name: Install Python 3.12
    uses: github.com/actions/setup-python@v5
    with:
      python-version: "3.12"
```

| フィールド  | 型                 | 説明                                                          |
| ------ | ----------------- | ----------------------------------------------------------- |
| `name` | string (optional) | ビルドログに表示される、人が理解しやすいラベル                                     |
| `uses` | string            | GitHub Action の参照 (形式は以下の[書式](#action-reference-format)を参照) |
| `with` | map (optional)    | アクションに渡す入力パラメータ                                             |
| `env`  | map (optional)    | ステップ用の追加の環境変数                                               |

<Info>
  ステップでは、`run` (シェルコマンド) **または** `uses` (アクション) のいずれか一方を指定する必要があり、両方は指定できません。
</Info>

<div id="action-reference-format">
  ## アクションの参照形式
</div>

```
github.com/<owner>/<repo>@<ref>
github.com/<owner>/<repo>/<subpath>@<ref>
```

`github.com/` プレフィックスと `@<ref>` サフィックスは、どちらも**必須**です。ref は通常、`v5` のようなバージョンタグです。

**使用例:**

| リファレンス                                      | 解決先                                                    |
| ------------------------------------------- | ------------------------------------------------------ |
| `github.com/actions/setup-python@v5`        | タグ `v5` の `actions/setup-python`                       |
| `github.com/actions/setup-node@v4`          | タグ `v4` の `actions/setup-node`                         |
| `github.com/gradle/actions/setup-gradle@v4` | `gradle/actions` リポジトリ、`setup-gradle` サブディレクトリ、タグ `v4` |

<div id="passing-inputs">
  ## 入力の指定
</div>

アクションに入力を渡すには、`with` フィールドを使用します。すべての値は、GitHub Actions の動作に合わせて文字列として扱われます。

```yaml theme={null}
initialize:
  - uses: github.com/actions/setup-java@v4
    with:
      java-version: "21"
      distribution: "temurin"
```

<Warning>
  `with` の値では、**必ずバージョン番号を引用符で囲んでください**。YAML は引用符のない `3.10` を浮動小数点数 `3.1` として解釈してしまうため、意図した動作になりません。代わりに `python-version: "3.10"` と記述してください。
</Warning>

<div id="setting-environment-variables">
  ## 環境変数の設定
</div>

`env` フィールドを利用して、1 つのアクションステップのみに適用される環境変数を設定します。

```yaml theme={null}
initialize:
  - uses: github.com/actions/setup-node@v4
    with:
      node-version: "20"
    env:
      RUNNER_DEBUG: "1"
```

アクションによって設定された環境変数 (`GITHUB_ENV` または `GITHUB_PATH` 経由) は、ブループリント内の以降のステップにも自動的に引き継がれます。

<div id="examples">
  ## 使用例
</div>

<div id="python-project-with-a-specific-version">
  ### 特定のバージョンを指定した Python プロジェクト
</div>

```yaml theme={null}
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
```

<div id="multi-language-project">
  ### 多言語プロジェクト
</div>

```yaml theme={null}
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"
```

<div id="mixing-actions-with-shell-commands">
  ### アクションとシェルコマンドを組み合わせる
</div>

アクションとシェルコマンドは、同じセクション内で自由に組み合わせて使えます。

```yaml theme={null}
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
```

<div id="java-project-with-gradle">
  ### Gradle を使用する Java プロジェクト
</div>

```yaml theme={null}
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
```

<div id="actions-vs-shell-scripts">
  ### Actions とシェルスクリプト
</div>

Actions を使う必要はありません。通常のシェルコマンドで十分です。Actions は、同等のシェルスクリプトが長くなったり、ミスしやすくなったりする場合に便利です。

<Tabs>
  <Tab title="GitHub Actions を使う場合">
    ```yaml theme={null}
    initialize:
      - uses: github.com/actions/setup-go@v5
        with:
          go-version: "1.23"
    ```
  </Tab>

  <Tab title="同等のシェルスクリプト">
    ```yaml theme={null}
    initialize: |
      GO_VERSION=1.23.5
      ARCH=$(dpkg --print-architecture)
      curl -fsSL "https://go.dev/dl/go${GO_VERSION}.linux-${ARCH}.tar.gz" \
        | sudo tar -xz -C /usr/local
      echo 'export PATH="/usr/local/go/bin:$HOME/go/bin:$PATH"' \
        | sudo tee /etc/profile.d/golang.sh > /dev/null
    ```
  </Tab>
</Tabs>

<div id="how-it-works">
  ## 仕組み
</div>

Devinは、スナップショットのビルド中に`uses`ステップを検出すると、次の処理を行います。

1. アクションのリポジトリを**ダウンロード**します (ピン留めされた ref の shallow clone)
2. アクションの`action.yml`メタデータを**読み取り**、ランタイムとエントリポイントを特定します
3. `INPUT_*`、`GITHUB_*`、`RUNNER_*`変数を使って実行環境を**構築**します
4. アクションの`pre`ステップ (定義されている場合) を**実行**し、その後`main`エントリポイントを実行します
5. 副作用を**引き継ぎ**ます — アクションが`GITHUB_PATH`または`GITHUB_ENV`に書き込んだエントリは、後続のブループリントのステップに適用されます

<Info>
  Actionsは実際のGitHubワークフローの外で実行されます。`github.repository`のような前提情報変数にはスタブ値が設定されます。GitHub APIへのライブアクセスを必要とするActions (例: PRへのコメント、リリースの作成) は、ブループリントでは動作しません。
</Info>

<div id="limitations">
  ## 制限事項
</div>

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

<div id="related-pages">
  ## 関連ページ
</div>

* [宣言的な環境設定](/ja/onboard-devin/environment/blueprints)
* [ブループリントリファレンス](/ja/onboard-devin/environment/blueprint-reference)
* [テンプレートライブラリ](/ja/onboard-devin/environment/templates)
