jenkins持续集成springboot

1、可以配置项目标签

PS:这里Default Value值修改为master

2、代码地址,这里并没有拉取制定标签的代码,而是拉取了最新版本代码,如果要拉取指定标签代码需要把*/master修改成$version_tag。

3、Pre Steps与Build,通过Pre Steps修改pom.xml的版本,一次构建一个版本,版本规则自定义。

1
2
3
4
5
# 更新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)

1
2
3
4
5
6
# 更新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<br><br>#eval sed -i '0,/$version/s//$newVersion/' pom.xml

4、运行spring boot项目

1
2
3
4
5
6
7
8
9
10
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 &

  

 

版本控制标签:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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 =========================="

  

posted @   人艰不拆_zmc  阅读(1289)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2018-06-14 (转)以太坊 钱包 转账 查询指定代币余额
2016-06-14 JavaScript基础总结三部曲之一
2014-06-14 poj1753Flip Game(dfs)
点击右上角即可分享
微信分享提示