#!/bin/bash
#2023-3-27 不再判斷建構的時間直接合并分支
#!/bin/bash
#時間戳
date_stamp=`date "+%Y-%m-%d"`
limit=${1:-2}
#通過jenkins cli 擷取生産環境的jobs list
JOB_list=$(/usr/lib/jdk/jdk1.8.0_311/bin/java -jar jenkins-cli.jar -s http://myjenkins.com/ list-jobs |grep Official)
#echo "$JOB_list"
echo "---start $date_stamp auto merge---"
Current_timestamp=$(date +%s) #目前系統時間戳
for i in $JOB_list ;
do
echo "$i"
Builddate=$(curl -s http://myjenkins.com/job/$i/lastSuccessfulBuild/buildTimestamp) #建構時間
Timestamp=$(date -d "$Builddate" +%s)
Repo=$(curl -s http://myjenkins.com/job/$i/lastSuccessfulBuild/api/json | jq '.'|grep 'https://gitee.com' ||sed 's/\"//g') #擷取倉庫位址
#倉庫位址轉換成git@,去掉https
Git_Repo=`echo ${Repo/https:\/\/gitee.com\//[email protected]:}`
echo "$Git_Repo"
Branch=$(curl -s http://myjenkins.com/job/$i/lastSuccessfulBuild/api/json | jq ".actions[0].parameters[0].value"|sed 's/\"//g'|awk -F/ '{print $2$3}'|sed 's/heads/origin\//g') #讀取分支
let Time_1=($Current_timestamp - $Timestamp) #目前時間戳 - 建構時間戳
let Day=($Time_1/86400 + 1) #按天計算
#let Day=($Time_1/60) # 1分鐘
#echo "$i 任務的時間戳 : $Timestamp \t$i任務的repo位址: $(Successrepo) \t$i 任務的建構分支: $(Successbranch)\t"
echo "$Builddate" 與目前相差$Day 天 "$Repo" "$Branch"
# if [ -n $1 ]
if [ $Day -eq $limit ]
then
echo "$i 需要合并分支"
git clone $Git_Repo /tmp/$i && cd /tmp/$i && git checkout master && echo "已切換至master分支" && \
git merge $Branch &>/tmp/merge-error.log
if [ $? -gt 0 ];
then
Erro=`cat /tmp/merge-error.log|sed 's/\"//g'`
send_weixin_v2 "【$date_stamp】\n【合并失敗】\n【gitee項目"$i"】\n【最後一次建構時間:$Builddate】\n【$Branch 分支合并失敗】\n【backup-server/10.10.10.21】\n 錯誤資訊: $Erro"
else
cd /tmp/$i
git push origin master && \
send_weixin_v2 "【$date_stamp】\n【合并成功】\n【gitee項目"$i"】\n【最後一次建構時間:$Builddate】\n【$Branch分支合并成功】\n【backup-server/10.10.10.21】\n gitee code 合并完成"
fi
else
echo "【$date_stamp】\n【$i項目】\n【最後一次建構時間:$Builddate】\n【"$Branch"】\n 分支建構沒有超過2天,不需要合并。" >> /tmp/merge.log
fi
cd /tmp/ && rm -rf /tmp/$i && echo "删除tmp目錄下的$i" && echo ""
done
echo "---end $date_stamp auto merge---"