1、一键实现项目自动构建打包发布(用于生产环境)
2、实现代码提交到代码仓库立刻自动打包部署(用于测试环境)
3、本测试脚本代码在最后
2、操作环境-
centos
-
jdk
-
maven
-
jenkins
-
gitee
-
git
-
docker
-
合并代码开发分支到master分支,准备发布最新代码
-
jenkins一键点击发布
-
jenkins从代码仓库拉取最新代码
-
通过maven进行打包
-
把jar包打包成镜像,上传到自己的镜像仓库私服
-
jenkins通知应用服务器拉取最新镜像
-
应用服务器拉取最新镜像,运行新容器
-
删除旧的容器和镜像
-
若发布失败回滚到上一个版本
-
提交代码到代码仓库dev或其他分支
-
自动触发jenkins构建项目
-
jenkins从代码仓库拉取最新代码
-
最新代码拷贝到测试服务器
-
自动连接测试服务器进行maven打包
-
把jar包打包成镜像
-
删除旧的容器和镜像
-
通过新打包的镜像,运行新容器
-
两台centos服务器可以互相ping通(或者两台虚拟机)
-
准备一个springcloud或者springboot项目,用于自动发布测试(我这里准备的是一个多模块项目,目录结构如下)
-
jdk 1.8安装包,maven 3.6 啊包装包
-
jdk下载地址:https://wp.boytian.com/#/s/p8Fv 密码 tiantian123
-
maven下载地址:https://wp.boytian.com/#/s/2lc1 密码 tiantian321
1、jdk环境安裝“
两台最好都安装,这里演示一台服务器
”
-
创建jdk存放目录 mkdir -p /home/jdk
-
上传jdk到该目录下,进入该目录并解压,解压命令: tar -zxvf jdk-8u144-linux-x64.tar.g
- 创建maven目录和maven仓库目录
-
mkdir -p /home/maven
-
mkdir -p /home/maven/repo
- 上传maven到/home/maven/目录下,进入该目录并解压,解压命令:tar -zxvf apache-maven-3.6.3
-
修改/etc/profile文件,命令 vim /etc/profile
-
若目录创建和我保持一致则在底部添加如下配置,否则自行修改即可
#输入i 进入编辑模式 # java配置 export JAVA_HOME=/home/jdk/jdk1.8.0_144 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/bin #maven 配置 export MAVEN_HOME=/home/maven/apache-maven-3.6.3 export PATH=$MAVEN_HOME/bin:$PATH
-
刷新配置使之生效
- source /etc/profile
-
测试环境是否生效 , 命令 java mvn -v
-
另一台服务器主机同样配置
-
输入ssh-keygen -t rsa连敲三个回车
-
输入ssh-copy-id -i ~/.ssh/id_rsa.pub ip地址 回车
-
输入第二台服务器密码验证即可实现免密登录
-
同样的方式配置第二台服务器免密登录第一台服务器
6、在第一台服务器上安装jenkin服务 1、在第一台服务器安装依次执行以下命令“
参考:https://blog.csdn.net/u013415591/article/details/81943189
”
-
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
-
ln -s /home/jdk/jdk1.8.0_144/bin/java /usr/bin/java
-
sudo ln -s /home/maven/apache-maven-3.6.3 /usr/local/maven
-
systemctl start jenkins
2、修改jenkins的权限为root权限,方便以后执行命令权限不足问题“
(1、2、3)是安装jenkins,(4、5)是软连接环境命令到usr目录下(6)启动Jenkins
”
# 打开配置文件 vim /etc/sysconfig/jenkins # 修改$JENKINS_USER $JENKINS_USER="root" #修改Jenkins相关文件夹用户权限 chown -R root:root /var/lib/jenkins chown -R root:root /var/cache/jenkins chown -R root:root /var/log/jenkins #重启 systemctl restart jenkins
1619053352839
7、访问jenkins服务进行一些基础配置- 浏览器访问:ip:8080
1618994599246
- 到服务器获取密码 命令:cat /var/lib/jenkins/secrets/initialAdminPassword
1618995408605
-
安装自定义插件
1618995513826
-
创建管理员账号
-
点击完成之后重启一下jenkins服务,命令:systemctl restart jenkins
-
jenkins配置全局jdk和maven环境
1618996436490
1618996573737
1618996616938
-
安装gitee插件,推送代码到gitee主要由此插件进行触发
-
配置gitee交互凭证
-
全局配置gitee
- 创建gitee代码仓库
1619050043509
9、配置jenkins开始配置自动部署- 创建一个自动构建流程 选择自由风格
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tAOlG9N1-1637893426234)(https://mmbiz.qpic.cn/mmbiz_png/0bmE6dS9CgJQUEbkCyje2ajToYicZGj4rVheOTDiahK1yzXSvdpwsAOsNeiaibia91ZwxkAG0QLEpv6hJmdNEGIeksA/640?wx_fmt=png)]
1618997421632
-
选择参数化构建
“
定义一些变量,这些变量在脚本中使用
”
1619050337908
1619054535420
3、配置git仓库
1619050733823
1619050777451
1619050871896
-
构建自动触发器,配置jenkins
-
构建触发器,配置gitee
1619051250412
-
测试构建是否生效
配置jenkins添加构建步骤
1619051394272
点击 应用 保存
- 测试手动构建
1619051457074
1619051489297
1619051513195
-
测试自动构建
“
手动push代码看看是否会出发自动构建
”
“
自动构建配置完成,接下来编写一个脚本进行真正的部署项目
脚本内容如下,目前实现了功能但还是不完善,后期完善
”
-
项目部署脚
# 项目模块统一变量设置 # 公共服务 CLOUD_ConTAINER="cloud" CLOUD_IMAGE="cloud_server" CLOUD_PORT=8002 # 微信小程序模块 FAMILY_ConTAINER="family" FAMILY_IMAGE="family_server" FAMILY_PORT=8003 # 鉴权模块 AUTH_ConTAINER="auth" AUTH_IMAGE="auth_server" AUTH_PORT=8004 # 网关 GATEWAY_ConTAINER="gateway" GATEWAY_IMAGE="gateway_server" GATEWAY_PORT=9999 # 删除应用服务器旧的代码(在第二个服务器创建好/home/project/fym-platform/目录,否则报错) ssh -Tq ${host} < -
jar镜像打包脚本
FROM primetoninc/jdk:1.8 ARG JAR_FILE MAINTAINER d1376537549@qq.com COPY ${JAR_FILE} app.jar ENV JAVA_OPTS="-Xmx512m -Xms512m -Xmn512m -Xss256K -XX:SurvivorRatio=8 -XX:metaspaceSize=128m -XX:MaxmetaspaceSize=128m -XX:+UseConcMarkSweepGC -XX:ConcGCThreads=4 -XX:+CMSClassUnloadingEnabled -Dfile.encoding=UTF-8 -XX:+DisableExplicitGC -XX:+PrintGC -XX:+PrintGCTimeStamps -Xloggc:./gc.log" ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] -
修改jenkins刚才shell配置如下
#!/bin/bash chmod u+x run.sh # 一行是赋予脚本执行权限 ./run.sh #一行是执行脚本
1619052201097
11、测试自动构建和手动构建- 手动触发构建(提交代码自动触发也一样),查看输出控制台,已经开始下载maven依赖开始打包
1619053964419
1619054134274
1619054194717
- 查看第二台服务器docker镜像
1619054218370
1619054239768
-
查看nacos服务启动状态
-
测试项目是否部署成功即可



