GitLab 仅手动而不是自动运行管道

Posted

技术标签:

【中文标题】GitLab 仅手动而不是自动运行管道【英文标题】:GitLab run pipeline only manually and not automatically 【发布时间】:2021-02-09 21:30:45 【问题描述】:

我的 GitLab 管道在每次推送时自动执行,我想手动运行管道而不是每次推送。

管道文档:https://docs.gitlab.com/ee/ci/yaml/#workflowrules

我试过这个 .gitlab-ci.yml

workflow:
  rules:
    - when: manual    # Error: workflow:rules:rule when unknown value: manual

【问题讨论】:

【参考方案1】:

我们可以将您的作业定义为仅在 Gitlab 上执行。 Web 选项用于通过使用 GitLab UI 中的运行管道按钮从项目的 CI/CD > 管道部分创建的管道。

only:
   - web

【讨论】:

【参考方案2】:

如文档中所述,我认为您应该指定一个条件,告诉 Gitlab 不要专门针对这样的推送事件运行管道:

workflow:
  rules:
    - if: '$CI_PIPELINE_SOURCE == "push"'
      when: never  # Prevent pipeline run for push event
    - when: always # Run pipeline for all other cases

嗯,这一切都来自官方文档,但我希望这可以帮助你:)

【讨论】:

非常有帮助,谢谢!【参考方案3】:

这是我想出的解决方案:

workflow:
  rules:
    - if: '$CI_PIPELINE_SOURCE == "web"'
      when: always
    - when: never

这指定它仅在您单击 Web UI 中的“运行管道”按钮时才会运行。在所有其他情况下,它不会被触发。

【讨论】:

以上是关于GitLab 仅手动而不是自动运行管道的主要内容,如果未能解决你的问题,请参考以下文章

在 Gitlab 管道中的条件手动阶段之后运行阶段

GITLAB CI 管道,仅使用 git 标签运行作业

在 gitlab 管道中运行“sudo su”

如何在 Gitlab 中基于管道变量运行作业?

在本地运行 GitLab 和 GitLab-Runner docker 实例时,管道中的构建步骤因连接被拒绝错误而失败

如果前一个管道中正在运行相同的作业,如何等待 GitLab 作业?