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

構文

ブループリント内の任意のセクションに uses ステップを追加します:
ステップでは、run (シェルコマンド) または uses (アクション) のいずれか一方を指定する必要があり、両方は指定できません。

アクションの参照形式

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

入力の指定

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

環境変数の設定

env フィールドを利用して、1 つのアクションステップのみに適用される環境変数を設定します。
アクションによって設定された環境変数 (GITHUB_ENV または GITHUB_PATH 経由) は、ブループリント内の以降のステップにも自動的に引き継がれます。

使用例

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

多言語プロジェクト

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

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

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

Actions とシェルスクリプト

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

仕組み

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) を参照してください。