使用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 over SSH设置的SSH Sverver的名字列表
- Source files: 复制到运程机上的文件,相对workspace的路径,也支持表达式,如上图中的test-web/target/test-web.jar
- Remove prefix: 文件复制时要过滤的目录,如上图中的target目录
- Remote directory: 文件上传到远程机上的目录,此目录是相对于SSH Server中的Remote directory的,如果不存在将会自动创建
- 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对于前端项目的打包、编译、部署已经完成。