搭建Jenkins+springcloud一键自动部署

用jenkins 实现项目自动部署笔记

1、目的

1、一键实现项目自动构建打包发布(用于生产环境)

2、实现代码提交到代码仓库立刻自动打包部署(用于测试环境)

3、本测试脚本代码在最后

2、操作环境

  • centos

  • jdk

  • maven

  • jenkins

  • gitee

  • git

  • docker

2、实现思路

1、生产环境

  1. 合并代码开发分支到master分支,准备发布最新代码

  2. jenkins一键点击发布

  3. jenkins从代码仓库拉取最新代码

  4. 通过maven进行打包

  5. 把jar包打包成镜像,上传到自己的镜像仓库私服

  6. jenkins通知应用服务器拉取最新镜像

  7. 应用服务器拉取最新镜像,运行新容器

  8. 删除旧的容器和镜像

  9. 若发布失败回滚到上一个版本

2、测试环境、开发环境

  1. 提交代码到代码仓库dev或其他分支

  2. 自动触发jenkins构建项目

  3. jenkins从代码仓库拉取最新代码

  4. 最新代码拷贝到测试服务器

  5. 自动连接测试服务器进行maven打包

  6. 把jar包打包成镜像

  7. 删除旧的容器和镜像

  8. 通过新打包的镜像,运行新容器

3、前期准备

  1. 两台centos服务器可以互相ping通(或者两台虚拟机)

  2. 准备一个springcloud或者springboot项目,用于自动发布测试(我这里准备的是一个多模块项目,目录结构如下)

    搭建Jenkins+springcloud一键自动部署_第1张图片

  3. jdk 1.8安装包,maven 3.6 啊包装包

  • jdk下载地址:https://wp.boytian.com/#/s/p8Fv 密码 tiantian123

  • maven下载地址:https://wp.boytian.com/#/s/2lc1 密码 tiantian321

4、安装jdk环境和maven环境

两台最好都安装,这里演示一台服务器

1、jdk环境安裝

  1. 创建jdk存放目录 mkdir -p /home/jdk

  2. 上传jdk到该目录下,进入该目录并解压,解压命令: tar -zxvf jdk-8u144-linux-x64.tar.g

    搭建Jenkins+springcloud一键自动部署_第2张图片

2、maven安装

  1. 创建maven目录和maven仓库目录
  • mkdir -p /home/maven

  • mkdir -p /home/maven/repo

  1. 上传maven到/home/maven/目录下,进入该目录并解压,解压命令:tar -zxvf apache-maven-3.6.3

3、配置jdk和maven的环境变量

  1. 修改/etc/profile文件,命令 vim /etc/profile

  2. 若目录创建和我保持一致则在底部添加如下配置,否则自行修改即可

    #输入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
    
    
  3. 刷新配置使之生效

  • source /etc/profile
  1. 测试环境是否生效 , 命令 java mvn -v

    搭建Jenkins+springcloud一键自动部署_第3张图片

  2. 另一台服务器主机同样配置

5、配置免密登录(两台服务器互相免密登录)

  1. 输入ssh-keygen -t rsa连敲三个回车

  2. 输入ssh-copy-id -i ~/.ssh/id_rsa.pub ip地址 回车

  3. 输入第二台服务器密码验证即可实现免密登录

  4. 同样的方式配置第二台服务器免密登录第一台服务器

参考:https://blog.csdn.net/u013415591/article/details/81943189

6、在第一台服务器上安装jenkin服务

1、在第一台服务器安装依次执行以下命令
  • 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

(1、2、3)是安装jenkins,(4、5)是软连接环境命令到usr目录下(6)启动Jenkins

2、修改jenkins的权限为root权限,方便以后执行命令权限不足问题
# 打开配置文件
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

搭建Jenkins+springcloud一键自动部署_第4张图片

搭建Jenkins+springcloud一键自动部署_第5张图片

1619053352839

7、访问jenkins服务进行一些基础配置

  1. 浏览器访问:ip:8080

搭建Jenkins+springcloud一键自动部署_第6张图片

1618994599246

  1. 到服务器获取密码 命令:cat /var/lib/jenkins/secrets/initialAdminPassword

搭建Jenkins+springcloud一键自动部署_第7张图片

1618995408605

  1. 安装自定义插件

    搭建Jenkins+springcloud一键自动部署_第8张图片

搭建Jenkins+springcloud一键自动部署_第9张图片

1618995513826

  1. 创建管理员账号

    搭建Jenkins+springcloud一键自动部署_第10张图片

  2. 点击完成之后重启一下jenkins服务,命令:systemctl restart jenkins

  3. jenkins配置全局jdk和maven环境

    搭建Jenkins+springcloud一键自动部署_第11张图片

搭建Jenkins+springcloud一键自动部署_第12张图片

1618996436490

搭建Jenkins+springcloud一键自动部署_第13张图片

1618996573737

搭建Jenkins+springcloud一键自动部署_第14张图片

1618996616938

  1. 安装gitee插件,推送代码到gitee主要由此插件进行触发

    搭建Jenkins+springcloud一键自动部署_第15张图片

  2. 配置gitee交互凭证

    搭建Jenkins+springcloud一键自动部署_第16张图片

    搭建Jenkins+springcloud一键自动部署_第17张图片

    搭建Jenkins+springcloud一键自动部署_第18张图片

  3. 全局配置gitee

    搭建Jenkins+springcloud一键自动部署_第19张图片

8、准备部署项目

  1. 创建gitee代码仓库

搭建Jenkins+springcloud一键自动部署_第20张图片

1619050043509

9、配置jenkins开始配置自动部署

  1. 创建一个自动构建流程 选择自由风格

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tAOlG9N1-1637893426234)(https://mmbiz.qpic.cn/mmbiz_png/0bmE6dS9CgJQUEbkCyje2ajToYicZGj4rVheOTDiahK1yzXSvdpwsAOsNeiaibia91ZwxkAG0QLEpv6hJmdNEGIeksA/640?wx_fmt=png)]

1618997421632

  1. 选择参数化构建

    定义一些变量,这些变量在脚本中使用搭建Jenkins+springcloud一键自动部署_第21张图片

搭建Jenkins+springcloud一键自动部署_第22张图片

1619050337908

搭建Jenkins+springcloud一键自动部署_第23张图片

1619054535420

3、配置git仓库

搭建Jenkins+springcloud一键自动部署_第24张图片

1619050733823

搭建Jenkins+springcloud一键自动部署_第25张图片

1619050777451

搭建Jenkins+springcloud一键自动部署_第26张图片

1619050871896

  1. 构建自动触发器,配置jenkins搭建Jenkins+springcloud一键自动部署_第27张图片

  2. 构建触发器,配置gitee

搭建Jenkins+springcloud一键自动部署_第28张图片

1619051250412

  1. 测试构建是否生效

    配置jenkins添加构建步骤搭建Jenkins+springcloud一键自动部署_第29张图片

搭建Jenkins+springcloud一键自动部署_第30张图片

1619051394272

点击 应用 保存

  1. 测试手动构建

搭建Jenkins+springcloud一键自动部署_第31张图片

1619051457074

搭建Jenkins+springcloud一键自动部署_第32张图片

1619051489297

搭建Jenkins+springcloud一键自动部署_第33张图片

1619051513195

  1. 测试自动构建

    手动push代码看看是否会出发自动构建

    搭建Jenkins+springcloud一键自动部署_第34张图片

    搭建Jenkins+springcloud一键自动部署_第35张图片

    搭建Jenkins+springcloud一键自动部署_第36张图片

    搭建Jenkins+springcloud一键自动部署_第37张图片

10、自动化部署脚本

自动构建配置完成,接下来编写一个脚本进行真正的部署项目

脚本内容如下,目前实现了功能但还是不完善,后期完善

  1. 项目部署脚

    
    # 项目模块统一变量设置
    
    # 公共服务
    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} <
  2. jar镜像打包脚本

    FROM primetoninc/jdk:1.8
    ARG JAR_FILE
    MAINTAINER   [email protected]
    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"]
    
    
    
  3. 修改jenkins刚才shell配置如下

    #!/bin/bash
    chmod u+x run.sh # 一行是赋予脚本执行权限
    ./run.sh #一行是执行脚本
    
    

搭建Jenkins+springcloud一键自动部署_第38张图片

1619052201097

11、测试自动构建和手动构建

  1. 手动触发构建(提交代码自动触发也一样),查看输出控制台,已经开始下载maven依赖开始打包

搭建Jenkins+springcloud一键自动部署_第39张图片

1619053964419

搭建Jenkins+springcloud一键自动部署_第40张图片

1619054134274

搭建Jenkins+springcloud一键自动部署_第41张图片

1619054194717

  1. 查看第二台服务器docker镜像

搭建Jenkins+springcloud一键自动部署_第42张图片

1619054218370

图片

1619054239768

  1. 查看nacos服务启动状态

    搭建Jenkins+springcloud一键自动部署_第43张图片

  2. 测试项目是否部署成功即可

你可能感兴趣的:(自动化部署,spring,java,编程语言)