首页 > 其他分享 >deploy 部署脚本

deploy 部署脚本

时间:2023-05-05 15:34:13浏览次数:39  
标签:脚本 deploy 部署 magedu app1 echo sleep && k8s

#!/bin/bash
#Author: xxx
#Date: 2018-10-24
#Version: v1

#记录脚本开始执行时间
starttime=`date +'%Y-%m-%d %H:%M:%S'`

#变量
SHELL_DIR="/root/scripts"
SHELL_NAME="$0"
K8S_CONTROLLER1="172.31.7.101"
K8S_CONTROLLER2="172.31.7.102"
DATE=`date +%Y-%m-%d_%H_%M_%S`
METHOD=$1
Branch=$2


if test -z $Branch;then
  Branch=develop
fi


function Code_Clone(){
  Git_URL="[email protected]:magedu/app1.git"
  DIR_NAME=`echo ${Git_URL} |awk -F "/" '{print $2}' | awk -F "." '{print $1}'`
  DATA_DIR="/data/gitdata/magedu"
  Git_Dir="${DATA_DIR}/${DIR_NAME}"
  cd ${DATA_DIR} &&  echo "即将清空上一版本代码并获取当前分支最新代码" && sleep 1 && rm -rf ${DIR_NAME}
  echo "即将开始从分支${Branch} 获取代码" && sleep 1
  git clone -b ${Branch} ${Git_URL} 
  echo "分支${Branch} 克隆完成,即将进行代码编译!" && sleep 1
  #cd ${Git_Dir} && mvn clean package
  #echo "代码编译完成,即将开始将IP地址等信息替换为测试环境"
  #####################################################
  sleep 1
  cd ${Git_Dir}
  tar czf ${DIR_NAME}.tar.gz  ./*
}

#将打包好的压缩文件拷贝到k8s 控制端服务器
function Copy_File(){
  echo "压缩文件打包完成,即将拷贝到k8s 控制端服务器${K8S_CONTROLLER1}" && sleep 1
  scp ${Git_Dir}/${DIR_NAME}.tar.gz root@${K8S_CONTROLLER1}:/opt/k8s-data/dockerfile/web/magedu/tomcat-app1
  echo "压缩文件拷贝完成,服务器${K8S_CONTROLLER1}即将开始制作Docker 镜像!" && sleep 1
}

#到控制端执行脚本制作并上传镜像
function Make_Image(){
  echo "开始制作Docker镜像并上传到Harbor服务器" && sleep 1
  ssh root@${K8S_CONTROLLER1} "cd /opt/k8s-data/dockerfile/web/magedu/tomcat-app1 && bash build-command.sh ${DATE}"
  echo "Docker镜像制作完成并已经上传到harbor服务器" && sleep 1
}

#到控制端更新k8s yaml文件中的镜像版本号,从而保持yaml文件中的镜像版本号和k8s中版本号一致
function Update_k8s_yaml(){
  echo "即将更新k8s yaml文件中镜像版本" && sleep 1
  ssh root@${K8S_CONTROLLER1} "cd /opt/k8s-data/yaml/magedu/tomcat-app1 && sed -i 's/image: harbor.magedu.*/image: harbor.magedu.net\/magedu\/tomcat-app1:${DATE}/g' tomcat-app1.yaml"
  echo "k8s yaml文件镜像版本更新完成,即将开始更新容器中镜像版本" && sleep 1
}

#到控制端更新k8s中容器的版本号,有两种更新办法,一是指定镜像版本更新,二是apply执行修改过的yaml文件
function Update_k8s_container(){
  #第一种方法
  ssh root@${K8S_CONTROLLER1} "kubectl set image deployment/magedu-tomcat-app1-deployment  magedu-tomcat-app1-container=harbor.magedu.net/magedu/tomcat-app1:${DATE} -n magedu" 
  #第二种方法,推荐使用第一种
  #ssh root@${K8S_CONTROLLER1} "cd  /opt/k8s-data/yaml/magedu/tomcat-app1  && kubectl  apply -f tomcat-app1.yaml --record" 
  echo "k8s 镜像更新完成" && sleep 1
  echo "当前业务镜像版本: harbor.magedu.net/magedu/tomcat-app1:${DATE}"
  #计算脚本累计执行时间,如果不需要的话可以去掉下面四行
  endtime=`date +'%Y-%m-%d %H:%M:%S'`
  start_seconds=$(date --date="$starttime" +%s);
  end_seconds=$(date --date="$endtime" +%s);
  echo "本次业务镜像更新总计耗时:"$((end_seconds-start_seconds))"s"
}

#基于k8s 内置版本管理回滚到上一个版本
function rollback_last_version(){
  echo "即将回滚之上一个版本"
  ssh root@${K8S_CONTROLLER1}  "kubectl rollout undo deployment/magedu-tomcat-app1-deployment  -n magedu"
  sleep 1
  echo "已执行回滚至上一个版本"
}

#使用帮助
usage(){
  echo "部署使用方法为 ${SHELL_DIR}/${SHELL_NAME} deploy "
  echo "回滚到上一版本使用方法为 ${SHELL_DIR}/${SHELL_NAME} rollback_last_version"
}

#主函数
main(){
  case ${METHOD}  in
  deploy)
    Code_Clone;
    Copy_File;
    Make_Image; 
    Update_k8s_yaml;
    Update_k8s_container;
  ;;
  rollback_last_version)
    rollback_last_version;
  ;;
  *)
    usage;
  esac;
}

main $1 $2

 

标签:脚本,deploy,部署,magedu,app1,echo,sleep,&&,k8s
From: https://www.cnblogs.com/gaoyuechen/p/17374270.html

相关文章

  • Docker 部署 Gitea Actions
    Gitea在1.19版本正式支持了GiteaActions而运行GiteaActions的前提是注册一个跑步者(目前,actrunners是唯一的选择)。官方介绍地址:https://gitea.com/gitea/act_runner二进制下载地址:https://dl.gitea.com/act_runner/当然,二进制部署不是本文的重点1.使用Docker部署dockerru......
  • Linux定时提交网站url到百度站长脚本
    以下是一个使用Shell编写的示例脚本,用于在Linux下定时提交URL到百度搜索引擎:#!/bin/bash#要提交的URL列表urls=('http://www.example.com/page1.html''http://www.example.com/page2.html''http://www.example.com/page3.html')#百度站长平台API地址api......
  • apipost利用预执行脚本生成不同的测试数据
    apipost利用预执行脚本生成随机的测试数据完整流程使用JavaScript编写预执行脚本进入自动化测试功能界面新建自动化测试,添加接口进去配置执行次数和间隔完成简单介绍apipost提供了强大的接口测试功能,方便我们进行接口测试的各种操作具体步骤1.使用JavaScript编写预......
  • Aria2 下载工具部署(local)
    Aria2下载工具部署(docker)中介绍了使用docker部署Aria2的方法,如果已经安装了docker,执行起来是比较简单的。但如果觉得每次使用Aria2还需要启动docker这个操作有点重,可以考虑使用本地部署的方式。这里使用scoop安装aria2和ariaNgScoopInstaller/Scoop:Acomman......
  • PyTorch 1.0 中文文档:Torch 脚本
    译者:keyianpai创建Torch脚本代码将追踪和脚本化结合起来Torch脚本语言参考类型表达式语句变量解析python值的使用调试内置函数Torch脚本是一种从PyTorch代码创建可序列化和可优化模型的方法。用Torch脚本编写的代码可以从Python进程中保存,并在没有Python依赖的进程中加载。我们......
  • 批量修改Mac txt文件名 Python脚本
    本文来源:批量修改Mactxt文件名Python脚本-钻芒博客(zuanmang.net)需求:修改文件夹内所有txt文件的文件名称,如 钻芒博客1234_你好1234567.txt要求去掉_后边的名称,使其改成 钻芒博客1234.txt如果文件名称没有_,则不处理Python importosimportsubprocess #替......
  • yarn : 无法加载文件 在此系统上禁止运行脚本
    yarn:无法加载文件C:\Users\Administrator\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅https:/go.microsoft.com/fwlink/?LinkID=135170中的about_Execution_Policies。所在位置行:1字符:1+yarn--registry=https://registry.npmmirro......
  • 部署Kubernetes遇到的问题与解决方法(初始化等)
    Kubelet和controlplane版本不对应:[ERRORKubeletVersion]:thekubeletversionishigherthanthecontrolplaneversion.Thisisnotasupportedversionskewandmayleadtoamalfunctionalcluster.Kubeletversion:"1.19.4"Controlplaneversion:&qu......
  • Linux部署Oracle 12c
    需求描述如何从Oracle官网上下载Oracle数据库之前的版本,例如Oracle12c?目前官网上进去只找到了21和18,那其他的版本呢?如何找到并下载?解决方法1在OracleSoftwareDeliveryCloud里搜索oracledatabase12c注:链接地址为:/*https://edelivery.oracle.com/osdc/faces/SoftwareDel......
  • Linux配置添加自定义shell脚本需要的PATH
    Linux添加自定义shell脚本记录下,便于之后复习使用。1.确定一个目录e.g.#到达用户目录cd~#创建一个bin文件夹来放脚本文件mkdirbincd./binpwd得到的是/root/bin2.把这个路径放到PATH中cd~#可以用ls-a看一看有没有.branrc文件vim~/.bashrc#编辑最后加入......