GitLab CI/CD 如何做自动停止旧的流水线
【摘要】
在日常的流水线部署中,我们经常会遇到频繁地推送代码的场景。 如:一个分支,3个人在一分钟内都合并了一次,那么就会触发三次流水线,虽然触发三次流水线没有问题,但我们有时想要一个自动取消多余流水线的功能。需求...
在日常的流水线部署中,我们经常会遇到频繁地推送代码的场景。
如:一个分支,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
如果仅仅是step-1
正在运行或者pending,那么流水线可能会被新流水打断。
但是一旦step-2
开始运行后,该流水线就不会再被新的流水线打断。
文章来源: fizzz.blog.csdn.net,作者:拿我格子衫来,版权归原作者所有,如需转载,请联系作者。
原文链接:fizzz.blog.csdn.net/article/details/116531150
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)