首页 > 解决方案 > 如何在自动运行的情况下手动运行 GitLab CI 管道?

问题描述

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

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

only:
  - merge_requests

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

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

如果我改用工作流程,

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

迎接我的是一个不同但相当的人

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

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

标签: gitlabgitlab-ci

解决方案


您应该使用规则而不是only/except,因为后者将在未来被弃用。

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

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

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

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

推荐阅读