`
cywhoyi
  • 浏览: 418574 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

【自动构建系列】自动部署环境的shell脚本

 
阅读更多

#!/bin/bash

DAY=`date +%Y-%m-%d-%H:%M:%S`

#the path for deleting the log and tmp
APP_MAIN_PATH=/data/yousystem/jboss-5.1.0.GA/server/default

#the key word for searching the process id
PID_MSG=yousystem/

#msg of the file which is running now,backup it.
APP_FILE_NAME1=yousystem.war
APP_FILE_PATH1=/data/yousystem/jboss-5.1.0.GA/server/default/deploy

#msg of the start file which is used to start the system
APP_START_FILE=app-run.sh
APP_START_PATH=/data/yousystem

#msg of the update file
BUILD_FILE_NAME1=yousystem.war
BUILD_FILE_PATH=/data/backup/autobuild/build_files_backup

#msg of the old files for backup
OLD_FILE_PATH=/data/backup/autobuild/old_files_backup

#path of the shell script log
SHELL_LOG_PATH=/data/backup/autobuild

echo '=============================adp==================================='>>$SHELL_LOG_PATH/log_build.log
mkdir -p /data/backup
mkdir -p /data/backup/autobuild
mkdir -p /data/backup/autobuild/auto-build-scripts
mkdir -p /data/backup/autobuild/build_files_backup
mkdir -p /data/backup/autobuild/old_files_backup

#关闭正在运行的系统
time_now_1=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_1 'Begin to kill the progress.....'>>$SHELL_LOG_PATH/log_build.log
pid=`ps -ef|grep $PID_MSG|grep -v grep|awk '{print $2}'`
if [ -n "$pid" ]
then
echo 'The pid: ' $pid ' will be killed....'>>$SHELL_LOG_PATH/log_build.log
kill -9 $pid
fi
rm -rf $APP_MAIN_PATH/log/ $APP_MAIN_PATH/tmp/ $APP_MAIN_PATH/work/
time_now_2=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_2 'End to kill the progress.....'>>$SHELL_LOG_PATH/log_build.log

#备份现有的环境,具体的备份路径和范围由个人决定
echo '*******************************************************'>>$SHELL_LOG_PATH/log_build.log
time_now_3=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_3 'Begin to backup the files: '$APP_FILE_NAME1>>$SHELL_LOG_PATH/log_build.log
cp -r $APP_FILE_PATH1/$APP_FILE_NAME1 $OLD_FILE_PATH/$APP_FILE_NAME1-$DAY
time_now_4=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_4 'End to backup the files.....'>>$SHELL_LOG_PATH/log_build.log

#备份完之后先删除掉现有的环境,备份哪些就删除哪些,主要是怕覆盖的时候有文件错误
echo '*******************************************************'>>$SHELL_LOG_PATH/log_build.log
time_now_5=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_5 'Begin to delete the files: ' $APP_FILE_NAME1>>$SHELL_LOG_PATH/log_build.log
rm -rf $APP_FILE_PATH1/$APP_FILE_NAME1
time_now_6=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_6 'End to delete the files....'>>$SHELL_LOG_PATH/log_build.log

#把最新build的文件拷贝到需要解压的目录
echo '*******************************************************'>>$SHELL_LOG_PATH/log_build.log
time_now_7=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_7 'Begin to copy the build files: ' $BUILD_FILE_NAME1>>$SHELL_LOG_PATH/log_build.log
cp -r $BUILD_FILE_PATH/$BUILD_FILE_NAME1 $APP_FILE_PATH1
time_now_8=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_8 'End to copy the build files.....'>>$SHELL_LOG_PATH/log_build.log

#删除环境上的缓存文件
echo '*******************************************************'>>$SHELL_LOG_PATH/log_build.log
time_now_9=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_9 'Begin to backup the build files: ' $BUILD_FILE_NAME1>>$SHELL_LOG_PATH/log_build.log
mv -f $BUILD_FILE_PATH/$BUILD_FILE_NAME1 $BUILD_FILE_PATH/$BUILD_FILE_NAME1-$DAY
time_now_10=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_10 'End to backup the build files.....'>>$SHELL_LOG_PATH/log_build.log


#解压新build的文件(视个人项目而定,一般war包不需要解压,但是这里我们需要去修改war包中的配置文件)
echo '*******************************************************'>>$SHELL_LOG_PATH/log_build.log
time_now_11=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_11 'Begin to uncompress the files: ' $BUILD_FILE_NAME1>>$SHELL_LOG_PATH/log_build.log
cd $APP_FILE_PATH1
mkdir unwar
echo 'mkdir success'>>$SHELL_LOG_PATH/log_build.log
cp -r $APP_FILE_NAME1 unwar/
echo 'copy file success'>>$SHELL_LOG_PATH/log_build.log
cd unwar/
jar -xf $APP_FILE_NAME1
echo 'uncompress file success'>>$SHELL_LOG_PATH/log_build.log
rm -rf $APP_FILE_NAME1
echo 'delete the copy file success'>>$SHELL_LOG_PATH/log_build.log
cd $APP_FILE_PATH1
rm -rf $APP_FILE_NAME1
echo 'delete the update file success'>>$SHELL_LOG_PATH/log_build.log
mv unwar $APP_FILE_NAME1
echo 'change the folder name success'>>$SHELL_LOG_PATH/log_build.log
time_now_12=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_12 'End to uncompress the files:.....'>>$SHELL_LOG_PATH/log_build.log

#重启系统
echo '*******************************************************'>>$SHELL_LOG_PATH/log_build.log
time_now_13=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_13 'Begin to restart the system....'>>$SHELL_LOG_PATH/log_build.log
echo 'Start File is: ' $APP_START_PATH/$APP_START_FILE>>$SHELL_LOG_PATH/log_build.log
sh $APP_START_PATH/$APP_START_FILE
time_now_14=`date +%Y-%m-%d" "%H:%M:%S`
echo $time_now_14 'End to restart the system....'>>$SHELL_LOG_PATH/log_build.log

分享到:
评论

相关推荐

    shell自动化构建脚本

    shell脚本是Unix/Linux系统中的一种命令行解释器,用于执行一系列命令,实现任务的自动化。在本文中,我们将深入探讨shell自动化构建脚本的核心概念、用途、以及如何创建和使用它们。 一、shell脚本简介 Shell脚本...

    自动化部署脚本

    在使用这些文件进行自动化部署时,用户需要熟悉Linux Shell脚本编写,理解部署流程,并具备一定的系统管理知识。同时,对于Nginx的配置和管理也需要一定的了解。确保所有必要的环境变量、依赖库和端口设置都已正确...

    自动化部署JDK Shell脚本

    下面是一个简单的JDK自动化部署Shell脚本示例: ```bash #!/bin/bash # 定义JDK下载URL和本地存储路径 DOWNLOAD_URL="http://example.com/jdk-8u241-linux-x64.tar.gz" # 替换为实际下载地址 LOCAL_PATH="/opt/jdk...

    统信信操作系统PXE部署SHELL脚本

    总结起来,"统信桌面操作系统PXE部署SHELL脚本"涉及到的主要知识点包括:SHELL脚本编程,PXE网络部署原理,DHCP和TFTP服务配置,ISO镜像处理,initrd和vmlinuz的创建,kickstart自动化安装,以及客户端网络启动设置...

    linux的shell脚本快速部署java环境jdk+tomcat+mysql

    这篇内容将详细介绍如何通过Linux的shell脚本来快速部署Java环境,包括JDK、Tomcat和MySQL,这三个是构建Web应用程序的基础组件。 首先,让我们来了解一下JDK(Java Development Kit)。JDK是Java开发和运行的必备...

    shell脚本练习,自动化部署脚本

    通过编写shell脚本,我们可以执行一系列命令,实现自动化操作。在"shell脚本练习"中,我们将学习如何利用Bash语法,如变量赋值、条件语句、循环结构、函数定义等,来构建复杂的自动化流程。 `Nginx`是一款高性能的...

    自动化部署ZK Shell脚本

    2. **Shell脚本**:用于执行自动化部署任务,如解压安装包、配置环境变量、启动和停止Zookeeper服务等。 接下来,我们将详细介绍自动化部署的步骤: 1. **下载与解压**:首先,我们需要从Apache官网下载Zookeeper...

    自动化部署Redis Shell脚本

    总的来说,通过编写Shell脚本自动化部署Redis,不仅可以提高部署效率,还能确保每次部署的一致性,减少人为错误。结合其他如Docker、Kubernetes等容器化技术,你可以构建更强大的自动化部署体系,适应不断变化的业务...

    自动化部署EMQX Shell脚本

    在标题和描述中提到的“自动化部署EMQX Shell脚本”,意味着我们将讨论如何通过编写Shell脚本来实现EMQX的自动部署,这在系统运维和持续集成(CI/CD)流程中是非常常见的需求。编写自动化脚本可以提高效率,减少人为...

    sringboot项目自动化发布shell脚本

    这些工具能够监听代码仓库的变动,自动触发构建、测试和部署过程,确保每次代码提交都能快速且可靠地反映到生产环境中。 总的来说,`springboot项目自动化发布shell脚本`是DevOps实践中一个基础但重要的环节,它能...

    1024_shell脚本一键部署.zip

    Shell脚本是一种强大的工具,它允许用户通过命令行与操作系统进行交互,执行一系列自动化任务。下面我们将详细探讨这套部署脚本包含的知识点。 首先,`READ.md`文件通常用于提供项目简介、使用说明或注意事项。在这...

    ant_shell自动部署

    在自动部署中,Shell脚本可以用于执行环境配置、文件复制、权限设置、服务启动和停止等操作。通过Shell脚本,我们可以将复杂的部署流程简化为一键执行的脚本。 3. **自动部署流程**: - **预处理**:检查部署环境,...

    Linux云计算-Shell脚本100例

    5. **自动化测试**:在云环境中,Shell脚本可以用于构建持续集成/持续交付(CI/CD)流程,自动执行单元测试、集成测试等。 6. **安全管理**:例如,定期更新系统补丁、设置防火墙规则,确保系统的安全性。 至于...

    手把手图解,详解Jenkins ,svn ,maven 项目持续集成 SHELL 脚本

    1. **自动化工具**:SHELL脚本是Linux/Unix环境下的一种自动化执行程序,用于组合命令、执行任务。 2. **基本语法**:包括变量定义、条件判断、循环结构、函数定义等。 3. **与Jenkins结合**:在Jenkins中,可以通过...

    Jenkins定时构建自动部署并通知

    - 在构建任务的配置页面中,添加构建步骤,选择“执行Shell命令”,输入部署脚本路径。 9. **异机部署**: - 如果需要将构建后的应用部署到其他服务器上,则可以在构建后步骤中使用publishoverSSH插件将文件上传...

    自动构建x-wrt发布_Shell_下载.zip

    在Shell脚本中,这些步骤可能会用到各种Linux命令行工具,如curl或wget下载源码,tar或unzip处理归档文件,find或grep查找和过滤文件,以及sed或awk进行文本处理。此外,可能还需要使用chroot环境来模拟目标系统的...

    100个shell脚本合集

    9. 自动发布Java项目:shell脚本也可以用于自动化Java项目的构建、打包和部署,例如使用mvn命令进行Maven项目构建,然后将结果复制到目标服务器。 10. 入侵与检测:结合日志分析和防火墙规则,shell脚本可以实现...

    微服务工程自动编译,部署的shell脚本,自行修改工程目录和服务名称,运行即可

    本文将围绕如何使用shell脚本来实现微服务工程的自动化编译和部署进行详细讲解。 首先,`build_server.sh`脚本是用于编译微服务工程的关键。在`cd /data/project/`这条命令中,开发者将工作目录切换到了项目根目录...

    seata-1.5.1 交互式自动部署Shell脚本

    通过这个交互式自动部署Shell脚本,你可以快速在 CentOS 7.9 环境中部署 Seata,实现分布式事务管理,从而提升你的应用系统的稳定性和可靠性。在实际使用中,根据具体的业务场景和性能需求,你可能还需要对 Seata 的...

Global site tag (gtag.js) - Google Analytics