构建shell

#!/bin/bash

##########################################################################   编译部分   ################################################################################################################
#Define
Nightly_Package_Path=/data/html/nightly
Output_Package_Name=${JOB_NAME}_${Project_File_Name_String}_${SVN_Revision}.tar.gz mkdir -p $Nightly_Package_Path/$JOB_NAME cd $WORKSPACE
rm -fr ../$Project_File_Name_String mkdir -p ../$Project_File_Name_String #cp -fR ./xml/export.xml ../$Project_File_Name_String
#cp -fr ./config/replaceFromTemplate.py ../$Project_File_Name_String
#cp -fr ./crontab ../$Project_File_Name_String
cp -fr ./* ../$Project_File_Name_String tar -zcf $Nightly_Package_Path/$JOB_NAME/$Output_Package_Name ../$Project_File_Name_String #显示出所有变量以便查看及确认
echo "=============================="
echo "[info] 【任务名】Job_Name is 【$JOB_NAME】"
echo "[info] 【项目名】Project_File_Name_String is 【$Project_File_Name_String】"
echo "[info] 【git版本号】SVN_Revision is 【$SVN_Revision】"
echo "[info] 【程序包】Output_Package_Name is 【$Output_Package_Name】"
echo "[info] 【工作目录】WorkSpace is 【$WORKSPACE】"
echo "${GIT_COMMIT}"
echo "==============================" ########################################################################## 部署部分 ################################################################################################################ #导入服务器IP列表变量
sed -n '/server_ip/,$p' /data/root/.jenkins/downtown_2.0_server_ip_var.txt > /tmp/server_ip.txt
source /tmp/server_ip.txt #定义部署文件的下载地址
File_To_Be_Get_URL=http://ci.8.cn: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[i]}】" #下面有一段较长的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[i]} "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

jenkins 项目发布脚本的更多相关文章

  1. jenkins项目发布

    目录 一.简介 二.docker打包 一.后端打包 二.前端打包 三.启动容器 四.完整代码 五.发布测试 六.优化方案 七.源码地址: 八.参考 一.简介 1.该章节基于jenkins.Harbor ...

  2. JENKINS 打包发布脚本

    #!/bin/bash #nohup bash check_new_pkgs_dev.sh & #steps below: ##发布的机器上运行这个脚本 #定时遍历发布包存放路径 #1.遍历所 ...

  3. 用Shell编写项目发布脚本

    1.首先在github上创建一个测试用的仓库 2.本地编写一个可以运行的测试项目,上传至github 3.链接服务器,编写脚本如下:注意:编写前需要在服务器上安装git和maven 执行build_c ...

  4. 项目发布脚本-nginx

    #!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin clear printf &q ...

  5. 项目发布脚本-nodejs

    #!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin clear printf &q ...

  6. 项目发布脚本-go

    #!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin clear printf &q ...

  7. Jenkins+GitHub 项目环境搭建和发布脚本(二)

    Jenkins+gitHub项目搭建配置 项目发布脚本 profilesScript.sh (支持不同环境配置文件) #!/bin/bash ACTIVE=$ JENKINS_PATH=/var/li ...

  8. [原]Jenkins(七)---jenkins项目编译测试发布由maven构建的web项目

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...

  9. [原]Jenkins(九)---jenkins分别发布多个项目到多个远程主机

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...

随机推荐

  1. WP8.1学习系列(第二十一章)——本地应用数据

    了解如何存储和检索本地应用数据存储中的设置和文件. 路线图: 本主题与其他主题有何关联?请参阅: 使用 C# 或 Visual Basic 的 Windows 运行时应用的路线图 使用 C++ 的 W ...

  2. 【软件分析与挖掘】An Empirical Study of Bugs in Build Process

    摘要 对软件构建过程中所产生的错误(build process bugs)进行实证研究. 5个开源项目:CXF, Camel, Felix,Struts, and Tuscany. 把build pr ...

  3. java框架---->quartz的使用(一)

    Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制.今天我们就来学习一下它的使用,这里会分篇章对它进行介绍.只是希望能有个人,在我说没事的时候,知道我不 ...

  4. sencha touch 在线实战培训 第一期 第二节

    2013.12.30晚上8点开的课,仍然有些紧张,开始讲课进度很慢,后面又有些快了... 本期培训一共八节,前三堂免费,后面的课程需要付费才可以观看. 本节内容: 页面实现及跳转控制 跳转容器.路由理 ...

  5. [原]sublime Text2

    sublime Text2 升级到 2.0.2 build 2221 64位 的破破解 sublime Text2 download website 链接: http://pan.baidu.com/ ...

  6. testmath

    $\Huge ans = \frac{ \sum\limits_{i=1}^{m}{ (x_i - \bar{x})^2 } }{m} \cdot m^2 \\$

  7. 一、laya学习笔记 --- layabox环境搭建 HelloWorld(坑:ts版本问题解决方案)

    好吧,使用layabox需要从官网下载些啥呢 一.下载layabox 官网 https://www.layabox.com/ 首页上有两个,一个Engine,一个IDE Engine我下载的TS版本, ...

  8. 用logstash,elasticSearch,kibana实现数据收集和统计分析工作

    原文链接:http://www.open-open.com/lib/view/open1448799635720.html 世界上的软件80%是运行在内网的,为了使得运行在客户端的软件有良好的体验,并 ...

  9. 在eclipse pydev中使用PEP8来规范python代码

    最近在写接口自动话时,代码要上研发的PEP8检查,所以没办法,在pydev中配置如下: 1.打开PEP检查 在pydev 2.3.0之后的版本都自带了pep8检查,但默认是没有开启的 Windows ...

  10. 微信都在用的移动敏捷测试方法和工具|视频+PPT

    本文是腾讯优测总监雷彬在MPD2016 北京站上的演讲视频.他详细讲述了腾讯多年来在实践敏捷研发过程中测试的优化之路,为测试角色(包括测试工程师和开发自测)提供敏捷作业的思路.点击此处观看视频.时长5 ...