作业间传递输出参数失败求助:environment参数始终为空
问题分析与修复方案
核心问题1:作业输出引用大小写不匹配
你的第一个作业set-environment-variable定义的输出键是小写的environment:
outputs: environment: ${{ steps.set_var.outputs.Environment }}
但在第二个作业load-aws-credentials中,你引用的是大写的Environment:
ENVIRONMENT: ${{ needs.set-environment-variable.outputs.Environment }}
GitHub Actions的输出键严格区分大小写,这会导致无法正确获取值,直接返回空。
核心问题2:未定义变量导致逻辑异常
步骤中的判断条件if [[ -z "$Environment" || -z "$Feature2" ]]; then里,Feature2变量从未被定义,因此-z "$Feature2"永远为真——这会导致无论Environment是否有值,都会强制进入case分支执行,可能干扰预期的变量输出逻辑。
修复后的完整配置
修正作业输出引用
将第二个作业的引用改为小写的environment:
load-aws-credentials: uses: xxx/xxx-github-actions-templates/.github/workflows/aws-assume-role-v1.yml@master needs: set-environment-variable secrets: inherit with: ENVIRONMENT: ${{ needs.set-environment-variable.outputs.environment }} ROLE: AWS_CICD_DEPLOYMENT_ROLE SHARED_ROLE: AWS_OIDC_ROLE
优化步骤逻辑(可选但建议)
移除未定义的Feature2判断,简化输出逻辑,避免重复覆盖:
jobs: set-environment-variable: runs-on: ubuntu-latest outputs: environment: ${{ steps.set_var.outputs.Environment }} region: ${{ steps.set_var.outputs.Region }} steps: - name: Set Environment Variable id: set_var run: | Environment="${{ github.event.inputs.environment }}" echo "este es el environment $Environment" # 仅当Environment为空时进入分支设置默认值 if [[ -z "$Environment" ]]; then case $Environment in dev) echo "Configuring region for dev" Region=us-west-2 ;; stage) echo "Configuring region for stage" Region=us-east-1 ;; *) echo "Configuring region for default" Environment="dev" Region="us-west-2" ;; esac fi # 统一在最后输出变量,避免重复覆盖 echo "Environment=$Environment" >> "$GITHUB_OUTPUT" echo "Region=$Region" >> "$GITHUB_OUTPUT"
额外验证建议
- 运行Workflow时,查看
set-environment-variable作业的步骤日志,确认Set Environment Variable步骤中输出的Environment和Region值是否正确。 - 检查作业的输出面板,确认
set-environment-variable的输出参数是否已正确生成。
内容的提问来源于stack exchange,提问作者Santiago Galicia
相关产品推荐
相关产品推荐

