Github工作流,即使job.com需要成功,也未执行作业

Github工作流,即使job.com需要成功,也未执行作业,github,workflow,github-actions,Github,Workflow,Github Actions,我对Github工作流有一个奇怪的问题。即使来自需要(作业4)的作业已执行且成功,最后一个作业作业5也不会执行。谁能告诉我这是为什么 工作流文件: name:测试运行v2 关于: 工作流程和调度: 工作: 职位1: 运行日期:ubuntu-18.04 步骤: -运行:echo JOB1 职位2: 需要:工作1 如果:错误 运行日期:ubuntu-18.04 步骤: -运行:echo JOB2;出口1; 工作组3: 需要:工作1 运行日期:ubuntu-18.04 步骤: -运行:echo JOB

我对Github工作流有一个奇怪的问题。即使来自
需要
作业4
)的作业已执行且成功,最后一个作业
作业5
也不会执行。谁能告诉我这是为什么

工作流文件:

name:测试运行v2
关于:
工作流程和调度:
工作:
职位1:
运行日期:ubuntu-18.04
步骤:
-运行:echo JOB1
职位2:
需要:工作1
如果:错误
运行日期:ubuntu-18.04
步骤:
-运行:echo JOB2;出口1;
工作组3:
需要:工作1
运行日期:ubuntu-18.04
步骤:
-运行:echo JOB3
职位4:
需求:[工作2,工作3]
如果:始终()
运行日期:ubuntu-18.04
步骤:
-运行:echo JOB4
职位5:
需要:工作4
运行日期:ubuntu-18.04
步骤:
-运行:echo JOB5
工作流可视化如下所示:

我可以使用以下方法解决此问题:

  job_5:
    needs: job_4
    if: always() && needs.job_4.result == 'success'
    runs-on: ubuntu-18.04
    steps:
        - run: echo JOB5

但是,当
作业4
成功时,为什么它不能按预期工作?

这是一个事实,即您的
作业4
依赖于
作业2
作业3
作业2
失败。因此,当您将
job 4
作为
job 5
的需要时,它不仅检查
job 4
的状态,还检查其依赖关系(在本例中为
job 2
job 3
),而且由于
job 2
失败,因此它无法评估
job 5
的需要。奇怪的是,忽略作业4上的条件
总是()。它可能是一个bug,也可能是故意设计的。我不知道。但是,如果您删除作业2,则一切正常

#https://stackoverflow.com/questions/65735099/github-workflow-job-not-executed-even-when-job-needs-successful
名称:多个作业
关于:
工作流程和调度:
工作:
职位1:
运行日期:ubuntu-18.04
步骤:
-运行:echo JOB1
职位2:
需要:工作1
如果:错误
运行日期:ubuntu-18.04
步骤:
-运行:echo JOB2;出口1;
工作组3:
需要:工作1
运行日期:ubuntu-18.04
步骤:
-运行:echo JOB3
职位4:
需求:[工作3]
如果:始终()
运行日期:ubuntu-18.04
步骤:
-运行:echo JOB4
职位5:
需要:工作4
运行日期:ubuntu-18.04
步骤:
-运行:echo JOB5

因此,如果这个结构是你需要的,你应该使用你的变通方法

您可以在上创建一个主题,因为这确实可能是一个bug


GitHub上有一个悬而未决的问题-。

问题是为什么跳过的作业会被视为失败?你在什么地方找到这个了吗?我查看了文档,只能发现失败的作业是在取消或退出代码时发生的0
。你能指出文档中的这些信息吗?或者每个作业都会检查每个相关作业的依赖关系吗?不,我在文档中没有找到。我只是想修改一下你的例子。然而,这与它在中的工作原理非常相似。但很明显,这是不同的工具,但在这一领域,它们的工作原理基本相同。但我曾偶然发现过这篇报告,但认为它与我的问题无关而不予理睬。但在读了更多之后,我的工作流程中发生了什么。谢谢