2014-09-22 28 views
1

你好StackOverflow人,我正在一個涉及與Jenkins,git,rsync CI的項目,所以我想找出一種方法來自動生成標籤版本對於每個成功部署的形式vX.X.X自動生成形式爲vx.xx的git標籤

我的問題是有任何工具avialable會爲你做這個,或者你必須手工(bash,grunt等)做到這一點?

這樣你就可以在Jenkins上調用它,它會告訴你什麼標記你的建築物。 我正在考慮在每個文件夾中存放文件,然後釋放/。然後,我可以解析文件(bash腳本,咕嚕等),以便知道我在正確的版本上,以便我可以這樣做:

  • 下一個版本(命名正確的下一納稅,也就是說,如果我以前的版本是V1.2.3,我會做v.1.2.4 ....等)
  • 回滾到萬一previos標籤構建失敗。 (如果我做V1.2.4和失敗回滾到V1.2.3)

我敢肯定有很多的選擇了請分享一下:d

編輯:嗯,我「M一直在尋找類似

git tag --semantic--versioning --ma 0 --mi 0 --p 3 

,這樣當你鍵入的

git describe 

你會得到someth荷蘭國際集團一樣

v0.0.3 

這樣你可以有另一種工具詹金斯一起工作參數建立

+1

這不是100%清楚;你是否要求一個實際上會創建一個標籤的工具,或者僅僅是爲了確定最近的標籤是什麼? – 2014-09-22 22:08:18

+0

對於最近的標記http://stackoverflow.com/questions/1404796/how-to-get-the-latest-tag-name-in-current-branch-in-git可能會有所幫助。 – 2014-09-22 22:28:28

+0

'git tag --semantic - 版本控制--ma 0 --mi 0 --p 3'比'git tag v0.0.3'更好嗎? – 2014-09-22 23:19:34

回答

0

如果我理解正確的話,你的代碼庫有一些版本的信息,你要找的是什麼一種簡化使用版本字符串的方法;能夠解析它並遞增/遞減它,然後使git標籤脫離它。如果你自己可以自己調用git tag,那麼你只需要處理版本字符串。對於這一點,我已經使用了「版本」模塊中的Perl:

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

它基本上可以構建一個字符串的版本對象(可以是多種格式),並提供功能操縱和訪問版本或其中的一部分。您可以使用在詹金斯工作中直接使用該工具,或者如果您希望重用它們,請創建腳本。一個簡單的例子,使用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標籤。請注意,當遞增次要值時,修補程序部分將自動歸零,並且版本字符串的格式將保留。