Skip to main content
你无需编写 shell 脚本来安装工具,而是可以直接在蓝图的 initialize 部分引用 GitHub Actions。Devin 会在环境快照构建期间下载并运行该 action,方式与 GitHub 的 CI 运行器执行 action 步骤相同。 这对于 setup-python、setup-node 和 setup-go 这类用于设置语言环境的 action 尤其有用,它们会自动处理版本管理和 PATH 配置。

语法

在蓝图的 initialize 部分添加 uses 步骤:
一个步骤必须指定 run (shell 命令) 或 uses (Action) ,二者不能同时指定。
maintenance 中不支持 uses 步骤。带有 uses 的 maintenance 步骤会导致环境快照构建失败,并报错 'uses' steps are not supported in maintenance sections ... Actions can only run during initialize.。请将 action 放在 initialize 中,maintenance 只使用 run 步骤。组织级和企业级的 post-build 步骤同样可以使用 action。

操作引用格式

github.com/ 前缀和 @<ref> 后缀都必不可少。ref 通常是类似 v5 这样的版本标签。 示例:

传递输入

使用 with 字段向此 action 传入输入。所有值都会按字符串处理,与 GitHub Actions 的行为一致:
始终在 with 的值中用引号括起版本号。YAML 会将未加引号的 3.10 解释为浮点数 3.1,这并不是你想要的结果。请改写为 python-version: "3.10"。

设置环境变量

使用 env 字段设置仅作用于单个action步骤的环境变量:
由某个action设置的环境变量 (通过 GITHUB_ENV 或 GITHUB_PATH) 会自动传递到蓝图中的后续步骤。

示例

使用特定 Python 版本的项目

多语言项目

将操作与 shell 命令混合使用

操作和 shell 命令可以在同一部分中混合使用:

使用 Gradle 的 Java 项目

Actions 与 shell 脚本

你不一定要使用 Actions——直接写 shell 命令也完全可行。只有在等效的 shell 脚本会很长或容易出错时,Actions 才更省事。

工作原理

当 Devin 在环境快照构建期间遇到 uses 步骤时:
  1. 下载 action 代码仓库 (在固定 ref 上进行浅克隆)
  2. 读取 action 的 action.yml 元数据,以确定 action 类型 (runs.using) 和入口点
  3. 构建包含 INPUT_*、GITHUB_* 和 RUNNER_* 变量的执行环境
  4. 根据 action 类型运行 action:
    • Node.js actions — 运行 pre 脚本 (如果已定义) ,然后运行 main
    • Composite actions — 按顺序运行 runs.steps 中的每个步骤,包括嵌套的 run 和 uses 步骤
    • Docker actions — 从 action 的 Dockerfile 构建镜像 (或拉取 docker:// 镜像) ,然后运行容器,包括 pre-entrypoint (如果已定义)
  5. 传递副作用——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) ,而不是分支名称,以确保构建可复现。