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正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo