saundy 发表于 2018-1-8 15:35:24

jenkins 项目发布脚本

:10888/nightly/$JOB_NAME/$Output_Package_Name  #通过截取最后一个/后面的内容,提取作为文件名
  File_Name_To_Be_Deploy=${Output_Package_Name}
  #定义本项目使用的脚本
  Update_Script_Name=(${!Project_type})
  echo =======部署脚本名========
  echo ${!Project_type}
  echo =======部署脚本名========
  #显示出所有变量以便查看及确认
  echo ##################################################################################################
  echo 【程序包下载路径】File_To_Be_Get_URL is 【$File_To_Be_Get_URL】
  echo 【下载服务器】Update_Script_Download_URL is 【$Update_Script_Download_URL】
  echo 【程序包】File_Name_To_Be_Deploy is 【${File_Name_To_Be_Deploy}】
  echo 【项目名】Project_File_Name_String is【$Project_File_Name_String】
  echo 【服务名】File_To_Be_Deploy_Server is 【$File_To_Be_Deploy_Server】
  echo 【SSH用户名】User_execute_in_SSH is 【$User_execute_in_SSH】
  echo 【部署脚本】Update_Script_Name is【$Update_Script_Name】
  echo ##################################################################################################
  #删除已发布的网页目录下的$Update_Script_Name$Update_Script_Name到网页目录,目的是如果要修改升级脚本,只需要修改/root/.jenkins/downtown_scripts/$Update_Script_Name一处地方即可;
  rm -rf /data/html/$Update_Script_Name
  /bin/cp -fr /data/root/.jenkins/downtown_scripts/$Update_Script_Name /data/html/$Update_Script_Name
  #如果有新增环境,例如增加一个分布式安全规则扫描的服务器集群,请注意修改File_To_Be_Deploy_Server_IP后对应的内容
  echo =====server_ip===========
  echo ${!File_To_Be_Deploy_Server}
  echo =====server_ip===========
  File_To_Be_Deploy_Server_IP=(${!File_To_Be_Deploy_Server})
  echo "Depoly $File_Name_To_Be_Deploy"
  echo "目标服务器个数为 【${#File_To_Be_Deploy_Server_IP
[*]}】"
  #如果该类型服务器有多台,则循环执行
  for ((i=0;i<${#File_To_Be_Deploy_Server_IP
[*]};i++))
  do
  echo "正在部署 【${File_To_Be_Deploy_Server_IP}】"
  #下面有一段较长的shell语句,解释如下:
  #免密码登陆的机器,例如研发自测环境,测试部使用的环境使用ssh原生程序执行,如果是BTS或者生产环境则使用SmartSSHLogin.sh处理
  #1.输入密码后自动通过ssh登陆到目标机器
  #2.清除目标机器原来环境中存在的【$Update_Script_Name】,【$File_Name_To_Be_Deploy】,【$Project_File_Name_String.${File_Name_To_Be_Deploy#*.}】
  #3.在目标机器下载【$Update_Script_Name】
  #4.在目标机器下载【$File_Name_To_Be_Deploy】并直接另存为【$Project_File_Name_String.${File_Name_To_Be_Deploy#*.}】
  #5.在目标机器执行./$Update_Script_Name $Project_File_Name_String.${File_Name_To_Be_Deploy#*.}
  /usr/bin/ssh -l $User_execute_in_SSH ${File_To_Be_Deploy_Server_IP} "source /etc/profile \
  && cd /data/source \
  && rm -rf ${Update_Script_Name}$Project_File_Name_String.${File_Name_To_Be_Deploy#*.} \
  && /usr/bin/wget ${Update_Script_Download_URL}/${Update_Script_Name} \
  && chmod 755 ${Update_Script_Name} \
  && /usr/bin/wget -O $Project_File_Name_String.${File_Name_To_Be_Deploy#*.} ${File_To_Be_Get_URL} \
  && /data/source/${Update_Script_Name} $Project_File_Name_String.${File_Name_To_Be_Deploy#*.}"
  done
页: [1]
查看完整版本: jenkins 项目发布脚本