【问题标题】:How to run a job only before MR merge into master?如何仅在 MR 合并到 master 之前运行作业?
【发布时间】:2019-09-20 20:46:19
【问题描述】:

我正在尝试实现一项仅在开发人员尝试将 MR 合并到主服务器时才会调用的作业。我该怎么做?

我尝试过使用

only:
  - merge_requests

这几乎是我所需要的,只是我不想在每次 MR 更新时都运行这个作业——我只想在合并到 master 之前运行它。

我认为也许有一种方法可以使用新的 GitLab 功能 - Pipelines for Merged Results,但据我了解,我仍然需要在每次 MR 更新时运行这项工作。

有没有我想念的方法来做到这一点?例如,我可以只为Merge trains 调用此工作吗?这也是一种解决方案?

【问题讨论】:

  • gitlab 无法判断合并前的管道何时运行。在合并点 - 管道已经通过。您的选择是在每次提交或合并后运行它(合并分支的新管道)

标签: gitlab gitlab-ci


【解决方案1】:

尝试以下方法:

only:
   - master

【讨论】:

  • 谢谢,我想过,但在那种情况下,管道只会在合并后失败,对吧?如果我找不到其他任何东西,这就是我会采取的方式,但我希望开发人员可以按下“合并”,这将使用我想要的工作调用管道,并在完成时将 MR 合并到 master 中或如果失败则中止合并。
【解决方案2】:

您可能需要使用advanced version of only 并拥有类似的东西:

only:
  refs:
    - merge_requests
  variables:
    - $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"

在这种情况下,它只会在这两个条件都为真时运行,因为

各个键通过 AND 逻辑连接

【讨论】:

  • 谢谢!但是如果我理解正确的话,通过这个设置,我的工作仍然会在每次更新我的 MR 时激活,而不仅仅是在我执行合并到 master 时。
  • 抱歉,我想我可能误读了您想要达到的目标。如果您只在按下合并按钮后才想要它,那么我会建议@bagerard 在他们的答案中写了什么,但如果管道失败,它不会阻止合并。这就是在创建 MR 时让它运行的目的。
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 2012-03-01
  • 2016-01-13
  • 2021-03-25
  • 1970-01-01
  • 2020-05-05
相关资源
最近更新 更多