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

如何在GitHub Actions工作流同一env段中引用已声明的环境变量?

问题解决方法

GitHub Actions的env段内部不支持直接引用同一段中定义的其他环境变量,因为这部分是静态解析的,不会做变量展开。另外你代码里DOCKER_IMG_NAME的写法有误,应该用冒号:而不是等号=,先修正这个基础错误。

下面是两种可行的解决方式:

方案1:在run脚本内定义TARGET变量

把TARGET的拼接逻辑移到shell脚本里,利用shell的环境变量展开功能:

name: build-push-docker-image

# ...

  - name: docker push
    env:
      AWS_ACCT_ID: 123457890123
      AWS_REGION: us-west-2
      DOCKER_IMG_NAME: test-github-actions-push-ecr  # 修正为冒号赋值
      DOCKER_IMG_TAG: latest
    run: |
      TARGET="${AWS_ACCT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${DOCKER_IMG_NAME}:${DOCKER_IMG_TAG}"
      docker tag ${DOCKER_IMG_NAME}:${DOCKER_IMG_TAG} ${TARGET} 
      docker push ${TARGET}

方案2:使用Job级别的环境变量复用

如果需要在多个步骤复用这些基础变量,可以把它们定义在Job级别的env中,步骤内的TARGET通过GitHub Actions表达式引用这些全局变量:

name: build-push-docker-image

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    env:  # Job级别的环境变量,所有步骤可继承引用
      AWS_ACCT_ID: 123457890123
      AWS_REGION: us-west-2
      DOCKER_IMG_NAME: test-github-actions-push-ecr
      DOCKER_IMG_TAG: latest
    steps:
      # ...其他步骤...
      
      - name: docker push
        env:
          # 通过表达式引用Job级变量拼接TARGET
          TARGET: ${{ env.AWS_ACCT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.DOCKER_IMG_NAME }}:${{ env.DOCKER_IMG_TAG }}
        run: |
          docker tag ${DOCKER_IMG_NAME}:${DOCKER_IMG_TAG} ${TARGET} 
          docker push ${TARGET}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:35:05