Jenkins自动构建部署SpringBoot项目

9,904 阅读1分钟

Jenkins

Jenkins是开源CI&CD软件领导者,是Devops神器,本文介绍Jenkins的安装,自动构建,部署SpringBoot项目

Jenkins安装及配置

1.安装

1.1Jenkins官网下载所需版本的war包即可https://jenkins.io/zh/download/(推荐下载LTS即长期支持版本问题会比较少)

1.2我使用的Linux系统,所以把下载好的war包上传到服务器上去,编写一个启动脚本启动Jenkins即可,Jenkins是war包形式可以直接使用java -jar命令执行,使用脚本是为了后续启动停止Jenkins方便操作

#!/bin/bash
pid=`ps -ef | grep jenkins.war | grep -v 'grep'| awk '{print $2}'| wc -l`
if [ "$1" = "start" ];then
        if [ $pid -gt 0 ];then
    echo 'jenkins is running...'
    else
    java -jar jenkins.war --httpPort=8888 >/dev/null 2>&1 &
        fi
elif [ "$1" = "stop" ];then
        exec ps -ef | grep jenkins | grep -v grep | awk '{print $2}'| xargs kill -9
    echo 'jenkins is stop..'
else
        echo "Please input like this:"./jenkins.sh start" or "./jenkins stop""
fi
  • 启动和停止命令(Jenkins安装目录下执行)
./jenkins.sh stop
./jenkins.sh start

2.配置

2.1启动Jenkins后会提示需要密码,根据页面提示使用cat命令到指定路径下获取密码即可

2.2安装插件:上一步输入密码后会进入下一个页面选择官方推荐的即可(但是有的插件可能不能安装多刷新几次全部安装),然后需要设置账号密码,自己根据需求进行设置

  • 安装插件:通过下载HPI文件安装插件(此方法是针对插件下载慢的方式,插件下载慢可以参考该博客https://www.cnblogs.com/hellxz/p/jenkins_install_plugins_faster.html,设置后即可在Jenkins插件管理下载安装,无需下载HPI文件)

(1)下载所需要安装合适版本插件的HPI,网址:updates.jenkins-ci.org/download/pl…

(2)进入Jenkins主页面:系统管理 -> 插件管理 -> 高级 -> 上传插件(红框里需要自己手动点击确认)

(3)项目部署需要安装三个必须插件:Git plugin 和 Maven Integration plugin,publish over SSH,可以使用上诉方式安装也可以使用一下方法:系统管理 -> 插件管理 -> 可选插件 -> 根据插件名字搜索安装即可

  • Git plugin:支持Git的插件
  • Maven Integration plugin:构建Maven项目所需要的插件,安装后在创建新项目时可以选择构建Maven项目
  • publish over SSH:SSH连接服务器,让项目可以发布在其他服务器上

2.3Jenkins全局配置:系统管理 -> 全局工具配置(需要安装Maven、JDK、Git,未安装需要在服务器上安装)

  • Maven全局配置:可以修改settings.xml将远程仓库成阿里云速度会快点,如果自己公司有中央仓库也可以做修改,此处时指定

  • JDK

  • Git:Name随意写、Path就是服务器安装的路径

  • Maven

  • 配置SSH Server:系统管理 -> 系统配置 -> Publish over SSH

点击高级设置输入密码:选择使用密码验证权限

3.自动构建部署SpringBoot项目 3.1访问Jenkins,新建Item

3.2输入Item名,选择构建Maven项目

3.3项目配置

  • 勾选丢弃旧的构建,选择是否备份被替换的旧包。我这里选择备份最近的10个

  • 源码管理:选择Git填写仓库地址,并添加访问账号和密码或者秘钥

  • 添加访问凭据:点击添加,添加访问认证(我是用的UserName+Password模式也可以选择其他方式)

  • 构建环境:构建环境中勾选“Add timestamps to the Console Output”,代码构建的过程中会将日志打印出来

![](p1-jj.byteimg.com/tos-cn-i-t2…

  • Build:在Build中填写Pom位置(多模块,单一模块默认即可),并填写Maven打包命令

  • Post Steps:选择Run only if build succeeds,打包成功后执行

  • 点击Add post-build step,选择 Send files or execute commands over SSH:构建成功后的操作,通过SSH传输文件,并执行相应脚本或者命令

  • SSH Publishers配置

Name:选择之前Publish over SSH配置的SSH Servers

Source files:选择源文件所在地址,就是项目打包后的jar包地址(根据实际情况而定) XX/target/xxx.jar 项目jar包名

Remove prefix:XX/target/,去除掉Source files后的xxx.jar即可

Remote directory:/apps/proj-packages/vevor-amazon-cloud/amazon-admin/ Jar包在应用服务器上的存放地址(自行创建即可)

Exec command:/apps/proj-packages/vevor-amazon-cloud/amazon-admin/startup.sh 应用服务器对应的执行脚本(也可以写Linux命令)

  • 启动脚本:下面脚本的意思是先杀死已有项目进程,备份旧Jar,获取新Jar包并启动(网上很多,可以自行搜索)
DATE=$(date +%Y%m%d)
export JAVA_HOME PATH CLASSPATH
JAVA_HOME=/usr/local/java/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
DIR=/apps/proj-packages/vevor-amazon-cloud/amazon-admin
JARFILE=amazon-admin.jar
 
if [ ! -d $DIR/backup ];then
   mkdir -p $DIR/backup
fi
cd $DIR
 
ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9
mv $JARFILE backup/$JARFILE$DATE
mv -f /root/.jenkins/workspace/Cloud-Amazon-Admin/amazon-admin/target/$JARFILE .
 
java -jar $JARFILE --spring.profiles.active=prod  > out.log &
if [ $? = 0 ];then
        sleep 30
        tail -n 50 out.log
fi
 
cd backup/
ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf

  • 点击立即构建或者Build Now:项目构建部署

会在控制台打印具体构建部署信息,方便排查错误