如果另一个GitHub作业失败,则停止正在进行的GitHub作业(失败时停止)

如果另一个GitHub作业失败,则停止正在进行的GitHub作业(失败时停止),github,github-actions,Github,Github Actions,TL;DR:并行运行作业a和b。如果a失败,请在b仍在运行时停止b的执行 我的公司使用GitHub操作来部署我们的代码 我们部署的第一步是构建dockers并将其推到DockerHub 我们为我们的代码编写了一个测试,我们希望它与构建dockers并行运行 这两项都是独立的工作,根据前两项的成功,我们还有一些工作 现在,如果测试作业失败,另一个作业将继续运行,但显然,下一个作业不会运行,因为测试作业失败 如果测试失败,我想做的是在docker构建作业运行时取消它 可能吗?在搜索了web、Stac

TL;DR:并行运行作业a和b。如果a失败,请在b仍在运行时停止b的执行

我的公司使用GitHub操作来部署我们的代码

我们部署的第一步是构建dockers并将其推到DockerHub

我们为我们的代码编写了一个测试,我们希望它与构建dockers并行运行

这两项都是独立的工作,根据前两项的成功,我们还有一些工作

现在,如果测试作业失败,另一个作业将继续运行,但显然,下一个作业不会运行,因为测试作业失败

如果测试失败,我想做的是在docker构建作业运行时取消它

可能吗?在搜索了web、StackOverflow和GitHub操作页面之后,我还没有找到一种方法


谢谢

您可以指定
需要
选项并引用作业名称。见:

例如:

jobs:
  build:
    ...
  deploy:
    needs: build
    ...

如果我理解正确的话,让它并行运行的问题是,您可以部署未经完全测试的代码(即,如果docker推送后失败,那么就太晚了)。我想你还是想一个接一个地做这些事情。另外,看看你的GitHub操作,看看你做了什么,也会有帮助。你的工作流只有作业a和作业b?有一种方法可以使用API取消整个工作流,但我不确定这是您想要的。如果作业a出现问题,您可以取消工作流,这意味着作业b和以下作业也将停止。我想您可以在不同的工作流中分离这两个作业。然后,如果您的测试工作流失败,您可以使用Github API上的服务向该工作流添加一个新作业,以取消另一个工作流。谢谢大家!但这不是我们想要解决的方法。无论如何,谢谢。我使用的是
需要
,但这会使第二个作业等待第一个作业完成,我想同时运行这两个作业,如果一个作业失败,则停止另一个作业。请参阅我上面关于并行执行此操作的评论。我不推荐。您可能会发布未经测试的代码,然后需要删除这些代码。在我看来,Standard DevOps会告诉您在发布之前运行单元测试和端到端测试。谢谢您的建议,但是在构建和测试之后,我们还有其他工作可以防止错误代码实际部署。我们希望通过并行运行它们来节省时间。无论如何谢谢你!我懂了。我现在能想到的拥有并行作业的唯一方法是拥有独立的GitHub操作工作流,并将它们构建为相互依赖。我现在不能提供一个完整的答案,但以后可能会。请提供您的GitHub操作工作流。