基于Docker+Jenkins实现自动化部署
1. 准备工作:虚拟机centos7,安装jdk1.8,安装docker(详情可以参考我之前的博客)使用码云创建私有私有git仓库,使用IDEA将本地springboot项目上传到git仓库中(详情参考:https://blog.csdn.net/zsyoung/article/details/76891211)2. 什么是JenkinsJenkins是一个开源软件项目,是基于...
1. 准备工作:
虚拟机centos7,安装jdk1.8,安装docker(详情可以参考我之前的博客)
使用码云创建私有私有git仓库,使用IDEA将本地springboot项目上传到git仓库中
(详情参考:https://blog.csdn.net/zsyoung/article/details/76891211)
2. 什么是Jenkins
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。它可以在代码上传仓库(如github,gitee,gitlab)后,在jenkins(一个网站界面)中通过获取代码仓库中最新代码,进行自动化部署,而省去手动打包、上传服务器、部署这一系列步骤,非常方便。
3. 安装jenkins
① 使用docker 安装jenkins
docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean
② 安装成功后浏览器访问:192.168.0.110:8080(服务器ip+上面docker指定的端口号)
注意:第一次启动的时候正在加载jenkins大概会等待3-10分钟
③ 解锁Jenkins(虚拟机默认账号:姓名拼音,密码123456)
docker ps //查询正在运行的容器id
docker exec -it 7f485bd95c3b /bin/bash //进入jenkins容器
cat /var/jenkins_home/secrets/initialAdminPassword # 查询初始化密码
④ 解锁之后,选择安装推荐的插件,大概需要等待3-10分钟
(如出现无法点击,则在docker容器内部输入curl https://www.baidu.com,如无法访问,则证明无法联网,重启docker即可)
⑤ 创建新的用户,之后即进入jenkins的首页
4. Jenkins配置
按照下图所示,进入全局工具配置
① 配置jdk
进入到jenkins容器中 echo $JAVA_HOME 获取java环境安装地址
② 配置maven(选用默认的即可3.6.1)
③ 安装maven对应的插件
找到 “系统管理“ - “插件管理” ,点击 “可选插件”,找到如下maven插件的版本
5. Jenkins实现Springboot项目自动部署
① 新建一个发布任务(首页 - 新建任务 - 新建一个maven项目)
② 配置git账号和密码(其中Credentials需要填git邮箱和面)
③ 项目打包配置
配置完后点击保存即可。
④ 点击立即构建( 第一次构建可能耗时比较长,因为需要下载一些相关依赖jar包)
可以在控制台看到输出语句
6. Jenkins启动成功之后执行shell脚本
配置 -- 找到Post Steps,在命令空白页中加入如下代码:
#!/bin/bash
#服务名称
SERVER_NAME=springboot_jenkins
# 源jar路径,mvn打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomcat的webapps目录下运行,这里使用jar包,用java -jar 命令执行
JAR_NAME=springboot_jenkins-0.0.1-SNAPSHOT
# 源jar路径
#/usr/local/jenkins_home/workspace--->jenkins 工作目录
#demo 项目目录
#target 打包生成jar包的目录
JAR_PATH=/var/jenkins_home/workspace/springboot_jenkins/target
# 打包完成之后,把jar包移动到运行jar包的目录--->work_daemon,work_daemon这个目录需要自己提前创建
JAR_WORK_PATH=/var/jenkins_home/workspace/springboot_jenkins/target
echo "查询进程id-->$SERVER_NAME"
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
echo "得到进程ID:$PID"
echo "结束进程"
for id in $PID
do
kill -9 $id
echo "killed $id"
done
echo "结束进程完成"
#复制jar包到执行目录
echo "复制jar包到执行目录:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo "复制jar包完成"
cd $JAR_WORK_PATH
#修改文件权限
chmod 755 $JAR_NAME.jar
BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &
应用并保存,重新点击立即构建,会发现重新拉取git代码并打包
此时,浏览器访问不到,需要重启docker,加入8081(springboot项目端口号),命令如下:
systemctl restart docker
docker rm $(sudo docker ps -a -q)
docker run -p 8080:8080 -p 8081:8081 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean
此时,访问http://192.168.0.106:8081/hello,则可以正常访问
至此,基于Docker+Jenkins实现自动化部署搭建完毕,以后更新代码到服务器,只需提交到git(码云),在jenkins重新构建即可
更多推荐
所有评论(0)