1、可以配置項目標簽

PS:這里Default Value值修改為master
2、代碼地址,這里並沒有拉取制定標簽的代碼,而是拉取了最新版本代碼,如果要拉取指定標簽代碼需要把*/master修改成$version_tag。

3、Pre Steps與Build,通過Pre Steps修改pom.xml的版本,一次構建一個版本,版本規則自定義。

# 更新pom依賴版本號
version=`awk '/<version>[^<]+<\/version>/{gsub(/<version>|<\/version>/,"",$1);print $1;exit;}' pom.xml`
# sed 格式:0.0.1-SNAPSHOT 使用正則分組
newVersion=`echo $version | sed 's/\(.*\..*\.\).*\(-.*\)/\1'$BUILD_NUMBER'\2/'`
mvn versions:set -DnewVersion=$newVersion versions:commit
上面是直接使用BUILD_NUMBER變量,並不符合我們的實際要求,正常邏輯是每次讀取pom.xml版本號,然后版本號加1,之后再改寫pom.xml的版本號(下面示例版本規則是 1.0.3)
# 更新pom依賴版本號
version=`awk '/<version>[^<]+<\/version>/{gsub(/<version>|<\/version>/,"",$1);print $1;exit;}' pom.xml`
versionLast=`echo $version | sed 's/.*\..*\.\(.*\)/\1/'`
let versionLast++
newVersion=`echo $version | sed 's/\(.*\..*\.\).*/\1'$versionLast'/'`
mvn versions:set -DnewVersion=$newVersion versions:commit
#eval sed -i '0,/$version/s//$newVersion/' pom.xml
4、運行spring boot項目

echo "Stopping SpringBoot Application"
version=`awk '/<version>[^<]+<\/version>/{gsub(/<version>|<\/version>/,"",$1);print $1;exit;}' pom.xml`
newVersion=`echo $version | sed 's/\(.*\..*\.\).*\(-.*\)/\1'$BUILD_NUMBER'\2/'`
pid=`ps -ef | grep osp-ethscan.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
fi
cp -f /root/.jenkins/jobs/etherscan/workspace/target/osp-ethscan-$newVersion.jar /opt/test/osp-ethscan.jar
BUILD_ID=dontKillMe nohup java -jar /opt/test/osp-ethscan.jar > /opt/test/out.log 2>&1 &
版本控制標簽:
[root@10 1.0.7]# cat /home/jenkinsShell/jenkins_Pre_Steps_ExecuteShell.sh
#!/bin/sh
echo "=========================== start update version ========================="
cd $1
# 將變更的內容提交到git倉庫
git pull origin master
version=`awk '/<version>[^<]+<\/version>/{gsub(/<version>|<\/version>/,"",$1);print $1;exit;}' pom.xml`
echo $version
git add pom.xml
git commit -m "jenkens update pom version"
git tag $version -m "jenkens update pom version"
git push origin $version
echo "=========================== end update version =========================="
