当只有降价变化时,有没有办法跳过管道?

Is there a way to skip a pipeline when there are markdown changes only?

目标

发布管道应该开始针对特定分支的部署。
如果只有 文档更改,这应该不会发生(跳过作业)。 (*.md 个文件)

问题

If you change multiple files, but only one file ends in .md, the build job is still skipped. The job does not run for any of the files.

https://docs.gitlab.com/ee/ci/jobs/job_control.html#onlychanges--exceptchanges-examples

那么,是否有可能像上面提到的那样指定一个规则?

到目前为止我尝试了什么(摘录)

那么,如果 "*.md" 不起作用,是否可以还原它?
"**/!(*.md)" # Every file except *.md

这不会执行任何操作

  rules:
    - if: $CI_COMMIT_BRANCH == "main"
      changes:
      - "**/!(*.md)" # Every file except *.md

这总是执行

  rules:
    - if: $CI_COMMIT_BRANCH == "main"
    - changes:
      - "**/!(*.md)"

问题

我必须使用自定义变量来解决这个问题还是有更简单的方法?

联系 GitLab 支持后,我可以在此处记录,目前无法做到这一点。

已针对此特定用例创建了一个新问题:
https://gitlab.com/gitlab-org/gitlab/-/issues/348141

下面是更优雅的解决方案,记录在 GitLab 文档中。

所以有两种方法。

  1. 要在不触发管道的情况下推送提交,请添加 ci skipskip ci,使用任何大写形式添加到您的提交消息中。

  2. 或者,如果您使用的是 Git 2.10 或更高版本,请使用 ci.skip Git 推送选项。 ci.skip 推送选项不会跳过合并请求管道。

    git 推送 --push-option=ci.skip 对于 GL 版本 2.18 及更高版本,即使是短版本

    git push -o ci.skip

参考: