以vx.x.x的形式自动生成git标记

时间:2014-09-22 22:05:06

标签: git bash deployment jenkins git-tag

Hello StackOverflow人员,我正在开发一个涉及CI与Jenkins,git,rsync的项目,所以我试图找到一种方法来自动生成每个成功部署的标签版本。形式vX.X.X

我的问题是,是否有任何可用于此的工具,或者您必须手动执行此操作(bash,grunt等)?

这样你就可以在Jenkins上调用它,它会告诉你标记你的建筑物。 我正在考虑在每个文件夹中存放文件并释放/。然后我可以解析一些文件(bash脚本,grunt等)以了解我正确的版本,以便我可以这样做:

  • 下一个版本(命名正确的下一个税,即如果我以前的版本是v1.2.3我会做v.1.2.4 ....等等)
  • 在构建失败的情况下回滚到previos标记。 (如果我正在执行v1.2.4并且无法回滚到v1.2.3)

我确定有很多选项请分享:D

编辑:我正在寻找像

这样的东西
git tag --semantic--versioning --ma 0 --mi 0 --p 3

这样当你输入

git describe   

你会得到像

这样的东西
v0.0.3

这样你可以在Jenkins参数化构建中使用另一个工具

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你的代码库有一些版本信息,你正在寻找的是一种简化版本字符串工作的方法;能够解析它并递增/递减它,然后从中制作git标签。如果您可以自己调用git tag,那么您只需要处理版本字符串。为此,我在Perl中使用了“Version”模块:

http://search.cpan.org/~bdfoy/Perl-Version-1.013/lib/Perl/Version.pm

它基本上允许您从字符串构造一个版本对象(可以是多种格式),并提供操作和访问版本或部分版本的函数。您可以使用perl -e在Jenkins作业中直接使用此作业,或者如果您希望重复使用它们,则可以创建脚本。一个简单的例子,它使用perl递增次要版本并从中生成一个标记:

#!/usr/bin/env bash
oldversion="v1.2.1"
newversion=$(perl -MPerl::Version -e "my \$ver = Perl::Version->new(\"${oldversion}\"); \$ver->increment(1); print \"\$ver\"");
echo "Tagging with ${newversion}"
git tag "${newversion}"

这将获取v1.2.1的版本字符串,并将次要值递增以创建v1.3.0,将其打印到屏幕并制作git标记。请注意,在递增次要值时,补丁部分会自动清零,并保留版本字符串的格式。