Linux环境下自动化部署的Shell脚本实践:简化测试人员操作流程

本文主要是介绍Linux环境下自动化部署的Shell脚本实践:简化测试人员操作流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景介绍

随着公司测试环境的最小化,所有软件架构部署在单一的Linux服务器上。由于原有的Docker一键部署平台不再适用,测试人员需要手动执行git clonemvn package命令。为了简化这一过程,我们开发了一个Shell脚本,将所有零散命令封装起来,并通过参数传递执行所有步骤,特别适合初学者使用。

Shell脚本内容

脚本首先定义了工作空间和日志目录,然后提示用户输入必要的参数,包括git地址、分支、war包名称等。以下是脚本的详细内容:

#!/bin/bash
# 定义工作空间和日志目录
workspace="/data1/gitwar"
logdir="/var/log/pack"
logfile="$logdir/build.log"# 用户输入参数
read -p "请依次输入clone路径、git地址、git分支、war包名称、编译路径(git项目名称),空格隔开:" clone_path git_url branch war_name make_path# 创建必要目录
mkdir -p $workspace $logdir# 切换到工作空间
cd $workspace# 检查项目是否已存在
if [ ! -d "$make_path" ]; thenecho "开始git clone下载$make_path"git clone -b $branch $git_url $make_path &>> $logfile
elseecho "删除已存在的$make_path项目"rm -rf $workspace/$make_pathgit clone -b $branch $git_url $make_path &>> $logfile
fi# 检查git clone是否成功
if [ ! -d "$make_path" ]; thenecho "$make_path git clone 失败!"tail -50f $logfileexit 1
elseecho "$make_path项目 git clone 成功!"cd $workspace/$make_pathecho "开始构建$war_name包"starttime=$(date +'%Y-%m-%d %H:%M:%S')mvn clean package -U -P product -Dmaven.test.skip=true &>> $logfileendtime=$(date +'%Y-%m-%d %H:%M:%S')duration=$(($(date --date="$endtime" +%s) - $(date --date="$starttime" +%s)))echo "本次运行时间: $duration 秒"
fi# 检查war包是否构建成功
if [ -f "target/$war_name.war" ]; thenecho "war包构建成功!"tail -n 16 $logfileif [ "\$1" == "deploy" ]; thenecho "打包上预发布"cp target/$war_name.war /data/deploy/fi
elseecho "war包构建失败!"tail -n 50 $logfileexit 1
fi
脚本功能解析
  • 定义工作空间和日志目录:设置脚本的工作目录和日志文件的存储路径。
  • 用户输入参数:通过read命令提示用户输入必要的参数,包括克隆路径、git地址、分支、war包名称和编译路径。
  • 创建目录:使用mkdir -p命令创建必要的目录结构。
  • 执行git clone:根据项目是否存在,执行克隆或删除后克隆的操作。
  • 构建项目:使用Maven命令进行项目的清理和打包,跳过测试,并记录日志。
  • 检查构建结果:检查war包是否成功生成,并根据条件决定是否部署到预发布环境。
结论

通过这个Shell脚本,我们不仅简化了测试人员的部署流程,还显著提高了工作效率。此脚本为初学者提供了一个易于理解和使用的自动化部署解决方案。

这篇关于Linux环境下自动化部署的Shell脚本实践:简化测试人员操作流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043845

相关文章

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字