jenkins自動推送發(fā)布實(shí)現(xiàn) 含完整腳本

1. Jenkins安裝

在官網(wǎng)(https://jenkins.io)找到j(luò)enkins安裝包,并查看安裝注意事項(xiàng)。

檢查安裝注意事項(xiàng)

yum install java -y


確認(rèn)java版本

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? ? #確認(rèn)服務(wù)端口是否正常

安裝目錄

/var/lib/jenkins/

Jenkins配置文件地址:

/etc/sysconfig/jenkins

JENKINS_HOME是Jenkins的主目錄,Jenkins工作的目錄都放在這里,Jenkins儲存文件的地址,Jenkins的插件,生成的文件都在這個目錄下。

JENKINS_USER是Jenkins的用戶,擁有$JENKINS_HOME和/var/log/jenkins的權(quán)限。

JENKINS_PORT是Jenkins的端口,默認(rèn)端口是8080。

在瀏覽器上輸入jenkins?Server的地址(http://?IP_addr:8080)


輸入確認(rèn)密碼
安裝插件
開始安裝
創(chuàng)建管理員
完成引導(dǎo)模式
配置完成后展示的界面

2. 自動發(fā)布配置

2.1 插件安裝

安裝SSH插件,SSH插件可以通過SSH遠(yuǎn)程到其它服務(wù)器完成配置或者執(zhí)行命令。


在插件管理中下載并安裝SSH插件
安裝成功后重啟jenkins使配置生效

配置SSH,本例中后端服務(wù)為2臺,jenkins發(fā)布任務(wù)推送至后端2臺應(yīng)用服務(wù)器。


配置后端應(yīng)用服務(wù)器


2.2 創(chuàng)建發(fā)布任務(wù)


創(chuàng)建任務(wù)


配置發(fā)布

該配置的意思是當(dāng)構(gòu)建任務(wù)后,發(fā)送war包并且執(zhí)行命令。**/*.war表示構(gòu)建目錄下所有的war包,也可以指定war包的名稱。Exec command里面是1個腳本,后文會提供,主要意思是先停止應(yīng)用服務(wù)器的tomcat,將推送前的代碼備份,并且將推送的代碼解壓到發(fā)布目錄,開啟tomcat服務(wù)。

war包的上傳目錄默認(rèn)為(/var/lib/jenkins/workspace/e9z-web)

點(diǎn)擊任務(wù)構(gòu)建,既可以完成自動推送發(fā)布。


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

#項(xiàng)目名

ProjectName=$1

#WAR包名

PackageName=$2

Date=`date +%F`

DateNow=`date +%Y-%m-%d.%H%M`

##當(dāng)前Tomcat的IP地址

IP="127.0.0.1"

#項(xiàng)目備份目錄

BackupDir="/data/backup/web/"

#項(xiàng)目目錄

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容