能否在调用者工作流中继承Composite GitHub Action的环境上下文?
能否通过环境变量将Composite Action中的值传递到调用工作流?
不行。GitHub Actions里,Composite Action内部设置的环境变量仅在该Action的步骤范围内有效,无法直接传递到调用它的外部工作流中。
具体原因
Composite Action是独立的执行单元,它的环境上下文和外部工作流完全隔离。你在Action里通过echo "testvarenv='wow'" >> $env:GITHUB_ENV设置的环境变量,只会在这个Action内部的后续步骤中生效。一旦Composite Action执行完成,这些环境变量就会被销毁,不会留存到外部工作流的环境里。
可行的替代方案(官方推荐)
如果要把Composite Action里的值传递到外部工作流,必须使用outputs机制,这是GitHub Actions专门设计的跨Action传递数据的方式。
修改你的Composite Action,通过GITHUB_OUTPUT输出变量:
name: Send Email description: Use this composite action outputs: key_value_x: value: ${{ steps.set_var.outputs.testvar }} runs: using: "composite" steps: - name: set variable and output id: set_var run: | $testValue = 'wow' # 输出到Action的outputs echo "testvar=$testValue" >> $env:GITHUB_OUTPUT # 同时设置内部环境变量(供Action内部使用) echo "testvarenv=$testValue" >> $env:GITHUB_ENV shell: powershell - name: Inside composite action run: | echo "testvarenv is ${{ env.testvarenv }}" shell: powershell
然后在调用工作流中捕获这个输出:
steps: - name: Checkout uses: actions/checkout@v3 - name: Use the composite action in the root dir id: send_email uses: ./ - name: Outside composite action run: | echo "testvar from composite action is ${{ steps.send_email.outputs.key_value_x }}" shell: powershell
内容的提问来源于stack exchange,提问作者Ashar
相关产品推荐
相关产品推荐

