在 gitlab-ci 中 rebase 后如何禁用作业开始?

问题描述

美好的一天,我的 gitlab-task 有这个规则

workflow:

   rules:

- if: '$CUSTOM_ENV'
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
  when: never
- if: '$CI_COMMIT_BRANCH'
- when: always

...

 myTask:

  stage: build

  script:
    - "SOME SCRIPT"

  rules:

- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CUSTOM_ENV'
  when: manual

...

myTask 在所有 merge_request_event 中运行。如何创建在(rebase + push)之后不运行 myTask 的“if”?

解决方法

没有什么特别可以将 rebase 和 push 与任何其他推送事件区分开来。

但是,您可以为此提供 git push options

git push -o ci.variable="SKIP_MY_TASK=true"

然后在您的 yaml 中:

- if: '$SKIP_MY_TASK && $CI_PIPELINE_SOURCE == "push" && $CI_OPEN_MERGE_REQUESTS && $CI_COMMIT_BRANCH'
  when: never

如果您从 UI 重新设置基准,您或许可以在 CI/CD 设置中设置此变量,然后再取消设置。

Reference

,

我同意@sytech,它可以工作,但不能解决我的问题。 Сolleagues 向我推荐了 WA:

在我按下 Gitlab 界面中的“Rebase”按钮之前,我可以为我的 MR 设置 scepial-label(即skip-myTask)。一键操作。之后,我为 myTask 添加新规则。

- if: '$CI_MERGE_REQUEST_LABELS =~ /.*skip-myTask.*/'
      when: manual
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CUSTOM_ENV'
      when: manual

请务必保存此订单,否则 myTask 将运行。

抱歉我的问题不太准确!