IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【DEVOPS】制品版本打包发布的规范化 -> 正文阅读

[系统运维]【DEVOPS】制品版本打包发布的规范化

为了减少沟通协作时不必要的摩擦成本,加快效率,我们有必要构建一套简单,清晰的制品版本确定和迭代的流程。

1. 前言

一直以来,我们的版本管理都是相当随意的。规范和共识的缺失,大量的人工操作造成的不确定,导致研发,测试,运维团队之间的协作过程中,往往需要反复确认彼此之间对于每个发布出来版本的理解是否一致,造成大量的摩擦成本。

为了减少沟通协作时不必要的摩擦成本,加快效率,我们有必要构建一套简单,清晰的制品版本确定和迭代的流程。

注意,本文讨论的是流程,而非被争论了无数次的 X.Y.Z这样的版本号含义,以及每次更新应该修改哪个版本号这种当下ROI非常低的问题。

2. 思路概览

总体上来说,一个制品的版本号分为 alpha,beta,release三类版本。

  1. 制品发布版本必须以 alpha版本开始,以 beta或release结束。
  2. alpha版本只能由机器打包而来。beta版本只能由 alpha版本 Prormote(提升, 进阶) 而来。
  3. release版本则只能由beta版本 Prormote(提升, 进阶) 而来。

所以三者之间的关系是: alpha版本 >>> beta版本 >>> release版本 。 实行这样的单向迭代。
在这里插入图片描述

3. 遵循的最佳实践

依据【DEVOPS】最佳实践和指导思想 中的,大概有这么几条:

  1. “只生成一次制品”
  2. “唯一可信任源”
  3. “一切皆版本控制(配置管理)”
  4. 工具的连通性

其它几条准则:

  1. 不允许本地打包,先提交再打包。提交之后进行界面化打包 。 “版本迭代非常快,每天可能要打好几个版本”,这并不能算理由,在我们的流程下,你哪怕一天打包100次,那我也会都给你存放起来。供其它使用者挑选。(如果担心存储的问题,请放心,我们会在何时的时候进行定期删除)
  2. 打包过程中产生的元信息,应该是浏览器前端界面可查,也应该是可以命令行可查。(例如:java -jar xxx.jar -DVersion)。样例图参考VS Code:
    在这里插入图片描述

4. 实现

直接来一个表格对比:

版本类别来源对应禅道操作涉及人工操作范例范例说明
alpha由机器拉取代码库中的代码进行自动化集成打包生成“新建版本”1. 输入版本说明性信息
2. 点击"打包"按钮
XXX-2022050716-alpha(版本号完全由机器自动生成)1. XXX为标志性前缀,保持唯一,望文知意。 下同。(注意:这个名字要和禅道里的产品或项目中之间存在"简单推导"的联系,方便之后自动同步——例如这边打包,那边就在禅道中自动创建一个版本 ; 这边将alpha版本提权为beta版本,禅道那边对应创建一个发布)
2. 2022050716 粒度到 小时,由机器打包时刻自动生成。如果小时都重复,直接认定为同一个版本。
3. 这个版本是从代码库由机器自动化打包而来,将由测试人员进行部署验证。在最终的制品出去前,这个版本号是最多的,每次机器打包得到的就是 alpha版本。
4. 自定义段内部使用 _ 分隔(例如XXX_YYY); 段与段之间使用 - 进行分隔。
4. 这个版本也是之后做过期制品清理时候的重点区域。
betaalpha基础上,经过测试人员验证认可,再由负责人进行Prormote(提升, 进阶)而来。“发布”1. 选择待提升的alpha版本
2. 输入X.Y.Z版本号
3. 点击"进阶"按钮
XXX-0.0.1-beta(人工指定中间的 0.0.1 版本号 )1. XXX。说明见上方。
2. 0.0.1,由人工指定而来。
3. beta版本。这类版本只能由上面的 alpha 版本 Prormote(提升, 进阶)而来,在经过各方认可之后,将某个已经存在于制品库中的alpha 版本提升了beta版本,开始对外提供内部测试使用。
3. 点击"进阶"后,自动化流程将会把对应的alpha版本复制一份,更名为对应的beta版本,同时会记录两者的关系。
release在 beta 基础上,经过内测验证认可,由产品经理进行Prormote(提升, 进阶)而来“发布”1. 选择待提升的beta版本。
2. 点击"进阶"按钮。
XXX-0.0.1-release (完全由机器自动生成,无人工输入性操作)1. 基本同上。这类版本只能由上面的 beta 版本 Prormote(提升, 进阶)而来
2. 这里不允许出现输入的情况,直接选择版本点击提交,自动化流程将会把对应的beta版本复制一份,更名为对应的release版本,同时会记录两者的关系。

最后做一下界面化操作展示:(界面秉承越简单越好。用户需要输入的越少越好,最好不需要输入(默认值都算输入内容))

  1. alpha 版本打包
    在这里插入图片描述

  2. beta版本打包
    在这里插入图片描述

  3. release版本打包
    在这里插入图片描述

5. 结束语

很多时候,当聊到DevOps建设时候,一般不会过多提及配置管理这一项。

但这不是代表其不重要,恰恰相反,相关方是已经假设你做好了这一项得,因为配置管理属于基础条件,如果配置管理你要是做不好,那DevOps后面的部分你就没有继续做的必要性,付出的努力得不偿失。

可是,还有一些实践常常被人们所忽视,但这并不代表它们已经被淘汰或者是不那么重要了。恰恰相反,它们同样是 DevOps 能够发挥价值的根基,配置管理(Configuration Management)就是其中之一。它的理念在软件开发过程中无处不在,可以说是整个 DevOps 工程实践的基础。

对传统行业来说,全流程可追溯的能力从来不是可选项,而是必选项。像最近流行的区块链技术,除了发币以外,最典型的场景也是全流程可追溯。

6. 补充 - 思路来源

其实上面的规范形成,其实参考了不少内容,但启发最大的还是下面这张非常有名的DevOps流程图:
在这里插入图片描述

7. 参考

  1. 【DEVOPS】最佳实践和指导思想
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:43:29  更:2022-05-12 16:44:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:31:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码