【问题标题】:Run MR pipeline on “Run pipeline” button在“运行管道”按钮上运行 MR 管道
【发布时间】:2021-12-29 03:11:27
【问题描述】:

我们使用本地 GitLab 服务器。启动我们的 MR 管道的规则之一是它的状态。它不应该是 DraftWIP,如下所述。

  rules:
  - if: $CI_MERGE_REQUEST_TITLE =~ /^WIP/ || $CI_MERGE_REQUEST_TITLE =~ /^Draft/
    when: never
  - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  - if: '$CI_PIPELINE_SOURCE == "web"'

但在这种形式中,它并非在所有情况下都以错误开头:“此管道没有阶段/作业”。我们的开发人员希望 MR 管道在您单击当前 MR 的“管道”部分中的“运行管道”按钮时启动。我在 webhook 和其他任何地方都没有找到单击此按钮的任何指示符。我尝试只使用when: manualif: '$CI_PIPELINE_SOURCE == "web" 和许多其他规则,但仍然没有运气。在这种情况下,有没有办法让流水线运行异常,但在其余情况下保留它?

【问题讨论】:

    标签: gitlab continuous-integration pipeline


    【解决方案1】:

    您必须知道规则是按顺序评估的,一旦应用,评估就会停止。

    在创建管道时评估规则,并按顺序评估规则,直到第一次匹配。找到匹配项后,该作业将包含在管道中或从管道中排除,具体取决于配置。 https://docs.gitlab.com/ee/ci/yaml/#rules

    这意味着,如果您将- if: '$CI_PIPELINE_SOURCE == "web"' 作为第一条规则,它将首先被评估。这意味着如果有人通过网络触发它,它是否是草稿并不重要。

    【讨论】:

    • 对不起,我忘了澄清。有两个不同的“运行管道”按钮,一个在“管道”部分,另一个在“合并请求”中,正如您在这些屏幕截图中看到的那样:prnt.sc/20147f1prnt.sc/201481q 规则 - if: '$CI_PIPELINE_SOURCE == "web"' 仅适用于前者。后者不会,因为 GitLab 将其视为merge_request_event,而不是web。我需要在这两种情况下都运行它,但我找不到在第二种情况下跟踪按钮按下的方法。
    猜你喜欢
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 2021-12-12
    相关资源
    最近更新 更多