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_START
、FREEZE_END
、CRON_TIME_ZONE
和GROUP_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打印控件内容
当我们想打印控件内容时,如一个Grid中的内容,可以用WPF中PrintDialog类的PrintVisual()方法来实现 界面如下: XAML代码如下 <Grid><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition Width"300"…...

[C++][opencv]基于opencv实现photoshop算法图像剪切
【测试环境】 vs2019 opencv4.8.0 【效果演示】 【核心实现代码】 //图像剪切 //参数:src为源图像, dst为结果图像, rect为剪切区域 //返回值:返回0表示成功,否则返回错误代码 int imageCrop(InputArray src, OutputArray dst,…...

四十、大数据技术之Kafka3.x(3)
🌻🌻 目录 一、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(REmote Dictionary Server) Redis是现在主流的数据库之一,是一个使用ANSI C编写的开源、包含多种数据结构、支持网络的、基于内存、可选持久性的键值对存储数据。 特性 1.速度快 :Redis的数据全部存储瑜内存中。 …...

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

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

顺丰科技25届秋季校园招聘常见问题答疑及校招网申测评笔试题型分析SHL题库Verify测评
Q:顺丰科技2025届校园招聘面向对象是? A:2025届应届毕业生,毕业时间段为2024年10月1日至2025年9月30日(不满足以上毕业时间的同学可以关注顺丰科技社会招聘或实习生招聘)。 Q:我可以投递几个岗…...
深入理解 Kibana 配置文件:一份详尽的指南
Kibana 是一个强大的数据可视化平台,它允许用户通过 Elasticsearch 轻松地探索和分析数据。Kibana 的配置文件 kibana.yml 是定制和优化 Kibana 行为的关键。在这篇博客中,我们将深入探讨 kibana.yml 文件中的各个配置项,并提供示例说明。 服…...

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

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

Spring Web MVC入门(中)
1. 请求 访问不同的路径, 就是发送不同的请求. 在发送请求时, 可能会带⼀些参数, 所以学习Spring的请求, 主要 是学习如何传递参数到后端以及后端如何接收. 传递参数, 咱们主要是使⽤浏览器和Postman来模拟; 1.1 传递单个参数 接收单个参数,在Spring MV…...
Django后端架构开发:后台管理与会话技术详解
🌟 Django后端架构开发:后台管理与会话技术详解 🔹 后台管理:自定义模型类 Django的后台管理系统提供了强大的模型管理功能,你可以通过自定义模型类来控制模型在后台管理界面的显示和操作。自定义模型类通过继承admin…...
挑战Infiniband, 爆改Ethernet(2)
挑战Infiniband, 爆改Ethernet之物理层 前面说过UE为了挑战Infiniband在AI集群和HPC领域的优势地位,计划爆改以太网技术,以适应AI和HPC集群对高性能、可扩展网络的需求。正如UE联盟关于愿景的说明中宣称的:”提供一个完整的架构,通…...

Postman文件上传接口测试
接口介绍 返回示例 测试步骤 1.添加一个新请求,修改请求名,填写URL,选择请求方式 2.将剩下的media参数放在请求body里,选择form-data,选择key右边的类型为file类型,就会出现选择文件的按钮Select Files&a…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...