[Gitlab CI] 自动取消旧流水线

提交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正在运行时,旧流水线不会被取消
  1. 如果有构建Job,最好不要设置可取消,避免出现部署不完整的情况。
  2. 要完全取消流水线,需要在每个Job中设置interruptible: true

手动触发新流水线

Job中通过gitlab api请求取消流水线。

详见:
Pipelines · Api · Help · GitLab

Reference:

https://docs.gitlab.cn/jh/ci/yaml/index.html#interruptible

相关推荐
卓码软件测评5 小时前
第三方CMA.CNAS软件评测机构【深入理解Apifox的数据模型:定义和管理API数据结构】
测试工具·ci/cd·测试用例
oMcLin1 天前
如何在 Red Hat OpenShift 上配置并优化 CI/CD 流水线,提升容器化应用的部署速度与可靠性?
ci/cd·openshift
卓码软件测评1 天前
CMA/CNAS双资质软件测评机构【Apifox高效编写自动化测试用例的技巧和规范】
测试工具·ci/cd·性能优化·单元测试·测试用例
企鹅郁金香1 天前
使用Docker部署Gitlab和Gerrit (一)
docker·容器·gitlab·gerrit部署
一次旅行1 天前
Jenkins实现CI/CD流水线
运维·servlet·ci/cd·jenkins·测试总结
可爱又迷人的反派角色“yang”2 天前
CICD持续集成Ruo-Yi项目
linux·运维·网络·ci/cd·docker·容器
少云清2 天前
【接口测试】6_持续集成 _代码
ci/cd·接口测试·持续集成
Java 码农2 天前
gitlab gitrunner springboot 多环境多分支部署 (非容器方式,使用原生linux 环境)
linux·spring boot·gitlab
喜欢吃豆2 天前
代理式 CI/CD 的崛起:Claude Code Action 深度技术分析报告
人工智能·ci/cd·架构·大模型
卓码软件测评2 天前
第三方软件国产化测评机构【API验收测试,除了Postman,还有什么推荐工具?】
测试工具·ci/cd·性能优化·单元测试·测试用例·postman