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

提交Commit触发新流水线

当某一分支开启Merge Request后只要提交一次commit就会自动创建一个新的流水线,此时之前的Pipeline不会被取消,经过下面的设置后可以实现自动取消旧流水线的功能。

❗️通过提交(commit)触发的同一分支流水线可以自动冗余取消,但是通过手动触发的同一分支流水线不会进行自动冗余取消。

  • 在项目中选择设置 > CI/CD
  • 进入流水线通用设置, 选中自动取消多余的流水线

image.png

  • gitlab-ci.yaml配置文件中通过interruptible关键字搭配使用

如果禁用自动取消冗余流水线,则此关键字无效。启用后,在为同一分支上的新更改启动流水线时,会取消正在运行的具有interruptible: true的作业。

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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 13:48:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 13:48:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 13:48:05       87 阅读
  4. Python语言-面向对象

    2024-03-11 13:48:05       96 阅读

热门阅读

  1. linux系统Docker容器Dockerfile示例

    2024-03-11 13:48:05       47 阅读
  2. RabbitMQ实战:docker compose 搭建RabbitMQ

    2024-03-11 13:48:05       42 阅读
  3. Neovim基本介绍

    2024-03-11 13:48:05       46 阅读
  4. 单机Kubenetes集群——KinD安装

    2024-03-11 13:48:05       47 阅读
  5. 电商API接口与数据分析、数据挖掘的结合

    2024-03-11 13:48:05       44 阅读
  6. jvm八股

    jvm八股

    2024-03-11 13:48:05      40 阅读
  7. 微信小程序-自定义简易顶部导航

    2024-03-11 13:48:05       40 阅读
  8. linux Shell 命令行-02-var 变量

    2024-03-11 13:48:05       43 阅读
  9. MySQL之主从同步(openEuler版)

    2024-03-11 13:48:05       44 阅读
  10. 【SQL - 软件 - MySQL】随笔 - 查看已有数据库

    2024-03-11 13:48:05       48 阅读