前提条件
- 确保Jenkins已安装Publish Over SSH插件 用于把构建好的war包发送到目标远程服务器中、在远程服务器中执行命令。
- 使用Git需要安装Git插件,使用svn就要安装Subversion插件
发布步骤
- 先在系统管理中->系统设置中增加SSH Server
Name:名字
Hostname:目标服务器Ip
Username:登录用户名
Remote Directory:连接到远程服务器哪个目录
Password:密码(使用密码就勾选Use password authentication)
其他设置根据情况选填即可
填写完成点击Test Configuration提示“Success”表示可以连接上远程服务器
点击保存
- 新建一个项目,输入项目名称,选择“构建一个Maven项目”
点击OK
- 配置源码管理
我这以git演示,svn大同小异
Repository URL:项目git地址
Credentials:git凭证
Branch Specifier (blank for 'any'): 如果您想跟踪存储库中的特定分支,请指定分支。如果保留为空,所有的分支都将被检查变更并构建。
高级部分一般不用配置,根据具体情况选择配置
- 配置Build
Root POM:根Pom位置(相对于模块根目录),如果为空,则默认为pom.xml
Goals and options:指定要执行的目标,例如“clean install”或“deploy”。该字段还可以接受Maven的任何其他命令行选项,如"-e"或"-DskipTests=true"。
高级部分一般不用配置,根据具体情况选择配置
- 配置Post Steps(关键部分)
Add post-build setp选择Send files or execute commands over SSH
Run only if build succeeds:只有在构建成功时才运行(一般选这个即可)、Run only if build succeeds or is unstable:只有在构建成功或不稳定时才运行 、 Run regardless of build result:不管构建结果如何都运行
Name:目标服务器(刚刚在系统配置中加的目标服务器)
Source files:需要上传到服务器的文件。这个字符串是一个用逗号分隔的包含列表,用于一个Ant文件集,例如。**/*.jar 。此文件集的基本目录是工作区。
Remove prefix:发送到目标服务器要删除的父目录
Remote directory:目标服务器目录(相对系统配置中的Remote Directory)
Exec command:要在远程服务器上执行的命令,此命令将在任何文件传输完成后在远程服务器上执行。
SSH传输集必须包括源文件模式、Exec命令或两者。如果两者都存在,则在执行命令前先传输文件。如果您想在文件传输之前执行,使用2个传输集,并将Exec命令移动到包含源文件模式的传输集之前。
tunis.sh:
#!/bin/sh
#defined
#帮助信息
help()
{
cat <<- EOF
Desc: 用于jenkins启动服务
Usage: ./tunis.sh <要启用的服务jar包> [<用于remote denug端口>]
EOF
exit 0
}
#校验参数
if [[ -z "$1" ]]; then
echo "please input param target jar "
exit 0
fi
#输出帮助信息
if test "$1" = "--help" -o "$1" = "-h"
then
help;
fi
cd /data/ms
#检查文件是否存在
if test ! -e $1
then
echo "file is not exist"
exit 0
fi
# 终止已存在进程
ID=`ps -ef | grep java | grep $1 | awk '{print $2}'`
if [[ -z "$ID" ]]; then
echo "already kill"
else
echo $ID
echo "-------------"
kill -9 $ID
echo "kill $ID done"
echo "-------------"
# 休眠2秒,等待进程被停止
sleep 2
fi
#启动参数堆内存512M;年轻永久代使用默认比例,不做设置;元空间为128M;关闭字节码校验;禁止手动GC
JAVA_OPTS=" -Xms512m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xverify:none -XX:+DisableExplicitGC"
echo "start project"
#判断是否携带debug参数端口
if [ -z "$2" ]
then
nohup /usr/local/jdk1.8.0/bin/java $JAVA_OPTS -jar /data/ms/$1 --spring.profiles.active=test > /data/datalog/$1.log 2>&1 &
else
echo "debug model, port \"$2\""
nohup /usr/local/jdk1.8.0/bin/java $JAVA_OPTS -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=$2,suspend=n -jar /data/ms/$1 --spring.profiles.active=test > /data/datalog/$1.log 2>&1 &
fi
tunis.sh是启动应用的命令。
最后点击保存。
- 最后点击立即构建即可。点击Console Output可查看执行日志。

提示Success成功,大功告成。
总结
构建过程:
- 拉取最新代码
- 打包编译代码
- 将打包好的项目发送至目标远程服务器
- 执行命令启用最新打包好的应用
文中只是简单介绍基本使用,Jenkins功能非常强大,提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。