zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    虚拟机中对centOS7.4配置静态ip
    mybatis使用中出现的错误!
    http中get和post方法区别
    java中堆和栈的区别
    struts2工作流程
    springmvc工作流程
    JDBC访问数据库流程
    并行程序设计模式-Master-Worker模式-Guarded Suspension模式-不变模式-生产者-消费者模式的理解
    Future模式个人理解
    分布式系统一致性问题和Raft一致性算法
  • 原文地址:https://www.cnblogs.com/37yan/p/6879460.html
Copyright © 2011-2022 走看看