GitHub Actions跨Job传递Python脚本输出为空问题求助
问题原因与修复方案
1. output_stuff任务输出逻辑错误
你在output_stuff的步骤中使用>> $GITHUB_ENV是将值写入环境变量,但任务输出引用的是steps.subnets.outputs.subnet这类步骤输出字段,这要求必须将值写入步骤输出文件$GITHUB_OUTPUT,而非环境变量文件。GitHub Actions中,步骤输出和环境变量是完全不同的两个机制,不能混用。
修复后的output_stuff代码:
output_stuff: runs-on: labels: ephemeral outputs: subnet: ${{ steps.subnets.outputs.subnet }} name: ${{ steps.names.outputs.name }} vnet: ${{ steps.vnets.outputs.vnet }} steps: - name: Output Chosen Subnet id: subnets run: | echo "subnet=${{needs.reserveSubnet.outputs.cidr}}" >> $GITHUB_OUTPUT - name: Output Chosen Appname id: names run: | echo "name=${{needs.reserveSubnet.outputs.appName}}" >> $GITHUB_OUTPUT - name: Output Chosen vnet id: vnets run: | echo "vnet=${{needs.reserveSubnet.outputs.vnet}}" >> $GITHUB_OUTPUT needs: reserveSubnet
2. createVNET任务参数传递错误
你在传递参数时添加了echo "${{...}}"语法,这会把整个echo命令字符串作为参数值传递,而非目标变量的实际内容。正确做法是直接引用输出变量,不需要包裹echo命令。
修复后的createVNET代码:
createVNET: uses: blah/gitops-tf-azure-vnet/.github/workflows/plan.yml@main with: ref: "main" tgtAddress: ${{needs.output_stuff.outputs.vnet}} tgtSubnet: ${{needs.output_stuff.outputs.subnet}} subnetName: ${{needs.output_stuff.outputs.name}} secrets: inherit needs: output_stuff
验证逻辑
修复后,output_stuff的步骤会正确生成步骤输出,任务级输出也能正确捕获这些值;createVNET会直接拿到有效的变量内容,不会再出现空值或echo ""这类无效参数。
内容的提问来源于stack exchange,提问作者pcam
相关产品推荐
相关产品推荐

