#! /bin/bash
########修改配置文件的位置#########
configName=/home/g/opt/sh/config
################################
show(){
echo "-----------------------------------------------------"
projectCount=$(cat $configName | jq ".projects | length")
echo 项目数量: $projectCount
index=0
while test $index -lt $projectCount
do
thisIndex=$(cat $configName | jq ".projects[$index].index")
thisName=$(cat $configName | jq ".projects[$index].describe")
echo "$thisIndex $thisName"
index=`expr $index + 1`
done
}
printWithTime(){
echo -e "\033[35m$(date +"%Y-%m-%d %H:%M:%S") $1 \033[0m"
}
while test "1" = "1"
do
show
option=0
read -p " 请选择:" option
describe=$(cat $configName | jq ".projects[`expr $option - 1`].describe")
printWithTime $describe
path=$(cat $configName | jq ".projects[`expr $option - 1`].localPath")
real=$(echo $path|sed 's/\"//g')
printWithTime 路径$real
cd $real
buildScript=$(cat $configName | jq ".projects[`expr $option - 1`].buildScript" | sed 's/\"//g')
printWithTime "开始编译$buildScript"
$buildScript
printWithTime "编译完成"
server=$(cat $configName | jq ".projects[`expr $option - 1`].server" | sed 's/\"//g')
targetPath=$(cat $configName | jq ".projects[`expr $option - 1`].targetPath" | sed 's/\"//g')
printWithTime "服务器地址$server:$targetPath"
output=$(cat $configName | jq ".projects[`expr $option - 1`].output" | sed 's/\"//g')
printWithTime "删除旧文件"
ssh $server "cd $targetPath && rm -r $output"
printWithTime "上传新文件"
scp -r $output $server:$targetPath
printWithTime "上传成功"
notify-send -t 10000 上传成功
done
只需要修改代码最上面的config文件的位置后配置config文件就可以自动上传发布文件了。没时间整理代码 可能不使用一般情况,可能要根据自己的情况稍微修改一下。配置文件的格式如下
{
"projects":[
{
"index" : "1",
"name" : "iot-io",
"server":"[email protected]",
"localPath" : "/home/g/src/iot/io/launcher/api-cs/",
"targetPath" : "/home/wa/iot/io/",
"buildScript" : "go build -tags 'jsoniter'",
"output" : "api-cs",
"describe" : "15服务器 物联网io模块"
}]}
其中server是你服务器的登录名和ip,localPath是本地项目家目录,targetPath是服务器上存放代码的目录,buildScript是编译语句,output 是要上传的文件,describe是给用户看的描述。