仅当有降价更改时有没有办法跳过管道?

kap*_*siR 11 gitlab gitlab-ci gitlab-ci.yml

目标

发布管道应该启动特定分支的部署。如果只有文档更改,则不应
发生 这种情况(跳过作业)。(文件)*.md

问题

如果您更改多个文件,但只有一个文件以 结尾.mdbuild则仍会跳过该作业。该作业不会针对任何文件运行。

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
Run Code Online (Sandbox Code Playgroud)

这总是执行

  rules:
    - if: $CI_COMMIT_BRANCH == "main"
    - changes:
      - "**/!(*.md)"
Run Code Online (Sandbox Code Playgroud)

问题

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

kap*_*siR 8

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

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


San*_*ani 5

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

所以有两种方法。

  1. 要推送提交而不触发管道,请使用任意大小写将[ci skip]或添加[skip ci]到提交消息中。

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

    git push --push-option=ci.skip 对于 GL 版本 2.18 及更高版本,甚至是短版本

    git push -o ci.skip

参考: