initialize 部分引用 GitHub Actions。Devin 会在环境快照构建期间下载并运行该 action,方式与 GitHub 的 CI 运行器执行 action 步骤相同。
这对于 setup-python、setup-node 和 setup-go 这类用于设置语言环境的 action 尤其有用,它们会自动处理版本管理和 PATH 配置。
语法
initialize 部分添加 uses 步骤:
一个步骤必须指定
run (shell 命令) 或 uses (Action) ,二者不能同时指定。操作引用格式
github.com/ 前缀和 @<ref> 后缀都必不可少。ref 通常是类似 v5 这样的版本标签。
示例:
传递输入
with 字段向此 action 传入输入。所有值都会按字符串处理,与 GitHub Actions 的行为一致:
设置环境变量
env 字段设置仅作用于单个action步骤的环境变量:
GITHUB_ENV 或 GITHUB_PATH) 会自动传递到蓝图中的后续步骤。
示例
使用特定 Python 版本的项目
多语言项目
将操作与 shell 命令混合使用
使用 Gradle 的 Java 项目
Actions 与 shell 脚本
- 使用 GitHub Actions
- 等效 shell 脚本
工作原理
uses 步骤时:
- 下载 action 代码仓库 (在固定 ref 上进行浅克隆)
- 读取 action 的
action.yml元数据,以确定 action 类型 (runs.using) 和入口点 - 构建包含
INPUT_*、GITHUB_*和RUNNER_*变量的执行环境 - 根据 action 类型运行 action:
- Node.js actions — 运行
pre脚本 (如果已定义) ,然后运行main - Composite actions — 按顺序运行
runs.steps中的每个步骤,包括嵌套的run和uses步骤 - Docker actions — 从 action 的
Dockerfile构建镜像 (或拉取docker://镜像) ,然后运行容器,包括pre-entrypoint(如果已定义)
- Node.js actions — 运行
- 传递副作用——action 写入
GITHUB_PATH或GITHUB_ENV的任何条目都会应用到后续的蓝图步骤中
Actions 在真实的 GitHub 工作流程之外运行。像
github.repository 这样的上下文变量会被填入占位值。需要实时访问 GitHub API 的 action (例如在 PR 上评论、创建发布) 在蓝图中将无法运行。限制
-
支持的 action 类型 — 蓝图支持以下 action 类型 (
runs.using): -
不可用于
maintenance—uses步骤可在initialize和post-build中运行,但不能在maintenance中运行。参见 语法。 -
不支持
post生命周期 — Devin 会运行pre和main步骤 (以及 Docker action 的pre-entrypoint) ,但会跳过post清理步骤 (post和post-entrypoint) ,因为构建是在一次性虚拟机中运行的。 - GitHub 上下文为占位内容 — 依赖 GitHub API 调用、工作流程事件数据或代码仓库上下文的 Action 可能无法正常工作,因为这些值在构建环境中只是占位内容。
-
固定版本 — 始终引用特定版本标签 (例如
@v5) ,而不是分支名称,以确保构建可复现。

