shell 可配置的自动发布脚本

#! /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":"wa@101.132.43.15",
                "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是给用户看的描述。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值