DevOps: 自动与手动部署语义化版本实操

在软件管理的领域里存在着被称作“依赖地狱”的死亡之谷(屎山),系统规模越大,加入的包越多,你就越有可能在未来的某一天发现自己已深陷绝望之中。
在依赖高的系统中发布新版本包可能很快会成为噩梦。如果依赖关系过高,可能面临版本控制被锁死的风险(必须对每一个依赖包改版才能完成某次升级)。而如果依赖关系过于松散,又将无法避免版本的混乱(假设兼容于未来的多个版本已超出了合理数量)。当你项目的进展因为版本依赖被锁死或版本混乱变得不够简便和可靠,就意味着你正处于依赖地狱之中。

本文将向您展示如何使用Buddy的流水线在任何Git存储仓中自动增加应用程序的版本。

我们即将创建的流水线使用参数来定义我们想要提升的数字(主版本号/次版本号/修订号),使用脚本确定$latest_version,并将标签推送到您的存储仓:

1. 添加Git存储仓

首先将Repo添加到您的项目中。在本例中,我们将使用Buddy自带的Git存储仓(了解如何使用后您也可以使用GitHub、GitLab、BitBucket等相关Git托管),新建项目并选择Buddy托管:

2. 配置流水线设置

现在我们可以添加一个交付流水线,配置让它在每次推送到Master分支时运行:

3. 配置流水线操作

3.1 添加环境变量

在开始执行操作之前,我们需要添加几个稍后将在脚本中使用的变量。转向变量设置标签页并添加以下三个变量:

  • $major
  • $minor
  • $patch

传参操作

  • 将类型设置为可设置,因为我们需要操作在每次执行前记住该值
  • 将变量权限范围设置为流水线 —— 我们不想在其他任何地方使用它们
  • 除非您的存储仓已有版本标签,否则请将所有值设置为零。

3.2 设置版本类型

默认情况下,流水线会在每次推送时增加修订版本号(0.0.1)。让我们添加一个操作,允许在手动触发于传递实参时引发次要版本号(0.1.0)或主要版本号(1.0.0)。

传参操作
添加以下两个操作:

  • $is_major
  • $is_minor

将输入模式设置为options并将值设置为:

true
false


定义参数

触发条件

由于我们只想在手动模式下运行此操作,因此我们需要设置触发条件。进入操作中的条件标签页,将条件设置为“只有当ENV变量有特定值时才运行”并输入如下值:

从现在开始,每当您手动运行流水线时,Buddy都会询问您要增加哪个版本类型。如果既没有选择主版本也没有选择
次版本,修订版将递增。

3.3 设置版本号

下一步是使用版本控制脚本添加操作。 选择定制构建操作并将下面的脚本粘贴到命令字段中。该脚本将所选版本类型提高1并为您的提交创建标签:

代码:

if [ -n "$is_major" ] && ($is_major) ; then
 ((major=major+1))
 minor=0
 patch=0
elif [ -n "$is_minor" ] && ($is_minor) ; then
 ((minor=minor+1))
 patch=0
else
 ((patch=patch+1))
fi
latest_version=$major"."$minor"."$patch
#add tag
git tag "$latest_version"

安装Git

该脚本需要Git才能工作,因此请确保将其安装在操作镜像设置的软件包 & 工具选项卡中:

apt-get update && apt-get -y install git

3.4 推送标签至存储仓

定义好版本并创建标签后,我们终于可以将其推送到项目中了。选择Git推送操作并为您的存储仓配置身份验证信息:

您也可以使用环境变量存储敏感数据,例如:服务器访问数据。

总结

准备就绪后,推送到您的存储仓并检查结果。 然后,以手动模式运行管道:如果一切配置正确,Buddy 将询问您版本类型并增加存储仓中的标签:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值