Github Actions:可重用工作流间传递GITHUB_ENV值失败
解决跨Job传递变量到可重用工作流的问题
问题根源
GITHUB_ENV 设置的环境变量仅在当前Job的步骤范围内有效,无法直接跨Job传递给另一个工作流。你需要改用Job的outputs机制来实现跨Job变量传递。
修改方案
在
manualJob中配置输出变量
将原来写入GITHUB_ENV的逻辑改为写入GITHUB_OUTPUT,并在Job级别声明输出字段。在
manual-deploy工作流中引用输出变量
通过needs.manual.outputs.xxx的语法获取前一个Job的输出值,传递给可重用工作流的参数。
修改后的完整代码
manual: if: github.event_name != 'push' runs-on: binnacles outputs: FILENAME: ${{ steps.set_filename.outputs.FILENAME }} # 声明Job输出 steps: - name: Set Filename id: set_filename # 给步骤加ID,用于后续引用输出 run: | echo "FILENAME=aws/${{ github.event.inputs.environment }}/${{ github.event.inputs.cluster_color }}/${{ github.event.inputs.region }}/${{ github.event.inputs.app_name }}.yaml" >> $GITHUB_OUTPUT manual-deploy: if: github.event_name != 'push' needs: manual uses: ma/binnacles/.github/workflows/reuse.yaml@main with: file: ${{ needs.manual.outputs.FILENAME }} # 引用前一个Job的输出 secrets: artifactory_username: ${{secrets.REGISTRY_USERNAME}} artifactory_password: ${{secrets.REGISTRY_PASSWORD}}
关键说明
GITHUB_OUTPUT是GitHub Actions推荐的步骤输出方式,替代了旧的set-output命令。- Job的
outputs字段必须明确声明要暴露的变量,且只能引用当前Job内步骤的输出。 - 跨Job引用输出时,必须通过
needs.<job-name>.outputs.<output-name>的语法,不能直接用环境变量语法。
内容的提问来源于stack exchange,提问作者Mohammed Ali
相关产品推荐
相关产品推荐

