GitHub Actions中如何在非步骤场景下获取Job名称?
GitHub Actions Job级if条件中获取Job ID的解决方案
问题根源
GitHub官方文档说明(翻译核心内容):github.job这个上下文变量仅在工作流的步骤执行阶段生效。在Job定义的顶层区域(比如if条件判断、with参数初始化这类还没进入步骤执行的场景),该变量尚未被赋值,因此会返回null。
可行解决办法
既然Job ID是你自己定义的(比如示例里的sample),直接在需要的地方使用这个硬编码的ID就行,也可以用YAML变量统一维护避免重复修改:
方案1:直接硬编码Job ID
直接把Job ID字符串写进if条件里,最简单直接:
jobs: sample: if: ${{ github.event.inputs.name == 'sample' }} uses: ./.github/workflows/sampleworkflow.yml with: name: 'sample'
方案2:用YAML变量统一管理
如果怕后续修改Job ID时要改多处,可以用YAML的变量或锚点来统一维护:
用锚点复用
jobs: sample: ¤t-job-id if: ${{ github.event.inputs.name == 'sample' }} uses: ./.github/workflows/sampleworkflow.yml with: name: *current-job-id
用全局变量定义
vars: TARGET_JOB_ID: 'sample' jobs: ${{ vars.TARGET_JOB_ID }}: if: ${{ github.event.inputs.name == vars.TARGET_JOB_ID }} uses: ./.github/workflows/sampleworkflow.yml with: name: ${{ vars.TARGET_JOB_ID }}
额外说明
github.job的设计初衷是在步骤执行时标识当前运行的作业,只有当作业启动并开始执行步骤后,这个变量才会被填充。在Job的定义阶段(比如条件判断、引用子工作流的环节),作业还未进入执行流程,所以无法通过该上下文获取ID。
内容的提问来源于stack exchange,提问作者Coder3000
相关产品推荐
相关产品推荐

