169 lines
3.5 KiB
Bash
Executable File
169 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
||
# Usage:
|
||
# ./frontEndUpgrade.sh html.zip "/etc/nginx" "/home/admin.hq" "production/investigate/frontEnd"
|
||
# ./frontEndUpgrade.sh html.zip "/var/www" "/home/ubuntu" "stage/investigate/frontEnd"
|
||
fileName=$1 # html.zip zhuize.zip
|
||
projectPath=$2 # /etc/nginx /var/www
|
||
workPath=$3
|
||
ossLogPath=$4
|
||
user=$USER
|
||
|
||
protal=oss
|
||
basePath=/var/tmp/autoDeploy
|
||
|
||
if [ -n $5 ]; then
|
||
user=$5
|
||
fi
|
||
|
||
if [ ! -d $basePath ]; then
|
||
mkdir $basePath -p
|
||
fi
|
||
|
||
if [ ! -d $workPath ]; then
|
||
echo workPath $workPath not exist!
|
||
# exit 1
|
||
fi
|
||
|
||
PATH=PATH:/usr/bin:/usr/sbin:/usr/local/bin
|
||
projectName="${fileName%.*}" # html, zhuize
|
||
preName="${fileName%.*}"
|
||
!
|
||
function uploadLog()
|
||
{
|
||
ctype=$1
|
||
identify=$2
|
||
count=$3
|
||
echo "current user is ${USER}"
|
||
journalctl -n $count -xe -${ctype} $identify > ${workPath}/${identify}.log
|
||
ossutil cp -f ${workPath}/${identify}.log ${protol}://${ossLogPath}/logs/${identify}.log
|
||
if [ $? -eq 0 ]; then
|
||
echo "ok: log ${identify} uploaded to oss!"
|
||
return 0
|
||
else
|
||
echo "error: upload log ${identify} to oss failed!"
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
|
||
function extractHere() {
|
||
cd $projectPath
|
||
rm $fileName -f | true
|
||
rm $projectName -rf | true
|
||
cp $workPath/$fileName .
|
||
unzip -oq $fileName
|
||
mv dist $projectName
|
||
chgrp $user $fileName
|
||
chown $user $fileName
|
||
echo "user: $user"
|
||
chgrp $user $projectName -R
|
||
chown $user $projectName -R
|
||
cp ${workPath}/${fileName}_oss.info $projectName
|
||
sleep 5
|
||
md5Sum=$(md5sum $fileName)
|
||
md5Sum="${md5Sum% *}"
|
||
echo ${md5Sum} > ${projectName}/${fileName}_md5.txt
|
||
}
|
||
|
||
function init(){
|
||
cd $workPath
|
||
if [ ! -f "$fileName" ];then
|
||
echo "file $fileName not exist in $workPath !"
|
||
# cd $projectPath
|
||
# mkdir dist
|
||
# echo "helo" > helo.txt
|
||
# mv helo.txt dist
|
||
# zip -r $fileName dist
|
||
exit 0
|
||
fi
|
||
cd $workPath
|
||
if [ ! -d "$projectPath" ]; then
|
||
echo "path $projectPath exist! "
|
||
exit 0
|
||
fi
|
||
|
||
rm dist -fr | true
|
||
rm $projectName -fr | true
|
||
|
||
cd $projectPath
|
||
if [ ! -d "$projectName" ];then
|
||
extractHere
|
||
fi
|
||
if [ ! -f "$fileName" ];then
|
||
extractHere
|
||
fi
|
||
}
|
||
|
||
function compareMd5(){
|
||
cd $workPath
|
||
oriSum=$(md5sum $fileName)
|
||
oriSum="${oriSum% *}"
|
||
echo "locTemp file ${fileName} md5sum: ${oriSum}"
|
||
|
||
cd $projectPath
|
||
desSum=$(md5sum $fileName)
|
||
desSum="${desSum% *}"
|
||
echo "project Path ${fileName} md5sum: ${desSum}"
|
||
|
||
if [ ${oriSum} = ${desSum} ];then
|
||
return 0
|
||
else
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
function replaceFile(){
|
||
cd $projectPath
|
||
if [ -f "$fileName"_bak2 ];then
|
||
rm "${fileName}"_bak2 -fr
|
||
fi
|
||
if [ -f "${fileame}"_bak1 ];then
|
||
mv ${fileName}_bak1 ${fileName}_bak2
|
||
fi
|
||
if [ -f "$fileName"_bak ];then
|
||
mv ${fileName}_bak ${fileName}_bak1
|
||
fi
|
||
if [ -f "$fileName" ];then
|
||
mv ${fileName} ${fileName}_bak
|
||
fi
|
||
extractHere
|
||
return 0
|
||
}
|
||
|
||
function verify() {
|
||
cd /tmp/autoDeploy
|
||
cd $projectPath/${preName}
|
||
echo "the md5sum injected in ${projectPath}/${preName} is $(cat ${fileName}_md5.txt)"
|
||
}
|
||
|
||
function main() {
|
||
echo " "
|
||
sleep 5
|
||
echo "frontEndUpgrade start"
|
||
init
|
||
compareMd5
|
||
result=$?
|
||
if [ ${result} = 0 ];then
|
||
echo "local temp file ${fileName} is same with ${projectPath},no need to replace"
|
||
echo "ok: frontEndUpgrade done"
|
||
echo " "
|
||
exit 0
|
||
else
|
||
echo "local temp file $fileName is different from ${projectPath}, will replace..."
|
||
fi
|
||
replaceFile
|
||
result=$?
|
||
if [ $result = 0 ];then
|
||
echo "ok: replaced done"
|
||
else
|
||
echo "error: replace faild"
|
||
exit 0
|
||
fi
|
||
sleep 3
|
||
verify
|
||
echo " "
|
||
uploadLog t autoDeploy 100
|
||
}
|
||
|
||
main
|