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

GitHub Actions工作流与作业间环境变量访问报错求助

解决GitHub Actions作业层级引用工作流环境变量的错误

错误原因

  1. 上下文引用限制:在作业层级的env字段中,无法使用env上下文引用工作流层级的环境变量。此时作业的环境变量上下文尚未初始化,因此会抛出Unrecognized named-value: 'env'错误。
  2. YAML缩进错误:原代码中dev作业下的runs-on、env缩进不一致,会导致工作流解析失败。

修正方案

方案一:直接引用原始Secrets/Vars(推荐)

保留工作流层级的环境变量定义,在作业层级的env中直接引用原始的secrets和vars,同时修正缩进问题:

env:
  AWS_REGION: ${{ vars.AWS_REGION }}
  ACCOUNT_ID: ${{ secrets.TRAINING_ACCOUNT_ID }}

jobs:
  dev:
    runs-on: ubuntu-latest
    env:
      ECR_REGISTRY: ${{ secrets.TRAINING_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_REGION }}.amazonaws.com
    steps:
      - name: build
        run: |
          aws --region ${{ env.AWS_REGION }} ecr get-login-password | docker login --username AWS --password-stdin ${{ env.ECR_REGISTRY }}

方案二:将环境变量定义移至步骤层级

如果希望通过工作流层级的env中转传递变量,可以把ECR_REGISTRY的定义移到步骤层级的env中,此时env上下文已经可用:

env:
  AWS_REGION: ${{ vars.AWS_REGION }}
  ACCOUNT_ID: ${{ secrets.TRAINING_ACCOUNT_ID }}

jobs:
  dev:
    runs-on: ubuntu-latest
    steps:
      - name: build
        env:
          ECR_REGISTRY: ${{ env.ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com
        run: |
          aws --region ${{ env.AWS_REGION }} ecr get-login-password | docker login --username AWS --password-stdin ${{ env.ECR_REGISTRY }}

关键注意事项

  • 作业层级的env字段仅支持引用secrets、vars、github等顶级上下文,不能引用env上下文(包括工作流层级的环境变量),因为env上下文是基于当前作业/步骤的环境变量,在作业初始化阶段还未生成。
  • YAML文件对缩进要求严格,所有同级元素的缩进必须保持一致,否则会导致工作流无法正常解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:05:29