Jenkins部署Maven聚合项目
Jenkins部署Maven聚合项目
官网下载war : http://mirrors.jenkins.io/war/latest/jenkins.war
启动命令
java -jar jenkins.war -Dhudson.util.ProcessTree.disable=true
- -Dhudson.util.ProcessTree.disable=true 关闭构建项目导致jenkins console关闭,子进程(项目)也会停止
1. 需要安装的插件
- SSH Slaves 节点ssh连接工具
- Subversion Plug-in svn插件
- Publish Over SSH ssh远程连接工具
- Pipeline Maven Integration maven项目构建
- Locale plugin 本地化语言
- Multiple SCMs 拉取多个项目
- thinbackup job 备份工具
2. Jenkins配置
2.1 JDK
位置 : Manage Jenkins -> Global Tool Configuration ->JDK-> JDK installations -> Add JDK
name : open-jdk
JAVA_HOME : C:\Program Files\Java\jdk1.8.0_60
2.2 MAVEN
位置 : Manage Jenkins -> Global Tool Configuration ->Maven -> Maven installations -> Add Maven
name : jenkins-maven
MAVEN_HOME : D:\jenkins-workspace\apache-maven-3.5.3
2.3 设置编码
位置 : Manage Jenkins -> Configure System -> Global properties -> Environment variables
name : LANG
Value : zh_CN.UTF-8
如果是windows还需要设置本机的环境路径 :
变量名 : JAVA_TOOL_OPTIONS
变量值 : -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
2.5 语言
位置 : Manage Jenkins -> Configure System -> Locale -> Default Language
zh_CN.UTF-8
2.6 Publish over SSH
位置 : Manage Jenkins -> Configure System -> Publish over SSH -> Add SSH Servers
# 可自定义名称
name : test
# 主机地址
HostName : 192.168.1.145
# ssh登录名称
Username : root
# ssh远程连接目录
Remote Directory : /xxx/deploy/upload
如果需要密码,勾选Use password authentication, or use a different key
,在Passphrase / Password
输入密码 .也可以配置linux 免ssh ,需要在key处填写
配置完之后,可以点击
Test Configuration
测试是否连接
3. Maven聚合工程部署
Manage Jenkins -> ThinBackup -> settings
Backup directory : D:/xxx
备份 : Backup Now
还原 : Restore
4.tomcat重启脚本
#!/bin/bash
BUILD_ID=DONTKILLME
#set -m 设置该脚本文件以作业模式启动
set -m
# 设置参数
rootPath='/szwlWeb/deploy'
path=${rootPath}'/Tomcat8080-ct'
tomcatpath=${path}'/bin'
uploadpath=${rootPath}'/upload/ct/*.war'
#查询tomcat的进程id
pid=`ps aux | grep $tomcatpath | grep -v grep | grep -v retomcat | awk '{print $2}'`
echo 'exist pid:'$pid
if [ -n "$pid" ]; then
echo ===========shutdown================
$tomcatpath'/shutdown.sh'
sleep 2
pid=`ps aux | grep $tomcatpath | grep -v grep | grep -v retomcat | awk '{print $2}'`
if [ -n "$pid" ]; then
sleep 2
echo ==============kill tomcat begin==============
echo $pid
kill -9 $pid
echo ==============kill tomcat end================
fi
sleep 2
fi
echo ==============startup.sh==============
rm -rf $path'/webapps/ROOT.war'
mv $uploadpath $path'/webapps'
cd $path'/webapps'
mv *.war ROOT.war
sleep 2
$tomcatpath'/startup.sh'
# 输出日志
# tail -f $path'/logs/catalina.out'
exit 0
根据项目修改响应脚本中的路径与job中发送路径对应
关于
1.Maven不能及时更新拉取snapshots
或者release
的jar包
可以参考我另外一篇文章 :http://www.blaaair.com/articles/2019/06/30/1561909691433.html
2. Maven父子工程,各job间发生顺序部署
在mvn install
时,可能项目之间有依赖关系 ,在其中不管是父项目,还是子项.都会发生构建成功后,继续构建下一个项目的现象
这时我们需要检查两个项目配置中 :
Build Triggers -> Build whenever a SNAPSHOT dependency is built 此处不能打勾,父子之间的job都不能打勾,只要有一个是打勾的,就会触发顺序构建