如何在 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 设置中设置此变量,然后再取消设置。
我同意@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 将 运行。
抱歉问题不太准确!
你好,我的 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 设置中设置此变量,然后再取消设置。
我同意@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 将 运行。
抱歉问题不太准确!