如何在自动运行的情况下手动运行 GitLab CI 管道?

时间:2021-05-02 21:05:05

标签: gitlab gitlab-ci

我想要一个需要在每个合并请求时运行的管道。我还希望能够手动运行该管道,以便预测合并问题。

但是,如果我将我的工作指定为

only:
  - merge_requests

尝试手动运行管道时,我收到了

<块引用>

管道无法运行。此管道没有阶段/作业。

如果我改用工作流,

include:
  - template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml'

我遇到了一个不同但相同的人

<块引用>

管道无法运行。工作流规则过滤掉的管道。

那么如何设置合并请求所需但也可由用户在其功能分支上手动运行的管道?

2 个答案:

答案 0 :(得分:2)

您应该使用 rules 而不是 only/except,因为后者将来会被弃用。

但是,您可以使用 workflow 并定义整个管道的创建时间,而不是配置每个作业的运行时间。

在您的示例中,以下 workflow 将创建一个管道,如果它是一个合并请求并且管道是在没有推送的情况下手动触发的。

如需进一步参考,您可以查看 CI_PIPELINE_SOURCE 可能的 values,如果您想在将来更改它。

workflow:
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
    - if: '$CI_PIPELINE_SOURCE == "web"'

答案 1 :(得分:1)

通常,我建议您使用较新的规则语句,而不是仅使用这种方式,如果您只想在合并请求中手动运行它,我会执行以下操作:

enter image description here

CI_PIPELINE_SOURCE 是 Gitlab ci 中的默认变量,应该对您的用例有用。

相关问题