版本控制自动化工具

大家好!

一直很有趣的是什么产品版本以及如何管理它们? 如何自动化开发的版本控制? 我要猫。



我的名字叫罗马。 我是一家非常有趣的Softeq公司的开发人员,每个人都从中得到启发。

在开发各种工具时,我想到所有的开发人员是否都知道版本是什么,含义是什么以及在开发过程中如何进行管理。 因此,让我们看看什么是版本控制。

版本控制


版本控制是具有相同通用功能但经过改进,现代化或个性化的多个产品发行版的开发和管理。
简而言之,该版本讨论了产品变更。 版本如何谈论产品变更?
让我们将用于指定产品版本的字符排序系统称为版本控制方案。 已经创建了各种版本控制方案来跟踪各种软件的版本。

图片

语义版本控制


版本控制方案很多,但是我们每天都面临语义版本控制 。 对于语义版本控制,特征在于版本号及其更改方式传达了源代码内容的含义,以及从一个版本到另一个版本进行了哪些修改。

让我们考虑一下语义版本号的形成方式。



假设我们有一个开发中的项目。 该项目的主要目标是管理图书馆的建设。 该项目允许您订购用于建造建筑物的材料,控制建造图书馆的阶段。 目前,已经设计了应用程序体系结构,已经执行了基本任务。 测试用于构建图书馆建筑物的订购材料的功能时,会检测到错误bug 。 进行了错误修复,并升级了项目的补丁版本。



客户对需要在项目中实施市场营销信息分析的想法。 开发人员熟练而迅速地设计了数据分析服务,将服务与当前体系结构集成在一起。 添加了一个新的项目功能,该功能不违反向后兼容性 。 该项目的次要版本已经上升。



该项目已成功实施。 一段时间后,客户有一个想法来开发用于业务自动化的这项技术。 即将到来的计划包括全新的服务:组建施工人员团队,内部社交网络,内部文档交换等等。 开发人员显示出很高的能力,一段时间后,该项目体系结构被设计为解决新旧问题。 该项目的新体系结构进行了向后不兼容的更改。 该项目的主要版本已经上升。



整个图片看起来像这样,但是您很少遇到它。










因此,我们介绍一下产品版本。 但是如何管理它们呢?
让我们看一个版本控制自动化工具。

版本控制


NPM: https//www.npmjs.com/package/versionings
GitHub: https : //github.com/morozow/versionings

使用命令行完成版本控制:

versionings --semver=[<semantic-version> | patch | prepatch | minor | preminor | premajor | prerelease | major] --branch=[<version-branch-name> | any-hyphen-case-less-100-characters-string] [--push] 

产品的当前版本既存储在项目的./package.json文件中,也存储在Git标签和升级分支中。 自动化具有与各种第三方工具集成的能力-版本控制是通过CLI命令完成的。

让我们看一个升级产品的例子。

动作


当前版本2.5.3的草案正在开发中。 crm-user-service分支中正在进行新项目服务的开发。 服务的开发已完成,所有更改均已提交,并已决定增加次要版本:

 versionings --semver=minor --branch=user-service --push 

结果


  1. 新分支:版本/次要/ v 2.6.0- 用户服务
  2. ./package.json版本更改: 2.5.3- > 2.6.0
  3. 在version / minor / v 2.6.0分支中提交新产品版本- 用户服务
  4. 通过服务的实现和产品的更高版本来推动新的分支。
  5. 为版本/ minor / v 2.6.0 branch- user-service创建拉取请求,其中包含服务实现和产品的更高版本

备注


  • 面向Unix环境的自动化工具
  • 对于版本控制的一般视图,用于构建库的示例项目是抽象的。

仅此而已:)

一切都富有成效,美好的一天!

Source: https://habr.com/ru/post/zh-CN433994/


All Articles