原部署流程:
第一步:ssh登陸發(fā)布機(jī)xx,共有不連續(xù)編號(hào)的7臺(tái)發(fā)布機(jī)測(cè)試可用
第二步:發(fā)布機(jī)上執(zhí)行帶參數(shù)腳本,
time sh deploy_test.sh 參數(shù)1(版本號(hào)) 參數(shù)2(代碼部署機(jī)器ip)
第一步需要2項(xiàng)關(guān)鍵信息:
找到本地執(zhí)行遠(yuǎn)程命令的工具,得到用戶選擇的發(fā)布機(jī)
1.1安裝本地執(zhí)行遠(yuǎn)程命令的工具-sshpass
使用yum安裝sshpass,并檢測(cè)安裝結(jié)果
sudo yum -y install sshpass
file="/usr/bin/sshpass"
if [ -f $file ];then
echo "sshpass is installed"
fi
sshpass使用語法:
sshpass -p pwd ssh -p5860 username@cmd
sshpass -p 密碼 ssh -p遠(yuǎn)程連接端口號(hào)@遠(yuǎn)程主機(jī)名 執(zhí)行的命令
1.2封裝方法:獲取用戶選擇的發(fā)布機(jī)
#函數(shù)功能:獲取用戶選擇的發(fā)布機(jī)信息
function get_deploy_machine(){
local choiceNum=0
read -p '請(qǐng)選擇發(fā)布機(jī)
2 deploy2-xxx
3 deploy3-xxx
4 deploy4-xxx
5 deploy5-xxx
6 deploy6-xxx
7 deploy7-xxx
9 deploy9-xxx
請(qǐng)選擇(2/3/4/5/6/7/9):' choiceNum
local deploy_machine=""
local deploy_machine_arr
deploy_machine_arr[2]='deploy2-xxx'
deploy_machine_arr[3]='deploy3-xxx'
deploy_machine_arr[4]='deploy4-xxx'
deploy_machine_arr[5]='deploy5-xxx'
deploy_machine_arr[6]='deploy6-xxx'
deploy_machine_arr[7]='deploy7-xxx'
deploy_machine_arr[9]='deploy9-xxx'
for key in $(echo ${!deploy_machine_arr[*]})
do
if [ $key==$choiceNum ];then
deploy_machine=${deploy_machine_arr[$key]}
fi
break
done
echo $deploy_machine
}
deploy_machine=`get_deploy_machine`
此功能實(shí)現(xiàn)參考文檔:http://www.itdecent.cn/p/6bbe5fdbd76e
第二步需要2項(xiàng)關(guān)鍵信息
time sh deploy_test.sh 參數(shù)1(版本號(hào)) 參數(shù)2(要部署代碼的機(jī)器ip)
參數(shù)1:版本號(hào),需要格式化以空格分隔
參數(shù)2:本機(jī)ip
2.1格式化版本號(hào)格式
開發(fā)提測(cè)的版本號(hào)可能是branches/v5.12.53.1@109823、branches v5.12.53.1@109823、tags/v7.1.2@162763、tags v7.1.0@156227等格式
需要處理為tags v7.1.2 162763格式
#函數(shù)功能:格式化版本號(hào)
function get_version(){
read -p "請(qǐng)輸入版本號(hào):" version
echo $version>vtxt
sed -i "s/[/@]/ /g" vtxt
version=$(cat vtxt
echo $version
rm -rf vtxt
}
version=`get_version`
echo $version
2.2獲取本機(jī)ip地址
ip=$(ifconfig eth0 |grep "inet addr"| cut -f 2 -d ":"|cut -f 1 -d " " )
2.3 遠(yuǎn)程機(jī)執(zhí)行的命令組裝完畢:
cmd="cd xxx && time sh deploy_test.sh $version $ip"
3.最后組裝1&2步,加上sshpass命令完成獲代碼腳本
sshpass -p pwd ssh -p端口號(hào) username@$deploy_machine $cmd