如何在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
相关产品推荐
相关产品推荐

