使用Jenkins进行自动构建部署
Jenkins是一款由Java编写的开源的持续集成工具,也是开源CI&CD软件领导者,本文介绍Jenkins的自动构建,部署SpringBoot项目、传统War项目、前端项目。
环境准备
- Jenkins已经安装完成,本次以Jenkins 2.300为例
- Jenkins相关插件
部署Jenkins的服务器上安装有Java、Maven、Node环境。
配置Jenkins
配置Java
Dashboard -> Manage Jenkins -> Global Tool Configuration,在JDK这一栏点击JDK安装,新增JDK,如下图所示:

配置Maven
Dashboard -> Manage Jenkins -> Global Tool Configuration,在Maven这一栏点击Maven安装,新增Maven,如下图所示:

配置NodeJS
Dashboard -> Manage Jenkins -> Global Tool Configuration,在NodeJS这一栏点击NodeJS安装,新增NodeJS,如下图所示:

配置Publish over SSH
Dashboard -> Manage Jenkins -> Configure System,在Publish over SSH这一栏点击新增,如下图所示:

- Name :服务器名称,自定义可辨识即可
- Hostname:服务器的主机名或者IP
- Username:用户名
- Remote Directory:远程路径,默认是用户的Home目录。
点击高级,点击Use password authentiation配置密码:

配置完成后,点击右下角的Test Configuration测试是否正确:

左下角显示Success即配置成功。
配置自动编译部署SpringBoot项目
新建Item
Dashboard -> 新建Item -> Freestyle Project

配置保持构建的策略
General中的描述下面勾选Discard old builds

配置Git
在源码管理中选择git,输入仓库地址,可用户认证信息,没有的点击添加即可

指定分支默认是*/master,可根据自己的需要修改为类似*/dev,*/test之类的分支名称。
构建环境
在构建环境中勾选Add timestamps to the Console Output 选项,这一步非必选。

构建
在构建中点击增加构建步骤选择Invoke top-level Maven targets

内容如下:

选择Maven版本,目标便是Maven打包的命令,注意不要把mvn填写进去。
构建后操作
在构建后操作中点击增加构建后操作步骤选择Send build artifacts over SSH

按照如下进行配置:

参数说明
- Name: @配置Publish 设置的SSH Sverver的名字列表
- Source files: 复制到运程机上的文件,相对workspace的路径,也支持表达式,如上图中的@test-web/target/test-web.jar
- Remove prefix: 文件复制时要过滤的目录,如上图中的@target 目录
- Remote directory: 文件上传到远程机上的目录,此目录是相对于@SSH 中的@Remote 的,如果不存在将会自动创建
- Exec command: 在这里可以填写在运程机器上执行的脚本
在部署服务器上的操作
假设我们本次需要将TestSpringBoot项目部署到10.10.22:20中,并使用app用户启动,登录到10.10.22:20中。
创建应用部署目录
1 | mkdir -p ~/test-web |
创建Jenkins-depoly.sh
1 | touch ~/test-web/jenkins-depoly.sh |
文件内容如下:
1 | # /usr/bin |
如此,使用Jenkins自动构建部署SpringBoot项目的配置已经完成。
配置自动编译部署传统War项目
有些项目还是使用比较传统的Spring项目,将其打包为war,然后部署到Tomcat中。与SpringBoot项目的流程类似,只不过构建后操作不同罢了,前面的就不赘述了。
构建后操作
在构建后操作中点击增加构建后操作步骤选择Deploy war/ear to a container,按照如下配置:

Tomcat配置
配置tomcat-users.xml
在tomcat-users.xml中填入如下内容:
1 | <role rolename="admin-gui"/> |
配置context.xml
vim webapps/manager/META-INF/context.xml,偷懒的话将Value标签注释了,有兴趣也可以配置下对应的规则也行。
1 | <Context antiResourceLocking="false" privileged="true" > |
配置自动编译部署前端项目
对于前端项目,有差异的也就是从构建环境开始,前面的都一模一样。
构建环境
在构建环境中勾选Add timestamps to the Console Output和Provide Node & npm bin/ folder to PATH 选项,如下图所示:

构建
在构建中点击增加构建步骤选择Execute NodeJS script:

构建后操作
在构建后操作中点击增加构建后操作步骤选择Send build artifacts over SSH,如下图所示:

jenkins-test-web.sh内容如下,与springboot一样的逻辑:
1 | # /usr/bin |
如此,Jenkins对于前端项目的打包、编译、部署已经完成。


