【问题标题】:Gitlab-ci : how to run a job when one of numerous other jobs or doneGitlab-ci:当众多其他工作之一或完成时如何运行工作
【发布时间】:2022-06-15 15:28:52
【问题描述】:

我需要设置一个在其他几个作业之一完成后开始运行的作业,这些作业都在同一个阶段。

我尝试使用关键字 "needs" ,但我不知道如何告诉它考虑“如果只完成所有工作中的一项”的情况

我正在寻找的是某种获得它的方法:

如果:JOB_A 完成 OR JOB_BA 完成

然后运行 JOB_C

JOB_A
  stage: mystage
...

JOB_B
  stage: mystage
...

JOB_C:
  stage: mystage
  variables:
    PLAYBOOK_NAME: myplaybook.yml
    INVENTORY_NAME: myInventory.yml
  needs: [JOB_A or JOB_B]  # THIS is a wrong way to set it i think
  when: manual

建议??

【问题讨论】:

  • 你能解释一下用例吗?我们可能会为您的问题找到更合适的解决方案。
  • @JFabianMeier,我有几个工作,每个工作用于部署在特定平台上,当部署结束时,我需要运行一个特定的工作来保存一些关于已经完成的部署的信息跨度>
  • 但是如果一个部署已经发生而另一个仍在运行,你想忽略另一个部署的结果。第一次成功部署会被分析,其他的都不重要,这似乎有点奇怪。
  • 我所有的部署都是手动的,
  • 所以你实际上只是执行许多可能的部署之一?

标签: gitlab continuous-integration gitlab-ci cicd gitlab-pipelines


【解决方案1】:

在您描述的用例中,所需的作业是手动运行的,因此仅在您运行它们时才添加到管道中,因此您应该能够使用可选设置为 true 的需求,如doc here 中所述这种方式的所有工作都适合您的用例。

我不得不说,我不相信在手动作业之后需要自动化作业。在我看来,可以使用环境变量将几个手动作业重构为一个,但我们没有足够的信息来帮助您进行此设计。

【讨论】:

    【解决方案2】:

    这里有一个类似的帖子,使用下游管道可能是您的一种解决方法?

    Start next job when one of the previous manual jobs are a success

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 2018-09-03
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多