Linux环境下自动化部署的Shell脚本实践:简化测试人员操作流程
随着公司测试环境的最小化,所有软件架构部署在单一的Linux服务器上。由于原有的Docker一键部署平台不再适用,测试人员需要手动执行git clone和命令。为了简化这一过程,我们开发了一个Shell脚本,将所有零散命令封装起来,并通过参数传递执行所有步骤,特别适合初学者使用。
·
背景介绍
随着公司测试环境的最小化,所有软件架构部署在单一的Linux服务器上。由于原有的Docker一键部署平台不再适用,测试人员需要手动执行git clone
和mvn 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" ]; then
echo "开始git clone下载$make_path"
git clone -b $branch $git_url $make_path &>> $logfile
else
echo "删除已存在的$make_path项目"
rm -rf $workspace/$make_path
git clone -b $branch $git_url $make_path &>> $logfile
fi
# 检查git clone是否成功
if [ ! -d "$make_path" ]; then
echo "$make_path git clone 失败!"
tail -50f $logfile
exit 1
else
echo "$make_path项目 git clone 成功!"
cd $workspace/$make_path
echo "开始构建$war_name包"
starttime=$(date +'%Y-%m-%d %H:%M:%S')
mvn clean package -U -P product -Dmaven.test.skip=true &>> $logfile
endtime=$(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" ]; then
echo "war包构建成功!"
tail -n 16 $logfile
if [ "\$1" == "deploy" ]; then
echo "打包上预发布"
cp target/$war_name.war /data/deploy/
fi
else
echo "war包构建失败!"
tail -n 50 $logfile
exit 1
fi
脚本功能解析
- 定义工作空间和日志目录:设置脚本的工作目录和日志文件的存储路径。
- 用户输入参数:通过
read
命令提示用户输入必要的参数,包括克隆路径、git地址、分支、war包名称和编译路径。 - 创建目录:使用
mkdir -p
命令创建必要的目录结构。 - 执行git clone:根据项目是否存在,执行克隆或删除后克隆的操作。
- 构建项目:使用Maven命令进行项目的清理和打包,跳过测试,并记录日志。
- 检查构建结果:检查war包是否成功生成,并根据条件决定是否部署到预发布环境。
结论
通过这个Shell脚本,我们不仅简化了测试人员的部署流程,还显著提高了工作效率。此脚本为初学者提供了一个易于理解和使用的自动化部署解决方案。
更多推荐
已为社区贡献1条内容
所有评论(0)