建立job任務

參數化建構
在執行建構時可根據參數選項執行
#!/bin/bash
DATE=`date +%Y-%m-%d_%H-%M-%S`
METHOD=$1
BRANCH=$2
GROUP_LIST=$3
function IP_list(){
if [[ ${GROUP_LIST} == "GROUP1" ]];then
Server_IP="192.168.0.142"
echo ${Server_IP}
#ssh [email protected] ""echo disable server linux39-web-80-master/172.31.0.105" | socat stdio /run/haproxy/admin.sock"
#ssh [email protected] ""echo disable server linux39-web-80-master/172.31.0.105" | socat stdio /run/haproxy/admin.sock"
elif [[ ${GROUP_LIST} == "GROUP2" ]];then
Server_IP="192.168.0.79"
echo ${Server_IP}
#從排程器下線後端伺服器,如果排程器開啟了多程序,則需要從每一個程序都下線
#ssh [email protected] ""echo enable server linux39-web-80-master/172.31.0.105" | socat stdio /run/haproxy/admin.sock"
#ssh [email protected] ""echo enable server linux39-web-80-master/172.31.0.105" | socat stdio /run/haproxy/admin.sock"
elif [[ ${GROUP_LIST} == "GROUP3" ]];then
Server_IP="192.168.0.142 192.168.0.79"
echo ${Server_IP}
fi
}
function clone_code(){
cd /data/git/linux39/ && rm -rf web1
git clone -b ${BRANCH} [email protected]:linux39/web1.git
echo "代碼clone完成"
}
#代碼品質掃描
#function scanner_code(){
# cd /data/git/linux39/web1 && /usr/local/sonar-scanner/bin/sonar-scanner
# echo "代碼掃描完成,請打開sonarqube檢視掃描結果"
#}
function code_maven(){
echo "cd /data/git/linux39/web1 && mvn clean package -Dmaven.test.skip=true"
echo "代碼編譯完成"
}
function make_zip(){
cd /data/git/linux39/web1 && zip -r code.zip ./
echo "代碼打包完成"
}
#下線後端伺服器
#down_node(){
#for node in ${Server_IP};do
#jenkins到後端伺服器免密鑰登入
#ssh [email protected] "echo "disable server linux39-web-80-master/${node}" | socat stdio /run/haproxy/admin.sock"
#echo "${node} 從負載均衡172.31.0.103下線成功"
#ssh [email protected] "echo "disable server linux39-web-80-master/${node}" | socat stdio /run/haproxy/admin.sock"
#echo "${node} 從負載均衡172.31.0.104下線成功"
#done
#}
function stop_tomcat(){
for node in ${Server_IP};do
ssh www@${node} "/opt/apps/tomcat.sh stop"
done
}
function scp_zipfile(){
for node in ${Server_IP};do
scp /data/git/linux39/web1/code.zip www@${node}:/data/tomcat/tomcat_appdir/code-${DATE}.zip
ssh www@${node} "unzip /data/tomcat/tomcat_appdir/code-${DATE}.zip -d /data/tomcat/tomcat_webdir/code-${DATE} && rm -rf /data/tomcat/tomcat_webapps/myapp && ln -sv /data/tomcat/tomcat_webdir/code-${DATE} /data/tomcat/tomcat_webapps/myapp"
done
}
function start_tomcat(){
for node in ${Server_IP};do
ssh www@${node} "/etc/init.d/tomcat start"
#sleep 5
done
}
function web_test(){
sleep 5
for node in ${Server_IP};do
NUM=`curl -s -I -m 10 -o /dev/null -w %{http_code} http://${node}:8080/myapp/index.html`
if [[ ${NUM} -eq 200 ]];then
echo "${node} 測試通過,即将添加到負載"
add_node ${node}
else
echo "${node} 測試失敗,請檢查該伺服器是否成功啟動tomcat"
fi
done
}
function add_node(){
node=$1
echo ${node},"----->"
#if [[ ${GROUP_LIST} == "GROUP2" ]];then
# ssh [email protected] ""echo enable server linux39-web-80-master/172.31.0.105" | socat stdio /run/haproxy/admin.sock"
# ssh [email protected] ""echo enable server linux39-web-80-master/172.31.0.105" | socat stdio /run/haproxy/admin.sock"
#fi
##########################################
if [ ${node} == "172.31.0.105" ];then
echo "172.31.0.105 部署完畢,請進行代碼測試!"
else
ssh [email protected] ""echo enable server linux39-web-80-master/${node}" | socat stdio /run/haproxy/admin.sock"
ssh [email protected] ""echo enable server linux39-web-80-master/${node}" | socat stdio /run/haproxy/admin.sock"
fi
}
function rollback_last_version(){
for node in ${Server_IP};do
echo $node
NOW_VERSION=`ssh www@${node} ""/bin/ls -l -rt /data/tomcat/tomcat_webapps/ | awk -F"->" '{print $2}' | tail -n1""`
NOW_VERSION=`basename ${NOW_VERSION}`
echo $NOW_VERSION,"NOW_VERSION"
NAME=`ssh www@${node} ""ls -l -rt /data/tomcat/tomcat_webdir/ | grep -B 1 ${NOW_VERSION} | head -n1 | awk '{print $9}'""`
echo $NAME,""NAME
ssh www@${node} "rm -rf /data/tomcat/tomcat_webapps/myapp && ln -sv /data/tomcat/tomcat_webdir/${NAME} /data/tomcat/tomcat_webapps/myapp"
done
}
function delete_history_version(){
for node in ${Server_IP};do
ssh www@${node} "rm -rf /data/tomcat/tomcat_appdir/*"
NUM=`ssh www@${node} ""/bin/ls -l -d -rt /data/tomcat/tomcat_webdir/code-* | wc -l""`
echo $NUM
if [ ${NUM} -gt 10 ];then
NAME=`ssh www@${node} ""/bin/ls -l -d -rt /data/tomcat/tomcat_webdir/code-* | head -n1 | awk '{print $9}'""`
ssh www@${node} "rm -rf ${NAME}"
echo "${node} 删除曆史版本 /data/tomcat/tomcat_webdir/${NAME}成功!"
fi
done
}
main(){
case $1 in
deploy)
IP_list;
clone_code;
#scanner_code;
make_zip;
#down_node;
stop_tomcat;
scp_zipfile;
start_tomcat;
web_test;
delete_history_version;
;;
rollback_last_version)
IP_list;
#echo ${Server_IP}
down_node;
stop_tomcat;
rollback_last_version;
start_tomcat;
web_test;
;;
esac
}
main $1 $2 $3
版本復原方式
1. 基于git reset
重新執行代碼編譯,代碼編譯時間比較長
2. 重新更新
開發修複完bug重新送出代碼,也是需要重新執行代碼編譯,代碼編譯時間比較長
3. 基于備份代碼目錄恢複
基于已經存在的曆史版本目錄
1. 目前所處的版本
v1->v2(更新失敗)->v3(又失敗)
如何復原到穩定的v1版本
v3->v2->v1
2. 将web伺服器的代碼目錄/webapps/myapp 軟連接配接到穩定版本
3. 重新開機服務
越學越感到自己的無知