1. Jenkins安装
在官网(https://jenkins.io)找到jenkins安装包,并查看安装注意事项。
yum install java -y
wget https://pkg.jenkins.io/redhat-stable/jenkins-2.150.3-1.1.noarch.rpm
rpm -ivh jenkins-2.150.3-1.1.noarch.rpm
service jenkins start
chkconfig jenkins on
netstat -ntlp #确认服务端口是否正常
安装目录
/var/lib/jenkins/
Jenkins配置文件地址:
/etc/sysconfig/jenkins
JENKINS_HOME是Jenkins的主目录,Jenkins工作的目录都放在这里,Jenkins储存文件的地址,Jenkins的插件,生成的文件都在这个目录下。
JENKINS_USER是Jenkins的用户,拥有$JENKINS_HOME和/var/log/jenkins的权限。
JENKINS_PORT是Jenkins的端口,默认端口是8080。
在浏览器上输入jenkins Server的地址(http:// IP_addr:8080)
2. 自动发布配置
2.1 插件安装
安装SSH插件,SSH插件可以通过SSH远程到其它服务器完成配置或者执行命令。
配置SSH,本例中后端服务为2台,jenkins发布任务推送至后端2台应用服务器。
2.2 创建发布任务
该配置的意思是当构建任务后,发送war包并且执行命令。**/*.war表示构建目录下所有的war包,也可以指定war包的名称。Exec command里面是1个脚本,后文会提供,主要意思是先停止应用服务器的tomcat,将推送前的代码备份,并且将推送的代码解压到发布目录,开启tomcat服务。
war包的上传目录默认为(/var/lib/jenkins/workspace/e9z-web)
点击任务构建,既可以完成自动推送发布。
deploy.sh 代码:
#!/bin/bash
source /etc/profile
export LANG="en_US.UTF-8"
if [ $# -eq 0 ]
then
echo "param1:ProjectName,param2:PackageName "
echo "example:./deploy.sh e9z-web e9z-web.war"
exit 1
fi
#项目名
ProjectName=$1
#WAR包名
PackageName=$2
Date=`date +%F`
DateNow=`date +%Y-%m-%d.%H%M`
##当前Tomcat的IP地址
IP="127.0.0.1"
#项目备份目录
BackupDir="/data/backup/web/"
#项目目录
ProjectDir="/data/web"
deploy(){
mkdir -p ${BackupDir}
cp -rf ${ProjectDir}/${ProjectName} ${BackupDir}/${ProjectName}_${DateNow}
num=$(ps aux | grep tomcat_${ProjectName} | grep -v "grep" |grep -v "tail"|wc -l)
if [ $num -eq 1 ];then
kill -9 `ps aux | grep tomcat_${ProjectName} | grep -v "grep" |grep -v "tail"|awk '{print $2}'`
echo "---------------------tomcat_${ProjectName} is stop ---------------------------"
elif [ $num -eq 0 ]; then
echo "---------------------tomcat_${ProjectName} is stoped ---------------------------"
else
echo "please check projectname ~~~~~~~~~~~~~~~~~~~~~~~~~~"
exit 1
fi
rm -rvf /usr/local/tomcat_${ProjectName}/work/*
rm -rvf ${ProjectDir}/${ProjectName}/*
cd ${ProjectDir}
unzip -o ${PackageName} -d ${ProjectDir}/${ProjectName}/
rm -rf ${ProjectDir}/${PackageName}
sleep 1
nohup /usr/local/tomcat_${ProjectName}/bin/startup.sh >/dev/null 2>&1
echo "---------------------tomcat_${ProjectName} is starting ---------------------------"
echo "${Date}*******mark*******backup release is ${ProjectName}_${DateNow}*******"
echo "${Date}*******mark*******backup release is ${ProjectName}_${DateNow}*******"
sleep 20
}
deploy