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

如何执行依赖已跳过任务的GitHub Actions任务?

可行,操作方法如下

默认情况下,GitHub Actions里用needs指定依赖任务时,只有所有依赖任务成功完成,当前任务才会启动;如果依赖任务被跳过,当前任务也会跟着被跳过。要让conditional-job不管依赖的skip-job、deploy和build(按你需求)是成功还是被跳过都能执行,只要修改它的if条件就行。

具体修改方案

调整conditional-job的if条件,明确允许依赖任务处于成功或跳过状态:

name: My GitHub Actions Workflow

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: This job runs on main branch push
        run: echo "JOB name build"

  deploy:
    if: ${{ false }}
    runs-on: ubuntu-latest
    steps:
      - name: This job is skipped
        run: echo "JOB name deploy"
      # 部署步骤...

  skip-job:
    if: ${{ false }} # 这个任务永远不会执行
    runs-on: ubuntu-latest
    steps:
      - name: This job is skipped
        run: echo "This job won't run because the if condition is set to false"

  conditional-job:
    needs:
      - skip-job
      - deploy
      - build # 按需求添加build作为依赖
    # 条件1:所有依赖要么成功要么跳过,才执行
    if: ${{ every(needs.*.result, result => result == 'success' || result == 'skipped') }}
    # 条件2:完全无视依赖状态(失败也执行),用下面这行替换上面的if
    # if: ${{ always() }}
    runs-on: ubuntu-latest
    steps:
      - name: This job runs regardless of dependencies' status
        run: echo "JOB name conditional-job"

关键说明

  • needs.*.result:能拿到所有依赖任务的执行结果,可选值有success、failure、skipped三种。
  • 用every(...)的条件:确保所有依赖任务要么成功要么跳过,符合要求才执行conditional-job,适合不想让依赖失败时执行的场景。
  • 用always()的条件:最宽松,不管依赖任务是成功、失败还是跳过,conditional-job都会执行,适合完全不关心依赖状态的场景。

另外,你原来的conditional-job依赖里没加build,如果需要依赖它的话记得加到needs列表里,按需调整就行。

内容的提问来源于stack exchange,提问作者Ashar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:15:14