提交Commit触发新流水线
当某一分支开启Merge Request
后只要提交一次commit
就会自动创建一个新的流水线,此时之前的Pipeline
不会被取消,经过下面的设置后可以实现自动取消旧流水线的功能。
❗️通过提交(commit)触发的同一分支流水线可以自动冗余取消,但是通过手动触发的同一分支流水线不会进行自动冗余取消。
- 在项目中选择
设置 > CI/CD
- 进入
流水线通用设置
, 选中自动取消多余的流水线
- 在
gitlab-ci.yaml
配置文件中通过interruptible
关键字搭配使用
如果禁用
自动取消冗余流水线
,则此关键字无效。启用后,在为同一分支上的新更改启动流水线时,会取消正在运行的具有interruptible: true
的作业。
yaml
stages:
- stage1
- stage2
- stage3
step-1:
stage: stage1
script:
- echo "Can be canceled."
interruptible: true
step-2:
stage: stage2
script:
- echo "Can not be canceled."
step-3:
stage: stage3
script:
- echo "Because step-2 can not be canceled, this step can never be canceled, even though it's set as interruptible."
interruptible: true
如果按上面的配置参数运行流水线,一个新的流水线被创建后:
- 旧流水线
step-1
正在运行或刮起时,旧流水线会被取消 - 旧流水线
step-2
正在运行时,旧流水线不会被取消
- 如果有构建
Job
,最好不要设置可取消,避免出现部署不完整的情况。- 要完全取消流水线,需要在每个
Job
中设置interruptible: true
手动触发新流水线
在Job
中通过gitlab api
请求取消流水线。
详见:
Pipelines · Api · Help · GitLab