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都不能打勾,只要有一个是打勾的,就会触发顺序构建


Jenkins部署Maven聚合项目
https://www.blaaair.com/archives/jenkins-bu-shu-maven-ju-he-xiang-mu
作者
Glo6f
发布于
2024年01月26日
许可协议