jenkins持续集成springboot
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 =========================="