如何在 gitlab-ci 中 rebase 后禁用作业启动?

How to diable job start after rebase in gitlab-ci?

你好,我的 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 与任何其他 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 向我建议了一个解决方法:

在我按下 Gitlab 界面中的“Rebase”按钮之前,我可以为我的 MR 设置特殊标签(即 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 将 运行。

抱歉问题不太准确!