栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

通过Jenkins自动打包更新文件夹

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过Jenkins自动打包更新文件夹

针对接口api版本更新,自动下载、打包、备份、上传、重启全量更新
第一步:点击选择需要部署的城市,会自动生成部署的项目信息,确认IP和项目路径
第二步:点击构建

jobs应用场景

公司代码库利用mvn run build打包后传送接口文件夹到目标服务器

application.properties   fdfs_client.conf  log4j.properties这三个文件在打包后需要删除,保留原先部署服务器的文件

首先打完包后把这三个文件删除,备份部署服务器的源文件到/data/backup目录下,传送新版本文件夹到目标服务器,再从/data/backup下把上面3个文件在传回到部署服务器中

 

 

 

 上面引入变量后直接就进入shell下用ansible进行文件更新

#!/bin/bash

echo -e "33[34m#####判断是否正确输入数据#####33[0m"
if [ -z ${source_file} ] && [ -z ${destination_file} ];then
echo -e "33[31m未输入参数,请重新输入33[0m"
exit 1
else
echo -e "33[34m输入内容正确33[0m"


echo -e "33[34m######判断IP是否输入正确#####33[0m"
cat /etc/ansible/hosts | grep -v ^# | awk  '{print $1}' | grep ${destination_ip}
if [ $? -eq 0 ]
   then
       echo -e "33[34m此IP在hosts列表,可以执行soft安装33[0m"
   else
       echo -e "33[31m确定IP,先添加到hosts文件33[0m"
       exit 1
fi
echo -e "33[34m#######打印输入#####33[0m"
echo -e "33[34m源路径:${source_file}33[0m"
echo -e "33[34m目标路径:${destination_file}33[0m"
echo -e "33[34m目标IP:${destination_ip}33[0m"


if [ $GIT_PREVIOUS_SUCCESSFUL_COMMIT == $GIT_COMMIT ] 
then
echo -e "版本相同无需打包"
else
echo -e "33[34m#####mvn打包#####33[0m"
echo -e "33[34m开始打包33[0m"
echo $localpacket
mvn  clean  -Dfile=$localpacket  package
result=$?
[ ${result} -eq 0 ] && echo -e "33[34mmaven打包成功33[0m" || {
echo -e "33[31mmaven打包失败33[0m"
exit ${result}
}
echo -e "33[34m#####删除文件#####33[0m"
rm target/l-1.0-SNAPSHOT/WEB-INF/classes/application.properties
 [ $? -eq 0 ] && echo -e "33[34m application.properties删除成功33[0m" || { 
            echo -e "33[31mapplication.properties删除失败33[0m"
            exit 1
        }
rm target/l-1.0-SNAPSHOT/WEB-INF/classes/fdfs_client.conf
 [ $? -eq 0 ] && echo -e "33[34m fdfs_client删除成功33[0m" || { 
            echo -e "33[31mfdfs_client删除失败33[0m"
            exit 1
        }
rm target/l-1.0-SNAPSHOT/WEB-INF/classes/generatorConfig.xml
 [ $? -eq 0 ] && echo -e "33[34m generatorConfig删除成功33[0m" || { 
            echo -e "33[31mgeneratorConfig删除失败33[0m"
            exit 1
        }
rm target/l-1.0-SNAPSHOT/WEB-INF/classes/log4j.properties
 [ $? -eq 0 ] && echo -e "33[34m log4j.properties删除成功33[0m" || { 
            echo -e "33[31mlog4j.properties删除失败33[0m"
            exit 1
        }
fi

#####利用ansible进行文件拷贝


echo -e "33[34m#####目标文件备份#####33[0m"
echo ${destination_file} > /tmp/name
backup_name=`cat /tmp/name | awk -F "/" '{print $5}'`
echo -e "33[34m备份目录:/data/backup/$backup_name33[0m"

echo -e "33[34m#判断备份目录是否存在,不存在重新创建33[0m"
ansible ${destination_ip} -m file -a 'path=/data/backup/{{ backup_name }}  state=directory'  -e  backup_name=${backup_name}
echo -e "33[34m/data/backup/$backup_name备份目录创建完成33[0m"


echo -e "33[34m###开始备份###33[0m"
date=`date "+%Y-%m-%d-%H-%M-%S"`
back_file=${destination_file##*/}
ansible "$destination_ip" -m command -a 'mv  "{{ destination_file }}" "/data/backup/{{ backup_name }}/{{ back_file }}".bak"{{ date }}"' -e back_file=${back_file} -e backup_name=${backup_name} -e destination_file=${destination_file} -e date=$date
 [ $? -eq 0 ] && echo -e "33[34m ${destination_file}备份完成33[0m" || { 
            echo -e "33[31m${destination_file}备份失败33[0m"
            exit 1
        }
        
              
echo -e "33[34m###开始同步###  33[0m"      
/usr/bin/ansible-playbook /etc/ansible/transfer-api.yml  -e source_file=$WORKSPACE/${source_file} -e destination_ip=${destination_ip} -e destination_file=${destination_file}
result=$?
[ ${result} -eq 0 ] && echo -e "33[34m${destination_file}同步完成!33[0m" || {
exit $result
echo -e "33[31m${destination_file}同步失败!33[0m"
}




application_properties="/data/backup/${backup_name}/${back_file}.bak$date/classes/application.properties"
fdfs_client_conf="/data/backup/${backup_name}/${back_file}.bak$date/classes/fdfs_client.conf"
log4j_properties="/data/backup/${backup_name}/${back_file}.bak$date/classes/log4j.properties"

ansible "$destination_ip" -m command -a 'cp "{{ application_properties }}" "{{ destination_file }}"' -e application_properties=${application_properties} -e destination_file=${destination_file}/classes/
ansible "$destination_ip" -m command -a 'cp "{{ fdfs_client_conf }}" "{{ destination_file }}"' -e fdfs_client_conf=${fdfs_client_conf} -e destination_file=${destination_file}/classes/
ansible "$destination_ip" -m command -a 'cp "{{ log4j_properties }}" "{{ destination_file }}"' -e log4j_properties=${log4j_properties} -e destination_file=${destination_file}/classes/

echo -e "33[34m###重启tomcat###  33[0m"  
tomcat_restart=${backup_name}
ansible "$destination_ip" -m shell -a 'nohup /usr/bin/bash /usr/local/web/{{ tomcat_restart }}/bin/shutdown.sh & ' -e tomcat_restart=${tomcat_restart}
sleep 5
ansible "$destination_ip" -m shell -a 'nohup /usr/bin/bash /usr/local/web/{{ tomcat_restart }}/bin/startup.sh &' -e tomcat_restart=${tomcat_restart}
 [ $? -eq 0 ] && echo -e "33[34m tomcat重启完成33[0m" || { 
           echo -e "33[31mtomcat重启失败33[0m"
           exit 1
        }


fi        

 

[root@srv ansible]# vim transfer-api.yml 

- hosts: 1.1.1.1
  remote_user: root
  tasks:
    - name: transfer sourcefile to destinationfile
      synchronize:
        src: "{{ source_file }}"
        dest: "{{ destination_file }}"
        mode: pull
      delegate_to: "{{ destination_ip }}"

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/389006.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号