软件办理的领域里存在着被称作“依靠地狱”的死亡之谷(屎山),系统规模越大,参加的包越多,你就越有或许在未来的某一天发现自己已深陷失望之中。

在依靠高的系统中发布新版别包或许很快会成为噩梦。假如依靠联系过高,或许面对版别操控被锁死的风险(有必要对每一个依靠包改版才干完结某次升级)。而假如依靠联系过于松懈,又将无法避免版别的紊乱(假定兼容于未来的多个版别已超出了合理数量)。当你项目的发展由于版别依靠被锁死或版别紊乱变得不够简便和牢靠,就意味着你正处于依靠地狱之中。

本文将向您展示怎么运用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 将问询您版别类型并添加存储仓中的标签:

自动化运维:语义化版本的设置与部署生产