Centos下Jenkins发布Springboot
0. 目录
- 原理
- 服务器A软件安装
2.1 安装git
2.2 安装JDK
2.3 安装Maven
2.4 安装Jenkins - 配置Jenkins
- 配置springboot持续集成项目
- 配置服务器B目录和脚本
- 启动Jenkins下Springboot项目
- 检测springboot项目启动是否成功
1. 原理
有两个服务器A和B,服务器A安装Jenkins,服务器B运行Springboot项目。其步骤如下:
1.服务器A先安装JDK,再部署jenkins.war到Tomcat,根据Jenkins图形化配置好git,maven,ssh
2.服务器A先用git工具从gitlab拉取代码,再用maven把springboot项目打包成jar包,然后用ssh传输到服务器B
3.服务器B要有springboot脚本(先杀死进程,再启动),把springboot项目启动
2. 服务器A软件安装
服务器A准备环境
- git
- jdk1.8
- maven
- jenkins
2.1安装git
1.安装 yum install -y git 2.查看 git --version 3.配置ssh和gitlab
- 查看ssh的公钥和私钥,判断id_rsa.pub是否存在
ls ~/.ssh - 如果不存在,创建ssh(可修改邮件地址)
ssh-keygen -t rsa -C "your_email@example.com" - 如果存在,查看id_rsa.pub
cat ~/.ssh/id_rsa.pub - 登陆gitlab,复制到gitlab的ssh配置中
右上角->Settings->SSH keys->Key和Title->Add key - 测试通过ssh拉取代码
git clone git@190.168.1.18:javagroup/microistore.git - 查看git位置
which git
2.2安装JDK
1. 下载JDK 从官网https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载jdk-8u201-linux-x64.tar.gz。或者共享目录:
\\190.168.1.31\临时存储_文件留10天\Java开发软件(永不删除)\centos学习 2. 上传到服务器A,解压 tar -zxvf jdk-8u201-linux-x64.tar.gz 3. 移动到/usr目录下 mv jdk-8u201-linux-x64 java 4. 环境变量配置 vi /etc/profile
再加入 export JAVA_HOME=/usr/java export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin export PATH=$PATH:${JAVA_PATH} 5. 环境变量生效 source /etc/profile 6. 环境变量检测 java -version
2.3安装Maven
1. 服务器A下载Maven wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz 2. 解压 tar zxf apache-maven-3.1.1-bin.tar.gz 3. 移动到/usr目录 mv apache-maven-3.1.1 /usr/maven 4. 环境变量配置 vi /etc/profile
再加入 export M2_HOME=/usr/maven export PATH=${M2_HOME}/bin:${PATH} 5. 环境变量生效 source /etc/profile 6. 环境变量检测 mvn -v
2.4安装Jenkins
1. 服务器A下载Jenkins wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.150.3/jenkins.war
2. 启动Jenkins(可放入tomcat容器中) nohup java -jar jenkins.war --logfile=server.log --httpPort=8080 > server.log 2>& 1 &
3. 打开浏览器 输入http://localhost:8080
4. 查看jenkins密钥,并且输入浏览器页面上 cat /root/.jenkins/secrets/initialAdminPassword
5. 默认插件安装,选择第一个 cat /root/.jenkins/secrets/initialAdminPassword 6. 输入账号密码等信息
3. 配置Jenkins
1. 安装Jenkins插件Maven Integration plugin和Publish Over SSH
步骤:Jenkins->系统管理->插件管理->Available->输入Maven Integration plugin->Install without restart->再安装Publish Over SSH
2. 配置全局工具 步骤:Jenkins->系统管理->全局工具配置 依次配置JDK、Maven、Git(文件路径为上面配置路径)
- JAVA_HOME为/usr/java
- MAVEN_HOME为/usr/maven
- Path to Git executable为/usr/bin/git(可用命令which git查看路径) 3. 配置SSH连接远程服务器B 步骤:Jenkins->系统管理->系统设置->向下滚动->Publish over SSH->Add->Advanced...->Use password authentication, or use a different key
分别输入服务器B名称、ip地址、ssh帐号、上传文件跟目录、ssh密码
4.配置springboot持续集成项目
1.创建maven项目 步骤:Jenkins->新建项目 2.配置maven项目
- 进入配置
- 配置git
Repository URL为gitlab的ssh项目地址
Branch Specifier (blank for 'any') 为项目分支 - 配置maven
Root POM为打包目录pom.xml
Goals and options为打包命令 - 进入SSH配置
步骤:Post Steps->Send files or execute commands over SSH- 配置SSH Name为选择服务器B Source files为服务器A打包后jar的文件路径 Remove prefix为同上,但为文件夹 Remote directory为服务器B的相对目录,实际目录为/data/upload Exec command为服务器B的执行脚本
5. 配置服务器B目录和脚本
-
创建上传目录 mkdir /data mkdir /data/upload
-
配置启动脚本(可在服务器A上Jenkins的Exec command执行脚本) 1.先配置java环境变量 2.再杀死原来springboot进程 3.最后启动springboot项目 vi /data/start.sh 再输入
#!/bin/sh
# --- script starts here
# 初始化jdk目录和jenkins上传目录
echo "开始启动项目"
JAVA_HOME=/usr/java
JAVA_START=$JAVA_HOME/bin/java
echo $JAVA_START
UPLOAD_HOME=/data/upload/
# 获取参数
APP_NAME=$1
PROFILE=$2
echo 第一个参数应用名:$APP_NAME
echo 第二个参数配置文件:$PROFILE
# 清除进程
pid=$(ps -ef | grep -v grep |grep -v sh|grep $APP_NAME | awk '{print $2}')
echo 找到进程号:$pid
if [ -n "$pid" ];then
kill -9 $pid
echo "清除进程pid:"+"$pid"
fi
# 启动
PROFILE_PATH=""
if [ -n "$PROFILE" ];then
PROFILE=--spring.profiles.active=$PROFILE
fi
nohup $JAVA_START -jar $UPLOAD_HOME$APP_NAME $PROFILE > $UPLOAD_HOME$APP_NAME.log 2>&1 &
echo 开始等待十五秒
sleep 20s
echo 日志输出开始
tail -200 $UPLOAD_HOME$APP_NAME.log
echo 日志输出结束
echo 启动项目成功
6. 启动Jenkins下Springboot项目
- 启动springboot项目,再查看启动日志
- 再查看启动日志
选择最后一个Build History,再选择Console Output
7. 检测springboot项目启动是否成功