安装jenkins
安装步骤省略,网上很多,这里就不再啰嗦了。
建议安装的插件
- maven 项目插件 ,之后在构建新的项目时,可以直接选择构建一个maven项目
Maven Integration plugin
我个人两个都装了
构建项目
- 点击新建
- 选择maven项目(如果之前没有安装maven的插件这里是没有这个选项的)
- 填写项目构建描述,以及完善对老项目构建的保留时间
-
- 参数话构建
- 参数话构建
- 添加项目地址(github | gitlab | gitee )都可以
如果你是第一次构建项目,而且没有全局配置过你的项目账号和密码,你可以在这里直接配置,点击选择Credentials旁边的添加,输入你的账号即可
- 配置拉去后选择构建的分支
我这里就直接matser分支了 - 每当构建SNAPSHOT依赖项时构建
- 代码被拉取下来后做的事情
- 点击构建时执行的shell脚本
我这里选择是脚本,大家可以选择其他的方式,该部分脚本我是看了别人的博客点击跳转,非常感谢,他的脚本!!以下是该脚本内容,我改了文件命名以及路径,事后去看了下这个脚本,大致说下
4、重点是脚本
#!/bin/bash
cd /home/admin/jenkins/jenkins_springboot_shell
echo "Execute shell Start"
sh stop.sh
sh replace.sh
echo "Execute shell Finish"
chmod 777 /home/admin/jenkins/jenkins_springboot_shell/startup.sh
BUILD_ID=dontKillMe nohup /home/admin/jenkins/jenkins_springboot_shell/startup.sh &
三个文件内容
- stop.sh
停止之前执行的springboot项目,因为需要从新去拉去项目代码,重新构建- 先进入jenkins_springboot_shell目录
- 输出一句话Stopping SpringBoot Application for CMP
- 使用命令ps -ef | grep jenkins-demo-0.0.1-SNAPSHOT.jar | grep -v grep | awk ‘{print $2}’
- 这部分命令可以分为3部分
命令 | 说明 |
---|---|
ps -ef | grep jenkins-demo-0.0.1-SNAPSHOT.jar | 查看系统进程中的含有jenkins-demo-0.0.1-SNAPSHOT.ja的进程 |
但是会有2个进程,此时就需要过滤
命令 | 说明 |
---|---|
grep -v grep | -v 是反转 就是不包含的意思,这就会吧包含grep的过滤掉,也就是会把第二条过滤掉 |
接下使用awk命令将进程id取出即可
命令 | 说明 |
---|---|
awk ‘{print $2} | 选择第二个参数 |
- 如果pid不为空则使用kill -9 pid 将该进程删除
#!将应用停止
#!stop.sh
#!/bin/bash
cd /home/admin/jenkins/jenkins_springboot_shell
echo "Stopping SpringBoot Application for CMP"
ls
pid=`ps -ef | grep jenkins-demo-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
#!kill -9 强制终止
echo "kill -9 的pid:" $pid
kill -9 $pid
fi
- replace.sh
大致意思就如果deploy_cmp文件里面有jar包说明之前发布过,则将该jar包放到deploy_cmp_bak目录下加上时间备份,再将最新构建的jar包放到deploy_cmp目录下,以后就直接从该目录下启动jar包
jar_name=jenkins-demo-0.0.1-SNAPSHOT.jar
#!编译好的jar包存放地址
file_path=/root/.jenkins/workspace/test-springboot/target
#!将现有的jar备份后,将新的jar包替换
file="/home/admin/jenkins/deploy_cmp/jenkins-demo-0.0.1-SNAPSHOT.jar"
if [ -f "$file" ]
then
mv /home/admin/jenkins/deploy_cmp/jenkins-demo-0.0.1-SNAPSHOT.jar /home/admin/jenkins/deploy_cmp_bak/jenkins-demo-0.0.1-SNAPSHOT.jar.`date +%Y%m%d%H%M%S`
fi
cp /root/.jenkins/workspace/test-springboot/target/jenkins-demo-0.0.1-SNAPSHOT.jar /home/admin/jenkins/deploy_cmp/
- startup.sh
这里就是直接进入deploy_cmp目录启动jar包即可(这里不会端口冲突,之前在stop.sh中以及杀掉了进程)
echo "授予当前用户权限"
chmod 777 /home/admin/jenkins/deploy_cmp/jenkins-demo-0.0.1-SNAPSHOT.jar
echo "执行....."
cd /home/admin/jenkins/deploy_cmp/
java -jar jenkins-demo-0.0.1-SNAPSHOT.jar
echo "**********************cmp on jenkins started*************************"
目录 | 说明 |
---|---|
deploy_cmp | jar包被打包后放置的目录(运行时以该目录的jar包为准) |
deploy_cmp_bak | 再次打包时保留上一个版本的jar目录 (保留以前历史的打包版本) |
jenkins_springboot_shell | 存放stop.sh、start.sh、replace.sh 脚本命令的目录 |
大致目录如下
deploy_cmp和deploy_cmp_bak目录应该大家是空的,我这里是因为我之前测试了下
测试
点击开始构建按钮
修改项目代码
- 查看jenkins日志
- shell 脚本执行
- 构建完成
- 访问项目
注意点
- 在粘贴shell脚本的时候注意空格,否则会出现
- 关于jenkis在那?
一旦安装成功会在当前用户家下有个隐藏文件.jenkins - 关于项目构建后jenkins的变化
一旦项目构建成功就会多出一个workspace的目录,里面就是项目构建代码