Jenkins&Maven部署Java应用操作手册
- Jenkins安装
- Jenkins配置
-
- 插件安装
- 全局工具配置
-
- Maven 安装
- JDK 安装
- 系统设置
-
- SSH Server
- 构建任务
-
- 新建任务
-
- General
- 源码管理
- 构建环境
- 构建Jar
- 构建War
- 构建后操作
- Send build artifacts over SSH
- 构建
Jenkins安装
Jenkins版本:Jenkins ver. 2.190.1
Jenkins配置
插件安装
Publish over SSH、GIT、Svn等
全局工具配置
根据项目使用的构建工具,安装构建工具。
支持Maven、Gradle、Ant
Maven 安装
- 官网下载Maven工具包,上传服务器解压
- 设置上传的maven工具包(settings.xml)为默认的settings文件路径
- 设置上传的maven工具包(settings.xml)为默认全局settings文件路径
- 服务器非root账号登陆,可能会有(settings.xml)读写权限的问题,需要设置权限
JDK 安装
JDK支持自动安装和手动上传配置
- 手动安装:
- 下载 .tar.gz 版本的JDK,解压。配置环境变量
- Jenkins指定JAVA_HOME
系统设置
SSH Server
Jenkins自动部署服务器使用Publish over SSH插件实现。
系统设置首先设置服务器参数
SSH Server设置
- name 服务器名称
- Hostname 服务器地址
- Username 服务器登陆用户名
- Remote Directory 上传服务器默认根路径
构建任务
新建任务
- 输入任务名称
- 选择,构建一个自由风格的软件项目
- 确定
- Jenkins新建任务,也支持复制一个已经存在的任务
General
填写项目描述等
源码管理
源码支持svn、Git方式管理。这里选择svn
- 输入Repository URL,svn地址
- 添加svn,Credentials
- 选择添加的Credentials
构建环境
- 设置构建前,清空任务的工作空间。可选
- 构建任务输出日志增加时间显示。可选
构建Jar
发布项目jar到Maven私有仓库
- 增加构建步骤,调用顶层Maven目标
-
配置构建
Maven 版本:选择全局工具设置的Maven插件
目标:Maven发布jar 至私有仓库命令,clean deploy
POM:如果是聚合工程。可能需要指定项目pom.xml文件路径
- 保存
构建War
发布war包,部署到目标服务器
- 增加构建步骤,调用顶层Maven目标
- 配置构建
Maven 版本:选择全局工具设置的Maven插件
目标:指定打包环境,发布war包。clean package -P prd
POM:如果是聚合工程。可能需要指定项目pom.xml文件路径
构建后操作
增加构建后操作步骤
Send build artifacts over SSH
Send build artifacts over SSH
- SSH Server Name:选择在系统设置中的SSH Server。代表部署的目标服务器
- Source files:需要上传的文件(相对于工作区的路径。看后面的配置可以填写多个,默认用,分隔)。Maven Build War路径 如:target/helloworld.war
- Remove prefix:移除目录,(只能指定Transfer Set Source files中的目录)。如:target/
-
Remote directory 1:远程目录。上传目标服务器的相对路径。上传目标服务器的完整路径是系统设置中的SSH Server的Remote Directory参数项+此路径。
参考:
SSH Server Remote Directory:/home/test/
Remote directory:war
目标服务器路径为:/home/test/war/helloworld.war
- Remote directory 2:远程目录。jenkins支持根据日期、任务构建次数生成远程目录。高级—>勾选Remote directory is a date format
路径如:'war/deploy/'yyyyMMdd/'build-${BUILD_NUMBER}'
yyyyMMdd,BUILD_NUMBER。是jenkins内置环境变量。
- Exec command:部署命令。
- Exec command 1,cp.sh 执行copy 上传的war到统一的文件夹
- Exec command 2,deploy.sh 执行解压war包命令
Tomcat 重启脚本
#!/bin/sh
CDATE1=`date +%Y%m%d`
DOMAIN_HOME="/appserver/tomcat_8081"
echo "[$(date +'%F %T')] >>> Tomcat begin to restart."
cd ${DOMAIN_HOME}
cd bin
./shutdown.sh
# Kill all remaining processes
pidList=$(ps aux | grep $DOMAIN_HOME | grep -v grep | awk '{print $2}')
for pid in $pidList; do
kill -9 $pid
echo "[$(date +'%F %T')] >>> Kill the process [$pid] successfully."
done
nohup ./startup.sh >>/appserver/tomcat_8081/tomcat_8081.log &
echo "[$(date +'%F %T')] >>> Tomcat restart complete."
deploy.sh
#clear directory config
cd /home/test/war/helloworld
rm -rf helloworld
mkdir helloworld
echo "clear dir sucess: /home/test/war/helloworld"
#unzip package to config
cd helloworld
jar -xf /home/test/war/helloworld.war
echo "unzip war package sucess"
- 保存
构建
立即构建
查看控制台输入,构建日志
完成