Jenkins是流行的CI/DI工具。什么是CI/DI呢?CI/CD 的核心概念可以总结为三点:

  • 持续集成
  • 持续交付
  • 持续部署

简单来说就是将不同代码的分支合并到主分支,并自动进行打包,编译,测试,部署到生产环境的交付流程。

 

在这里用阿里云主机演示Jenkins自动部署SpringBoot项目。可以到阿里云官网免费试用云主机。创建主机后,点击实例id

 

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_JAVA

选中实例后,选择安全组配置外网访问规则,在这里放开所有端口:

 

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_Jenkins_02

1、选择安全组列表;2、点击配置规则

配置规则如下:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_Jenkins_03

如果不配置端口的访问规则,则外网不能访问对应的端口。

 

Jenkins的下载地址是https://www.jenkins.io/download/,登录到云主机后,运行wget https://get.jenkins.io/war-stable/2.387.3/jenkins.war下载war包,下载完后运行java -jar jenkins.war --httpPort=8080启动jenkins,--httpPort指定运行端口。访问ip:8080,看到:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_JAVA_04

 

我已经安装了中文插件,第一次访问看到的是英文。根据生成的密码解锁Jenkins,安装推荐插件,之后创建用户,刷新页面,重新登录Jenkins即可。

 

启动成功之后,接下来安装三个必要的插件:

  1. Maven Integration:Maven 构建工具
  2. Publish Over SSH:整个工具,将来把 Jenkins 打包好的 jar 上传到应用服务器上。
  3. Gitee:协助使用 Gitee 仓库。

安装位置如下:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_Jenkins_05


springboot项目如何在jenkins自动构建 jenkins springboot自动打包_JAVA_06

按照上面步骤安装三个插件后重启Jenkins。

安装java并配置JAVA_HOME

yum install -y java-11-openjdk

安装jdk11。安装目录在/usr/lib/jvm。进入安装目录确定jdk11使用的目录。这里是java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64。运行vi /etc/profile配置JAVA_HOME:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

在运行source /etc/profile使配置生效。运行java -version查看java配置是否生效及java版本。

 

安装MAVEN

运行wget https://dlcdn.apache.org/maven/maven-3/3.9.2/binaries/apache-maven-3.9.2-bin.tar.gz获取maven解压后即可。

jenkins配置jdk和maven

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_java_07

进入全局工具配置:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_java_08

配置java。

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_Jenkins_09

配置git。记得在云主机执行 yum install git安装git。

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_Jenkins_10

配置mavem HOME。

配置主机和gitee

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_java_11

找到 Publish over SSH并配置SSH Servers:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_JAVA_12

填写主机ip,用户名和密码。这里是公网ip,就不写出来了。

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_JAVA_13

my-test是简单的SpringBoot项目。点击添加 > Jenkins添加gitee的用户名和密码:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_java_14

新建任务

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_JAVA_15

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_JAVA_16

选择MAVEN项目并填写项目名。点击确定后,选择gitee 仓库地址,选择gitee登录账户,分支:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_Jenkins_17

添加时间:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_Jenkins_18

输入构建命令:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_Jenkins_19

最后,配置上传构建好的文件,并执行启动命令,如下:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_Jenkins_20

配置详情如下:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_JAVA_21

 
用root账号登录云主机后,建立/opt/data文件夹,并添加文件deploy.sh:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH

JAR_PATH=/root/data

JARFILE=my-test-0.0.1-SNAPSHOT.jar

ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs -r  kill -9

java -jar $JAR_PATH/$JARFILE > out.log &
if [ $? = 0 ];then
        sleep 30
        tail -n 50 out.log
fi

配置java HOME。之后检查jar是否已经启动,启动则关闭。再重新启动jar。可以打开SSH操作日志:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_Jenkins_22

点击应用和保存后,点击立即构建:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_JAVA_23

查看构建详情:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_Jenkins_24


springboot项目如何在jenkins自动构建 jenkins springboot自动打包_JAVA_25

看到:

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_java_26

就成功了。也可以在这里看到出错日志。

访问http://你的公网ip:端口/路径,就可看到输出了。

自动构建

现在项目还不是自动构建,提交代码后不会自动构建。

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_Jenkins_27


springboot项目如何在jenkins自动构建 jenkins springboot自动打包_JAVA_28


springboot项目如何在jenkins自动构建 jenkins springboot自动打包_JAVA_29

复制上面的url配置到Webhook中。接下来在 Gitee 的项目中,配置 WebHook,在当前项目中,选择管理选项卡,左边菜单点击 WebHooks,然后点击添加 WebHook。

springboot项目如何在jenkins自动构建 jenkins springboot自动打包_Jenkins_30

点击测试,看大push_hooks ref = refs/heads/master commit sha = c912ef246f03a842f6d2656018dffcf86c873111 has been accepted.即可。

格式是:http://jenkins用户名:jenkings密码@你的公网ip:jenkins端口/xxxx

 
现在提交代码,等几秒,可以看到Jenkins自动构建。