jenkins 项目发布脚本

构建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
时间: 2024-11-01 15:41:25

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

用Shell编写项目发布脚本

1.首先在github上创建一个测试用的仓库 2.本地编写一个可以运行的测试项目,上传至github 3.链接服务器,编写脚本如下:注意:编写前需要在服务器上安装git和maven 执行build_code方法,从github上克隆下新上传的项目 进入到项目目录下,执行maven命令打包 进入到tomcat目录下,删除Root文件夹和Root.war将项目打好的war包从指定目录拷贝到tomcat的webapps目录下重命名为ROOT.war进入tomcat /bin目录下重启tomcat 4.

jenkins+github 项目环境搭建和发布脚本(二)

Jenkins+gitHub项目搭建配置 项目发布脚本 profilesScript.sh (支持不同环境配置文件) #!/bin/bash ACTIVE=$1 JENKINS_PATH=/var/lib/jenkins/workspace APP_NAME=sb-system APP_PATH=$JENKINS_PATH/$APP_NAME/sb-base/src/main/resources if [ -d $APP_PATH ]; then echo "${APP_PATH}"

基于python实现jenkins自动发布代码平台

前言:jenkins自动发布代码平台是我2014年6月搭建的,截止目前已经有24个项目接入了jenkins,公司开发team中大部分是用GIT管理代码,也有一部分是用svn管理代码.我的实现原理是,通过jenkins构建新版本代码,然后用python脚本发布到生产环境,在jenkins界面上点击构建,即完成在线发布. 一.Jenkins环境部署 1, 后续整理.........

通过jenkins构建发布普通网站(jenkins+nginx+svn)

本次实验介绍:nginx:web网站svn:代码存储仓库jenkins:自动化运维工具 开发人员通过将代码提交到svn上,运维人员通过配置jenkins自动发布到nginx目录上. 实验环境:192.168.0.188 Jenkins192.168.0.189 nginx192.168.0.19 svn Jenkins.nginx.svn环境都已经准备完成,这里不进行再次搭建 步骤:1.Jenkins安装ssh插件,并配置远程服务器2.建立项目(job)配置Jenkins3.将代码上传svn4.

.NET项目发布网站具体步骤和注意事项

ASP.NET项目发布网站具体步骤 1.     在解决方案管理器中右键项目名称,点击“发布网站”,如图 2.     在发布窗口中选择“文件系统”,然后选择文件路径(一般放在wwwroot下),勾选“发布前删除所有现有文件”,点击发布按钮 3.     发布成目录以后,切换到IIS,可通过“应用程序”(即虚拟目录)方式,也可通过网站方式发布网站 此时YJXM是以目录的形式存在的,必须要转化为“应用程序”(即虚拟目录)的方式,选择“转换为应用程序”菜单,选择应用程序池为“DefaultAppPo

静态资源发布脚本升级版

新项目新发布静态资源脚本 #!/bin/bash ########h5_mall发布脚本### #此脚本不需要加任何参数,直接运行发布h5_mall静态资源 # ############################### nginx_static_ip=10.18.2.190 tmp_time=`date +%Y-%m-%d-%H-%M-%S` remote_ip=10.18.3.200 ####过滤出最新的h5_mall静态资源####### war=`ssh ${remote_ip} "

项目发布与部署

项目发布与部署 章我们将讲解ASP.NET5项目发布部署相关的内容,示例项目以我们前一章创建的BookStore项目为例. 发布前的设置 由于新版ASP.NET5支持多版本DNX运行环境的发布和部署,所以在部署之前,我们需要设定部署的目标DNX(即之前的KRE). 步骤:右键BookStore项目->属性->Application选项卡,选择DNX的版本,本例中,选择dnx-coreclr-win-x64.1.0.0-beta4. 在project.json文件的commands节点,我们可以

bash实战篇-数组在工作中的实际应用(测试环境发布脚本)

数组在之前已经用过介绍,下面介绍其在工作中的一个实际功用 出现的工作背景: 公司测试环境的tomcat的webapps下有3个项目,如果按通常的发布脚本,需要为每一个项目单独写一个发布脚本,我感觉太过麻烦,就想能否用一个脚本搞定这3个项目,最开始是在脚本里面定义三个变量获取相应的包名,之后对上传的目录进行判断,若该包存在则发布:虽然实现了,可过程有点繁琐,而且定义的变量是写死的,今后若有需求复用的话还需要额外进行修改,很是麻烦,近期在复习数组时突然想起数组功用,发现使用数组加for循环只需要几行

《从零开始搭建游戏服务器》项目发布到Linux环境

前言: 之前我们提及了如何使用Maven来创建.管理和打包项目,也简单过了一遍Linux中搭建Java开发环境的步骤,现在我们就开始将我们之前开发的项目demo发布到Linux环境下,并让它正常运行起来. 发布思路: 使用Maven将项目打包为.jar 将项目的.jar和项目所有依赖的jar包都复制到Linux下 创建项目启动脚本来启动项目 准备工作: 查询Linux系统机器的Ip地址:方法很简单,在Linux中打开终端输入ifconfig即可查到Ip地址为192.168.35.130: 修改E