Github工作流,即使job.com需要成功,也未执行作业
我对Github工作流有一个奇怪的问题。即使来自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
需要(作业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
。你能指出文档中的这些信息吗?或者每个作业都会检查每个相关作业的依赖关系吗?不,我在文档中没有找到。我只是想修改一下你的例子。然而,这与它在中的工作原理非常相似。但很明显,这是不同的工具,但在这一领域,它们的工作原理基本相同。但我曾偶然发现过这篇报告,但认为它与我的问题无关而不予理睬。但在读了更多之后,我的工作流程中发生了什么。谢谢