返回文章列表
CI/CD | 2024-04-09

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

极狐GitLab

本篇可以了解群组级别管理下部署冻结的好处,也可以遵循下面步骤一步一步实施。

 

 

在持续集成和持续部署 (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_ZONE 和 GROUP_SLUG 的值,然后运行流水线。您可以通过跳到 FREEZE_START 和 FREEZE_END 变量中的下一行来定义多个冻结期。
  • 一旦流水线成功,冻结期就可以填充到定义组内的所有项目中。

 

监控和验证

 

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

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

 

定制与迭代

 

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

 

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

 

结果

 

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

极狐GitLab 一体化DevOps平台 专为中国用户研发,免费试用60天专业版高级功能
售前咨询
联系电话
在线支持
预约演示