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

相关文章

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.