如何在GitHub Workflow中获取传递依赖的Job输出?
GitHub Workflow传递依赖Job输出访问方案
在GitHub Actions中,只有直接被当前Job的needs声明的前置Job,才能被访问其输出——传递依赖的Job输出不会自动向下暴露。要在somethingElseAgain中访问build的输出且不修改依赖链,最稳妥的方式是通过中间JobsomethingElse转发输出。
具体实现
修改somethingElse的配置,添加outputs字段,将build的输出直接转发出去:
jobs: build: name: Build Application runs-on: ubuntu-22.04 container: image: some-image outputs: POM_VERSION: ${{ steps.variables.outputs.POM_VERSION }} JAR_PROJECT_VERSION: ${{ steps.variables.outputs.JAR_PROJECT_VERSION }} steps: # ... 填充输出的原有步骤 somethingElse: name: Do Something Else needs: [build] runs-on: ubuntu-22.04 container: image: some-image # 转发build的输出,供后续Job使用 outputs: POM_VERSION: ${{ needs.build.outputs.POM_VERSION }} JAR_PROJECT_VERSION: ${{ needs.build.outputs.JAR_PROJECT_VERSION }} steps: # ... 原有执行步骤 somethingElseAgain: name: Do Something Else Again needs: [somethingElse] runs-on: ubuntu-22.04 container: image: some-image steps: - name: 使用build的输出 run: echo "JAR项目版本:${{ needs.somethingElse.outputs.JAR_PROJECT_VERSION }}"
方案说明
- 这种方式保持了原有的依赖链逻辑,
somethingElseAgain仍只依赖somethingElse,不会让工作流可视化图变得混乱。 - 转发的输出完全继承自
build,后续Job无需感知底层依赖的存在,符合模块化的设计思路。
内容的提问来源于stack exchange,提问作者PurryFury
相关产品推荐
相关产品推荐

