GitLab CI/CD 如何做自动停止旧的流水线
在日常的流水线部署中,我们经常会遇到频繁地推送代码的场景。
如:一个分支,3个人在一分钟内都合并了一次,那么就会触发三次流水线,虽然触发三次流水线没有问题,但我们有时想要一个自动取消多余流水线的功能。需求的意思就是 如果当前有pengding或者running的流水线,此时又有新的流水线被触发,那么我们期望能够自动取消旧的流水线,一是保证资源的合理利用,二是保证不会出现部署旧的流水线的内容。
那么在gitlab ci/cd中具体该怎么做那?
一图胜千言。
设置完这个属性后, 运行一段时间,你又会发现新的问题。
我这一个流水线每次都要跑50分钟,好家伙,快跑完的时候,你突然又来了一个流水线,导致我的流水线被取消了。 这种时候,谁遇到不急啊?
该怎么办那?
开发经验丰富的gitlab人员已经考虑过这个问题了。
他们给出的一个解决方案就是 使用 interruptible
关键词
该关键词,定义到一个具体的job上,表明该任务是否能够被新的流水线打断,取消。默认为false, 即不可取消,不可被打断。
只有在勾选了 Auto-cancel redundant pipelines
才会生效。
下面来看一个例子。
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
如果仅仅是step-1
正在运行或者pending,那么流水线可能会被新流水打断。
但是一旦step-2
开始运行后,该流水线就不会再被新的流水线打断。
文章来源: fizzz.blog.csdn.net,作者:拿我格子衫来,版权归原作者所有,如需转载,请联系作者。
原文链接:fizzz.blog.csdn.net/article/details/116531150
- 点赞
- 收藏
- 关注作者
评论(0)