使用Jenkins部署Springboot项目

本文主要记录如何在linux服务器上安装Jenkins,并使用jenkins做为持续集成工具将springboot项目部署到远程服务器。linux

1、结构

 

1.1 服务器结构

 

  • 测试机器:若干台外网测试主机,这里假设其中某台的IP地址为114.114.111.111。
  • Jenkins服务器:搭建在内网的测试主机,Jenkins安装部署在这台机器上。
  • SVN或GIT代码库:本次以git为例(SVN同理,只需配好地址,jenkins能够提取代码)

 

1.2 测试环境目录结构

  • /home/ceiec/BackService/jenkinsWeb: 项目总目录
  • /home/ceiec/BackService/jenkinsWeb/jenkins-in:jenkins构建好的jar包上传到此目录、存放项目启动的脚本start.sh
  • /home/ceiec/BackService/jenkinsWeb/WebInsight:项目启动运行的目录,存放日志文件及历史构建jar包的备份文件

1.3 代码结构

以WebInsight项目为例git

2、总体思路

 

  • 使用gradle构建项目(maven同理,只需输入对应打包命令便可)
  • 构建后使用Publish Over SSH(jenkins插件)部署到远程服务器
  • 关闭应用(杀掉以前项目的进程)
  • 备份应用到lastDeploy目录
  • 上传新版本的Jar包(或者war包)
  • 启动应用
  • 其中,关闭、备份、删除和启动应用都是由脚原本完成,因此我写了一个部署脚本 start.sh 放在 /jenkins-in下(内容见 相关脚本 章节)。
  • Pushlish Over SSH的执行顺序是先上传文件再执行脚本,因此对于每一个应用每一个服务器能够设置了两个 Transfer Set ,一个用于执行clean备份,一个用于执行start启动项目(脚本可随意发挥,最终目的就是杀掉以前的项目进程,删除并备份以前项目程序,开启新的项目程序

3、Jenkins安装部署

3.1 下载Jenkins

 

能够在https://jenkins.io/download/下载Jenkins的最新版本。建议下载LTS(LongTermSuport)。我下载的是 jenkins.warweb

3.2 在linux服务器上部署

将下载的jenkins.war上传到服务器上,我安装的目录是/usr/local/jenkins,目录结构:spring

其中,home为jenkins工做目录,jenkins.sh是为了方便启动和中止jenkins而写的脚本(内容见 相关脚本 章节),这里我还将设置成开机启动服务,设置以下:shell

 

  • 给脚本赋予权限:chmod 777 /usr/local/jenkins/jenkins.sh
  • 将jenkins.sh链接到/etc/init.d/jenkins:ln -s /usr/local/jenkins/jenkins.sh /etc/init.d/jenkins
  • 添加到chkconfig列表:chkconfig --add jenkins
  • 设置成开机启动服务:chkconfig --level 345 jenkins on

这时,就能够输入命令启动jenkins浏览器

 

  • 启动jenkins:service jenkins start
  • 关闭jenkins:service jenkins stop
  • 查看jenkins状态:service jenkins status

到这里,jenkins就安装部署成功了,接下来就能够在web界面配置jenkins。springboot

4、配置jenkins

4.1 访问jenkins

浏览器中输入172.16.3.35:7076(即安装部署jenkins服务器的ip地址,端口号默认是8080,我配置的是7076),页面出现:服务器

首次访问jenkins须要输入管理员密码,此时能够到服务器终端控制台上查找密码输入便可:maven

接着会提示你选择要安装的插件,选择“Install suggest Plugins”便可,后续也可到插件管理中查找须要的插件安装:工具

插件安装完成后,按照提示设置管理员帐号就可使用了!

4.2 安装Publish Over SSH 插件(用于构建成功后将jar包上传到远程服务器并安装部署)

在 系统设置->插件管理->可选插件 搜索 Publish Over SSH,选中点击当即安装便可安装。

4.3 系统配置

在新建任务以前,须要作一些系统配置

  1. 系统管理-系统设置:设置远程服务器,点击增长可设置多台服务器。

2. 系统管理-全局工具设置:设置JDK,Git,Gradle工具等(需先在jenkins安装的服务器上安装对应工具,而后填写其对应运行路径)

4.4 建立项目

新建任务

源码管理:输入项目的git路径,点击Credentials对应的Add能够输入git帐号密码,Branches to build为对应的分支

构建触发器:该部分能够选择定时构建,便可以设置日程,例如设置天天晚上8点构建等等,这里我暂时不须要。

构建:这里能够经过shell命令来执行构建(这里有个坑,从git上拉下来的项目代码自己在一个文件夹下(git不能直接拉子目录),直接执行gradle命令会致使找不到命令,因此能够经过shell命令先cd到工程目录下,而后在执行gradle命令,若是仍是报错找不到命令,就输入gradle执行的绝对路径),下图脚本就是先切换到项目根目录下,而后执行gradle命令进行打包。

构建后操做:构建后能够执行不少操做,例如发送邮件通知,发送代码审查报告,发送文件到远程部署等,下面咱们使用上面安装的Publish Over SSH插件将构建好的jar包传送到远程服务器上进行部署

1. 选择上面配置好的远程服务器;

2. source files:要上传的文件,此路径填写的是相对与jenkins该任务工做空间的相对路径,这里要上传的jar包在项目根路径下的build/libs路径下;

3. Remove prefix:上传时要去除的文件夹,即只上传jar包;

4. Remote directory:远程服务器的路径,即上传的jar包的保存路径;

5. Exec command:要执行的命令脚本,这里执行的是事先已经编辑好的start.sh脚本,脚本中就是备份部署等命令,见下脚本。

到这里,该任务就建立成功了,点击当即构建,就能够实现项目的构建部署了。

4.5 相关脚本

1. jenkins.sh:jenkins的部署脚本

2. start.sh:jar包部署脚本

参考:https://www.jianshu.com/p/d4f2953f3ce0

          https://www.jianshu.com/p/ba09cdc53343