你无需编写 shell 脚本来安装工具,而是可以直接在蓝图的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 会在快照构建期间下载并运行该 action,方式与 GitHub 的 CI 运行器执行 action 步骤相同。
这对于 setup-python、setup-node 和 setup-go 这类用于设置语言环境的 action 尤其有用,它们会自动处理版本管理和 PATH 配置。
语法
uses 步骤:
| Field | Type | Description |
|---|---|---|
name | string (optional) | 在构建日志中显示的可读标签 |
uses | string | GitHub Action 引用 (参见下方的格式) |
with | map (optional) | 传递给该 Action 的输入参数 |
env | map (optional) | 该步骤的附加环境变量 |
一个步骤必须指定
run (shell 命令) 或 uses (Action) ,二者不能同时指定。操作引用格式
github.com/ 前缀和 @<ref> 后缀都必不可少。ref 通常是类似 v5 这样的版本标签。
示例:
| Reference | 解析结果 |
|---|---|
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 repo、setup-gradle 子目录和标签 v4 |
传递输入
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元数据,以确定运行时和入口点 - 构建包含
INPUT_*、GITHUB_*和RUNNER_*变量的执行环境 - 运行 action 的
pre步骤 (如果已定义) ,然后运行main入口点 - 传递副作用——action 写入
GITHUB_PATH或GITHUB_ENV的任何条目都会应用到后续的蓝图步骤中
Actions 在真实的 GitHub 工作流程之外运行。像
github.repository 这样的上下文变量会被填入占位值。需要实时访问 GitHub API 的 action (例如在 PR 上评论、创建发布) 在蓝图中将无法运行。限制
- 仅支持 Node.js Action — 仅支持使用 Node.js 运行时 (
node16、node20、node24) 的 GitHub Actions。不支持基于 Docker 的 Action 和复合 Action。 - 不支持
post生命周期 — Devin 会运行pre和main步骤,但会跳过post清理步骤,因为构建是在一次性 VM 中运行的。 - GitHub 上下文为占位内容 — 依赖 GitHub API 调用、工作流程事件数据或代码仓库上下文的 Action 可能无法正常工作,因为这些值在构建环境中只是占位内容。
- 固定版本 — 始终引用特定版本标签 (例如
@v5) ,而不是分支名称,以确保构建可复现。
