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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:48:22