You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

复用GitHub Actions Workflow时,with表达式引用env为何报指定异常?

GitHub Actions调用外部工作流时,with参数无法引用env上下文的问题

问题重现

在调用另一个仓库的工作流时,尝试在with参数的表达式中引用env变量,触发了两个错误:

工作流无效。.github/workflows/sample.yml(第6行,第5列):意外值 'env';.github/workflows/sample.yml(第9行,第23列):无法识别的命名值: 'env'。位于表达式的第1位:env.SOMETHING

对应的配置代码:

on:
  push:
jobs:
  call-workflow-in-another-repository:
    uses: my-org/my-repo/.github/workflows/sample-workflow.yml@v1
    env:
      SOMETHING: example
    with:
      something-sent: ${{ env.SOMETHING }}
      something-else-sent: ${{ format('{0}_another_usage_of_env_variable', env.SOMETHING) }}

用户提到官方文档说明:

除了id和uses键之外,您可以在步骤的任何键的值中使用env上下文

问题原因

  1. 复用工作流的Job不支持Job层级的env字段:使用uses引用外部工作流的Job属于「可复用工作流调用」,这类Job的配置字段是受限的,仅允许name、uses、with、secrets、permissions等特定字段,不能在Job层级添加env,这就是第一个错误“意外值 'env'”的来源。
  2. 该场景下无法访问Job层级的env上下文:官方文档中提到的“步骤中使用env上下文”,指的是常规Job内部steps下的单个步骤,而非这种直接复用整个工作流的Job。在可复用工作流调用的with参数中,无法直接引用Job层级定义的env变量。

解决方案

将环境变量定义在Workflow层级,这样整个工作流的所有Job都能访问该上下文,包括可复用工作流调用的with参数:

修改后的配置示例:

on:
  push:
# 将env定义在Workflow层级
env:
  SOMETHING: example
jobs:
  call-workflow-in-another-repository:
    uses: my-org/my-repo/.github/workflows/sample-workflow.yml@v1
    with:
      something-sent: ${{ env.SOMETHING }}
      something-else-sent: ${{ format('{0}_another_usage_of_env_variable', env.SOMETHING) }}

如果变量仅需在该调用Job中使用,也可以直接在with参数中硬编码值,或者使用secrets(敏感信息场景)、Workflow上下文的其他变量(如github.ref等)。

内容的提问来源于stack exchange,提问作者Shawn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 22:32:19