当前位置: 首页 > news >正文

CI/CD 自动化:最大限度地提高极狐GitLab 群组的“部署冻结”影响

极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitLab,详情可以参考极狐GitLab 下载安装官网。

GitLab 中文版学习资料

  • 驭码CodeRider 官网:https://coderider.gitlab.cn/
  • GitLab 中文版官网:https://gitlab.cn
  • GitLab 中文文档:https://docs.gitlab.cn
  • GitLab 中文下载安装:https://gitlab.cn/install

在持续集成和持续部署 (CI/CD) 的动态环境中,在假期、产品发布或维护时段等关键时期保持系统稳定性可能是具有挑战性的。在活动高峰期引入新代码会增加影响用户体验的风险。为了在创新和稳定性之间取得平衡,组织可能需要群组级别的部署冻结——在跨群组将新代码更改部署到某些分支或环境时进行战略性暂停。

鉴于极狐GitLab 可用于持续集成和持续部署工作,极狐GitLab 的 Deploy Freeze 功能旨在满足这一确切需求。

在项目过程中,部署冻结可以防止你在设置部署冻结期指定的时间段内产生新版本而造成的困扰。部署冻结有助于减少为单个项目持续部署更改时的不确定性和风险。

然而,大多数团队,不可能做到一个项目就能代表其所有生产环境。鉴于部署冻结是在项目级别设置的,在许多项目中管理和执行部署冻结可能是一项艰巨且容易出错的任务,从而导致不可预测性和中断。显然,需要一个自动化的跨项目解决方案来确保稳定性。

什么是群组部署冻结?

极狐GitLab 群组部署冻结项目将单个项目部署冻结的概念提升到了一个新的层次。它使您能够从极狐GitLab UI 上,来对极狐GitLab 群组内的一个或多个项目强制执行相同的部署限制。

无论您是管理一大套微服务还是管理一组相关项目,群组管理的部署冻结解决方案都提供了一种集中的机制来保持稳定性。

群组部署冻结的优势

1、集中控制

通过允许您从单个位置管理多个项目的部署冻结来遵守您的部署策略。这简化了流程并减少了人为的误操作。

2. 集团范围同步

在整个极狐GitLab 群组中强制部署冻结可确保所有项目同时收到相同的计划。这可以保持项目之间的一致性。

3. 简化协作

开发和运维团队的变化可见性可以有效地协调他们的工作。

如何使用极狐GitLab 群组部署冻结?

借助极狐GitLab 群组部署冻结功能,极狐GitLab CI 成为用于与操作相关更改的通用自动化工具,例如在许多项目上设置部署冻结。

在以下步骤中,您将成功设置群组部署冻结功能。切记把测试做到底并确认下团队部署过程的任何具体细微差别。

先决条件

  • 极狐GitLab 账户 - 您需要一个活跃的极狐GitLab 账户,该账户具有访问和管理目标极狐GitLab 群组内的项目所需的权限。
  • 极狐GitLab 个人访问令牌 (PAT) - 生成一个极狐GitLab PAT,该 PAT 具有通过极狐GitLab API 读取和写入目标 极狐GitLab 群组内项目的权限。 Python 脚本将使用此令牌来验证 API 请求。
  • Python 环境 - 确保您的计算机上或计划运行 Python 脚本的环境中设置了 Python 环境。该脚本是用 Python 编写的,因此您需要兼容的 Python 解释器。
  • Python 库 - 安装脚本使用所需的 Python 库。其中包括 requests、envparse 和 python-gitlab。您可以使用 pip 来安装这些库。
  • 极狐GitLab 群组详细信息 - 确定要管理其部署冻结的极狐GitLab 群组。您将需要群组的 slug(路径)来指定脚本将在哪个群组上运行。
  • 时区选择 - 决定要安排部署冻结的时区。时区选择可确保根据您组织的首选时区准确计时冻结期。

开始

要使用极狐GitLab CI 创作和自动化所有项目的批量更新部署冻结的过程,请 Fork 一下 Deploy Freeze 项目,然后该项目将创建一个 CI/CD 流水线,迭代你的项目并应用所需的部署冻结计划。 你可以自定义此项目以适合你团队的工作流程。

提供的项目包含一个 .gitlab-ci.yml 文件和一个 Python 脚本,旨在自动管理极狐GitLab 组内多个项目的部署冻结。它使用极狐GitLab API 和各种 Python 库来创建和删除部署冻结期,并设计作为 CI/CD 流水线的一部分运行,以确保极狐GitLab 组内部署期间的代码稳定性。

提交并推送更改

提交更改并将其推送到存储库以触发 CI/CD 流水线。

流水线执行

  • 在极狐GitLab UI 上的 Group Deploy Freeze 项目中,转到 Pipelines。
  • 选择页面右上角的“运行流水线”选项。
  • 您应该看到 .gitlab-ci.yml 文件中定义的变量,如下所示:

在这里插入图片描述

  • 定义变量 FREEZE_STARTFREEZE_ENDCRON_TIME_ZONEGROUP_SLUG 的值,然后运行流水线。您可以通过跳到 FREEZE_START 和 FREEZE_END 变量中的下一行来定义多个冻结期。
  • 一旦流水线成功,冻结期就可以填充到定义组内的所有项目中。

监控和验证

验证这些部署冻结期是否按预期创建和管理。

检查您的极狐GitLab 群组的项目是否在指定时间段内部署冻结。

在这里插入图片描述

定制与迭代

  • 如果需要,可以根据组织的要求迭代配置脚本或流水线。
  • 根据需要调整冻结期、时区、项目详细信息或其他设置。

你可以按照部署冻结文档来优化组部署功能,该文档概述了设置 .freezedeployment 作业的步骤,该作业可以在存在 CI_DEPLOY_FREEZE 变量时有条件地阻止部署作业。通过包含 .freezedeployment 模板并将其扩展到项目的 .gitlab-ci.yml 文件中,您可以防止在冻结期间进行部署,从而确保代码稳定性。一旦冻结期结束,就可以进行手动部署干预,从而实现整个集团项目的受控和可预测的部署过程。

结果

通过将部署冻结扩展到群组级别,团队可以轻松简化和增强其部署策略,以确保一致性,防止在你指定的时间段内意外发布生产,无论是大型公司活动还是假期。凭借极狐GitLab API、CI/CD 流水线的强大功能以及 Python 脚本的灵活性,群组部署冻结是你跨不同项目维护代码稳定性和可预测性的盟友。

相关文章:

CI/CD 自动化:最大限度地提高极狐GitLab 群组的“部署冻结”影响

极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitL…...

单元训练10:定时器实现秒表功能-数组方式

蓝桥杯 小蜜蜂 单元训练10:定时器实现秒表功能-数组方式 /** Description:* Author: fdzhang* Email: zfdcqq.com* Date: 2024-08-15 21:58:53* LastEditTime: 2024-08-16 19:07:27* LastEditors: fdzhang*/#include "stc15f2k60s2.h"#define LED(x) …...

国外项目管理软件最佳实践:选型与应用

国内外主流的10款国外项目管理软件对比:PingCode、Worktile、Asana、Trello、Monday.com、ClickUp、Wrike、ProofHub、Zoho Projects、Hive。 在寻找适合的国外项目管理软件时,你是否感到不知从何选择?市场上琳琅满目的选项往往令人眼花缭乱&…...

Angular组件概念

Angular 是一个由 Google 维护的开源前端框架,用于构建单页面应用(SPA)和移动Web应用。Angular 应用由多个组件(Components)组成,这些组件是 Angular 应用构建块的基本单位。 1. Angular 组件的基本概念 …...

嵌入式人工智能ESP32(4-PWM呼吸灯)

1、PWM基本原理 PWM(Pulse-width modulation)是脉冲宽度调制的缩写。脉冲宽度调制是一种模拟信号电平数字编码方法。脉冲宽度调制PWM是通过将有效的电信号分散成离散形式从而来降低电信号所传递的平均功率的一种方式。所以根据面积等效法则,…...

继承 (上)【C++】

文章目录 继承的定义继承的语法继承权限和继承到子类后父类成员的访问限定符的变化继承到子类后父类成员的访问限定符的变化 子类继承到了父类的什么?继承中的作用域子类和父类之间的赋值转换子类对象可以直接赋值给父类对象,但是父类对象不能直接赋值给…...

WPF打印控件内容

当我们想打印控件内容时&#xff0c;如一个Grid中的内容&#xff0c;可以用WPF中PrintDialog类的PrintVisual()方法来实现 界面如下&#xff1a; XAML代码如下 <Grid><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition Width"300"…...

[C++][opencv]基于opencv实现photoshop算法图像剪切

【测试环境】 vs2019 opencv4.8.0 【效果演示】 【核心实现代码】 //图像剪切 //参数&#xff1a;src为源图像&#xff0c; dst为结果图像, rect为剪切区域 //返回值&#xff1a;返回0表示成功&#xff0c;否则返回错误代码 int imageCrop(InputArray src, OutputArray dst,…...

四十、大数据技术之Kafka3.x(3)

&#x1f33b;&#x1f33b; 目录 一、Kafka Broker1.1 Kafka Broker工作流程1.1.1 Zookeeper 存储的Kafka信息1.1.2 Kafka Broker 总体工作流程1.1.3 Broker 重要参数 1.2 生产经验——节点服役和退役1.2.1 服役新节点1.2.2 退役旧节点 1.3 Kafka 副本1.3.1 副本基本信息1.3.2…...

redis——基本命令

什么是Reids&#xff08;REmote Dictionary Server&#xff09; Redis是现在主流的数据库之一&#xff0c;是一个使用ANSI C编写的开源、包含多种数据结构、支持网络的、基于内存、可选持久性的键值对存储数据。 特性 1.速度快 &#xff1a;Redis的数据全部存储瑜内存中。 …...

pytorch实现单层线性回归模型

文章目录 简述代码重构要点 数学模型、运行结果数据构建与分批模型封装运行测试 简述 python使用 数值微分法 求梯度&#xff0c;实现单层线性回归-CSDN博客 python使用 计算图&#xff08;forward与backward&#xff09; 求梯度&#xff0c;实现单层线性回归-CSDN博客 数值微分…...

智能小家电能否利用亚马逊VC搭上跨境快车?——WAYLI威利跨境助力商家

智能小家电行业在全球化背景下&#xff0c;正迎来前所未有的发展机遇。亚马逊为品牌商和制造商提供的一站式服务平台&#xff0c;为智能小家电企业提供了搭乘跨境快车、拓展国际市场的绝佳机会。 首先&#xff0c;亚马逊VC平台能够帮助智能小家电企业简化与亚马逊的合作流程&am…...

顺丰科技25届秋季校园招聘常见问题答疑及校招网申测评笔试题型分析SHL题库Verify测评

Q&#xff1a;顺丰科技2025届校园招聘面向对象是&#xff1f; A&#xff1a;2025届应届毕业生&#xff0c;毕业时间段为2024年10月1日至2025年9月30日&#xff08;不满足以上毕业时间的同学可以关注顺丰科技社会招聘或实习生招聘&#xff09;。 Q&#xff1a;我可以投递几个岗…...

深入理解 Kibana 配置文件:一份详尽的指南

Kibana 是一个强大的数据可视化平台&#xff0c;它允许用户通过 Elasticsearch 轻松地探索和分析数据。Kibana 的配置文件 kibana.yml 是定制和优化 Kibana 行为的关键。在这篇博客中&#xff0c;我们将深入探讨 kibana.yml 文件中的各个配置项&#xff0c;并提供示例说明。 服…...

算法的学习笔记—链表中倒数第 K 个结点(牛客JZ22)

&#x1f600;前言 在编程过程中&#xff0c;链表是一种常见的数据结构&#xff0c;它能够高效地进行插入和删除操作。然而&#xff0c;遍历链表并找到特定节点是一个典型的挑战&#xff0c;尤其是当我们需要找到链表中倒数第 K 个节点时。本文将详细介绍如何使用双指针技术来解…...

聊聊场景及场景测试

在我们进行测试过程中&#xff0c;有一种黑盒测试叫场景测试&#xff0c;我们完全是从用户的角度去理解系统&#xff0c;从而可以挖掘用户的隐含需求。 场景是指用户会使用这个系统来完成预定目标的所有情况的集合。 场景本身也代表了用户的需求&#xff0c;所以我们可以认为…...

Spring Web MVC入门(中)

1. 请求 访问不同的路径, 就是发送不同的请求. 在发送请求时, 可能会带⼀些参数, 所以学习Spring的请求, 主要 是学习如何传递参数到后端以及后端如何接收. 传递参数, 咱们主要是使⽤浏览器和Postman来模拟&#xff1b; 1.1 传递单个参数 接收单个参数&#xff0c;在Spring MV…...

Django后端架构开发:后台管理与会话技术详解

&#x1f31f; Django后端架构开发&#xff1a;后台管理与会话技术详解 &#x1f539; 后台管理&#xff1a;自定义模型类 Django的后台管理系统提供了强大的模型管理功能&#xff0c;你可以通过自定义模型类来控制模型在后台管理界面的显示和操作。自定义模型类通过继承admin…...

挑战Infiniband, 爆改Ethernet(2)

挑战Infiniband, 爆改Ethernet之物理层 前面说过UE为了挑战Infiniband在AI集群和HPC领域的优势地位&#xff0c;计划爆改以太网技术&#xff0c;以适应AI和HPC集群对高性能、可扩展网络的需求。正如UE联盟关于愿景的说明中宣称的&#xff1a;”提供一个完整的架构&#xff0c;通…...

Postman文件上传接口测试

接口介绍 返回示例 测试步骤 1.添加一个新请求&#xff0c;修改请求名&#xff0c;填写URL&#xff0c;选择请求方式 2.将剩下的media参数放在请求body里&#xff0c;选择form-data&#xff0c;选择key右边的类型为file类型&#xff0c;就会出现选择文件的按钮Select Files&a…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...