Docker+Jenkins搭建SpringBoot自动化部署
![e8cef1a9a7c992e983022fb14189ae53.png](https://i-blog.csdnimg.cn/blog_migrate/c542c692c2d7f223c18da34eac176420.jpeg)
jenkins
一、liunx安装Docker
1.yum包更新到最新
sudo yum update
2.安装需要的软件包
sudo yum install -y yum-utils device-mapper-persisten-data lvm2
3.设置yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.安装docker
sudo yum install docker-ce
5.安装后查看docker版本
docker -v
6.设置开机启动
systemctl enable docker
二、使用Docker安装Jenkins
1.搜索jenkins镜像
docker search jenkins
结果:
![75d19f7a28769970538661c170de84d2.png](https://i-blog.csdnimg.cn/blog_migrate/c18c94db85fe0bffe123a076f7ead52d.jpeg)
docker搜索jenkins
这里使用的是第二个镜像(因为第一个镜像的docker版本较低)
2.拉取镜像
docker pull jenkins/jenkins
3.创建文件夹
mkdir /home/jenkins
4.查看文件权限,给uid为1000的权限
ls -nd jenkins/
chown -R 1000:1000 jenkins/
5.创建并启动容器
docker run -itd -p 9090:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/jenkins:/var/jenkins_home jenkins/jenkins:latest
6.之后浏览器输入 http://你的ip地址:9090
进入之后需要输入密码,在命令行使用如下命令获取密码
cat /home/jenkins/secrets/initialAdminPassword 查看密码
之后会进入jenkins安装插件页面,
这里选择安装推荐插件就可以了;
接下来就是进入jenkins首页,这里使用前需要配置一些基础的maven和jgit
(因为服务器已经安装jdk,这里不需再配置;配置git是为了从git拉取最新代码,配置maven是进行项目的打包;如果这里没有git和maven,需要进入插件管理下载后重启即可)
(如果安装失败,查看失败原因并根据原因安装其他插件先)
![1e12f8beb418753557c8e4f095b3e54d.png](https://i-blog.csdnimg.cn/blog_migrate/97a18580d06adeed43480bef9c7b1167.jpeg)
配置
![3109d0caaf5f582b997101aee6778b62.png](https://i-blog.csdnimg.cn/blog_migrate/037d7c3beaf77f3ff8ff4d1c4ed441f4.jpeg)
添加插件
![32256aea318eaafd2e257fc12d65c7ba.png](https://i-blog.csdnimg.cn/blog_migrate/928aa53adb2e898a71ad3c7db3deea55.jpeg)
搜索安装插件
7.进入系统设置,设置项目部署的服务器SSH
![73d4888e6b24dc1df785c71c55c40d44.png](https://i-blog.csdnimg.cn/blog_migrate/872303897e231a1975e75ac9e986ffc8.jpeg)
系统设置1
![609b10267e8ddabd26438dea58074028.png](https://i-blog.csdnimg.cn/blog_migrate/186f7d931cefe6dac38576f85469c683.jpeg)
系统设置2
![9d12f7208661d25b63839f5a27ad3638.png](https://i-blog.csdnimg.cn/blog_migrate/798e89fce79b3950912cd38471486650.jpeg)
系统设置3
![bf3e3b04e8a8b8feed4dcb355303bc76.png](https://i-blog.csdnimg.cn/blog_migrate/1f2345cec084c8ba2f74de16c0dec995.jpeg)
三、部署SpringBoot项目
1.新建任务
![c545e4df9c6ed5d60b02e540a19e3ab8.png](https://i-blog.csdnimg.cn/blog_migrate/979bf5d86e77e2caf05175648992deca.jpeg)
创建jenkins任务1
![b6a04bdb7a934188bb1e9975e12042da.png](https://i-blog.csdnimg.cn/blog_migrate/d8cec3d0a615913cc98f1731916e9b0c.jpeg)
创建jenkins任务2
2.配置参数
添加ssh server
填写以下内容
![fb98dfeff38eb40cf2329ed08dc00a71.png](https://i-blog.csdnimg.cn/blog_migrate/5be8736fba13f76806ac7929f8c38a82.jpeg)
配置参数1
![f7c644b2f6d1f1e3939038da7a3d6549.png](https://i-blog.csdnimg.cn/blog_migrate/4d4be0e801de8701116127b7454fe5f3.jpeg)
配置参数2(配置git)
![bf7e9461eeba403c00f59a062480d435.png](https://i-blog.csdnimg.cn/blog_migrate/fbf54b27b77aab251001bdbfaeb14626.jpeg)
配置参数3(打印构建日志)
![de6fbfe3b14dcc821880c1a005d18fc3.png](https://i-blog.csdnimg.cn/blog_migrate/2b7ca29e22e71a9130e7307ab24e6861.jpeg)
配置参数4(maven操作)
(这里是maven的打包操作,clean package -Dmaven.test.skip=true -Ptest 意思是删除旧包,并且忽略test打新包,拉取的代码会在服务器的/home/jenkins/workspace/springboot01中)
新建一个任务这里会多一个文件夹,打完的jar包会在target目录中
![01a1a10eb46940d9c32bc63b7514267c.png](https://i-blog.csdnimg.cn/blog_migrate/05cbcdf2396c958cdfa5fab7d17fedc4.jpeg)
任务目录
![ccf418d1d91496729b359c8956cb0fd1.png](https://i-blog.csdnimg.cn/blog_migrate/72a4a53d98648629b4119630696fd7ab.jpeg)
配置参数4(SSH)
![00c6cf2f283edf34f8667ccf8ef817dd.png](https://i-blog.csdnimg.cn/blog_migrate/d6034b60925d8bf0ab17895e21c97abc.jpeg)
配置参数5(SSH Server)
脚本内容:
DATE=$(date +%Y%m%d)export JAVA_HOME PATH CLASSPATHJAVA_HOME=/usr/jdk1.8.0_201PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATHDIR=/javapro/springbootJARFILE=01-springboot-web-0.0.1-SNAPSHOT.jarif [ ! -d $DIR/backup ];thenmkdir -p $DIR/backupficd $DIRps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9mv $JARFILE backup/$JARFILE$DATEmv -f /home/jenkins/workspace/springboot01/target/$JARFILE /javapro/springboot/$JARFILEjava -jar $JARFILE > out.log &if [ $? = 0 ];thensleep 30tail -n 50 out.logficd backup/ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf
脚本的操作就是,将旧包备份、杀掉项目运行的进程、将新打的包移动到项目目录、运行新包
![7404b109599154a9757784d9e9c43faf.png](https://i-blog.csdnimg.cn/blog_migrate/347716baacc8c6c9326c165129607d00.jpeg)
脚本
配置结束,应用保存退出
3.点击立即构建
![d0ed63b812e98f0ef5dca1390dd015d7.png](https://i-blog.csdnimg.cn/blog_migrate/7798b64b73b129c7be7dc83e27cdd4a0.jpeg)
构建项目
查看构建日志:
![002057bed923c400060cc3a73206cf81.png](https://i-blog.csdnimg.cn/blog_migrate/3cc76ab16e8227062ea3ddaacfdc1855.jpeg)
查看构建日志1
![cd0f2c0934d914636cb58e1db6891f78.png](https://i-blog.csdnimg.cn/blog_migrate/9816fb88a09013feb5b8bdef9e4f20ea.jpeg)
查看构建日志2
![e196eeafe44390971df2e1e52be6726a.png](https://i-blog.csdnimg.cn/blog_migrate/a5b42e338b622d8fdd44f836aa363ef8.jpeg)
查看构建日志3
、后续操作
部署成功后,git更新代码后只需要在jenkins点击构建,即可完成新代码的部署。
注意:一些常见的构建失败的问题
一:问题1:运行脚本没有权限:
![ca1d18c4aa5c30f104513dc33fa9d09e.png](https://i-blog.csdnimg.cn/blog_migrate/93c17373b20fbbbd031e783defe3b48a.jpeg)
运行脚本没有权限
解决方案:执行授权
![f12ccc26ac10d468363b0ce9a2ea91ba.png](https://i-blog.csdnimg.cn/blog_migrate/8c91c70dbdf64ef82ff2c3862b2ed176.jpeg)
给脚本授权
二、问题2
Maven JVM terminated unexpectedly with exit code 137
![075f88a2e53705cb93119b1977c6aa66.png](https://i-blog.csdnimg.cn/blog_migrate/8ee9a5f96aa150c2e4b89db1ee828f67.jpeg)
Maven JVM terminated unexpectedly with exit code 1
原因:服务器内存不足
解决方案:停止一些进程,或服务器提升内存