springBoot集成Jenkins,实现自动化部署
1.首先安装Jenkins导入源&&yum安装sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.reposudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.keyyum inst
1.首先安装Jenkins(可以参考官网:https://www.jenkins.io/zh/doc/pipeline/tour/getting-started/)
导入源&&yum安装
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
安装完成后Jenkins启动之前的注意事项,方便后面操作以及少采坑:
默认情况是Jenkins是使用Jenkins
用户启动的,但这个用户目前系统并没有赋予权限,这里我们将启动用户修改为root
;另外Jenkins默认端口是8080,这个跟tomcat的默认端口冲突,我们也修改一下默认端口。
vi /etc/sysconfig/jenkins
--------------------------------
找到 JENKINS_USER 和JENKINS_PORT ,修改为root和你需要的端口
JENKINS_USER="root"
JENKINS_PORT="8081"
修改完成后就可以启动Jenkins了
service jenkins start
service jenkins stop
service jenkins restart
启动完成后排查防火墙是否为Jenkins设置的端口开放
然后再浏览器中输入ip+端口号就可以访问了,比如:http:192.168.31.101:8081,则会看到这样:
按照步骤操作
失败不要紧,重试就好
需要安装的插件默认安装就好了
第二部分:Jenkins集成springboot
进入Jenkins后,添加任务
选取maven项目,如果没有maven项目的话,可以去插件管理中去下载,在集成这部分前,服务器上要安装好git,maven,git版本最好大于1.7,以及jdk,然后在Jenkins中的全局工具配置中配置jdk以及maven的路径:
创建完任务后:进入任务配置
Jenkins将代码从你配的分支上拉下来,然后copy到指定执行的文件夹内,然后执行启动,shell脚本:
#!/bin/bash
#export BUILD_ID=dontKillMe这一句很重要,这样指定了,项目启动之后才不会被Jenkins杀掉。
export BUILD_ID=dontKillMe
#指定最后编译好的jar存放的位置
www_path=/home/xytdroot/servers/food-server/
#Jenkins中编译好的jar位置
jar_path=/home/xytdroot/.jenkins/workspace/foodmgr/target/
#Jenkins中编译好的jar名称
jar_name=psycloud-food-server-v0.1.jar
#端口号
port=1480
#获取运行编译好的进程ID,便于我们在重新部署项目的时候先杀掉以前的进程
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }')
echo "admin used pid=${pid}"
if [ -n "${pid}" ]; then
kill -9 ${pid}
fi
#进入指定的编译好的jar的位置
cd ${jar_path}
#将编译好的jar复制到最后指定的位置
cp ${jar_path}/${jar_name} ${www_path}
#进入最后指定存放jar的位置
cd ${www_path}
#杀掉以前可能启动的项目进程
#kill -9 ${pid}
#启动jar,指定SpringBoot的profiles为test,后台启动
nohup java -jar ${jar_name} --server.port=${port} &
最后保存这个配置
最后一步,运行springboot
设置定时构建:
3.3.3 定时触发构建
构建触发器: 只选中 Build periodically
, “日程表”格式与 crontab 相似但有细微差别,示例如下:
## 每行由 5 个值组成(空格或TAB分隔),分别表示分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-7, 0/7=周日)
## "M,N" 表示M和N;"M-N" 表示范围[M,N];"M-N/X" 表示范围[M,N]内每隔X;"*/X" 表示整个范围内每隔X
## 前面提到的M/N/X的值都可以用H(意为Hash)代替,散列值起到随机值的效果,且同一项目取值稳定,这对于项目多时分散压力很有用。
H/10 H(0-8) * * 1-5 ## 触发时间: 工作日、Hour为0~8按哈希随机、Minute以10为间隔
H/10 H * * 0,6,7 ## 触发时间: 周末、Hour为全天按哈希随机、Minute以10为间隔
## “日程表”修改后,下方会给出下次执行时间点的预告。
3.3.4 版本提交触发构建
构建触发器: 只选中 Poll SCM
,可指定检查 SVN 代码是否有提交的时间:
-
## 格式与 "Build periodically" 相同
-
H/10 * * * * ## 任何时候,每隔 30 分钟就检测一次 SVN,如果有提交就启动构建
- 1
- 2
3.3.5 Build 设置
Root POM: 指定 pom.xml 相对路径
Goals and options: 指定 mvn 执行目标或选项,设置为 package -Dmaven.test.skip=true
3.3.6 Post Steps 设置
定制构建后的操作,通常选择“Run only if build succeeds”,支持 shell 等脚本;
-
## 脚本工作目录为: /var/lib/jenkins/workspace/fastjson
-
# sudo systemctl stop tomcat
-
# sudo cp -f target/*.war /opt/apache-tomcat-8.5.9/webapps/
-
# sudo systemctl start tomcat
-
ls -l target/*.?ar
- 1
- 2
- 3
- 4
- 5
3.4 手工触发构建
进入 My Views
, 右侧看到各个项目;
点击进入关注的项目,点击左侧的“立即构建”;
开始构建或构建完毕后,左下方列出每次构建的链接,点击进入某次构建;
点击左侧的“Console Output”,可查看构建日志,如有报错可以看到;
纠正错误后,返回到工程,再次点击“立即构建”,直至构建成功;
如有网络相关报错,重试几次也会成功。
更多推荐
所有评论(0)