首页 > 其他分享 >自动化脚本

自动化脚本

时间:2024-07-29 11:08:18浏览次数:14  
标签:脚本 JAR PID echo BASE FILE 自动化 PATH

最近也有负责了一些运维部署的工作,每次发包都比较麻烦,编写了一个自动化脚本
大概思路是从 github 上拉取对应分支代码到本地,本地编译,复制拷贝到目标目录,启动执行
注意最后要赋予文件可执行权限

#!/bin/bash

# Prompt user for environment
echo "Enter environment (dev, test, or prod): "
read ACTIVE

# Check if the input is valid
if [ "$ACTIVE" != "dev" ] && [ "$ACTIVE" != "test" ] && [ "$ACTIVE" != "prod" ]; then
    echo "Invalid environment choice. Exiting."
    exit 1
fi

# Prompt user for Git branch
echo "Enter Git branch name: "
read BRANCH

BASE_PATH="/opt/watchx/$ACTIVE"
JAR_FILE="aaa-0.0.1-SNAPSHOT.jar"       # JAR 文件路径
PID_FILE="pid"                             # PID 文件路径
REPO_PATH="/opt/code_repo/aaa"          # Git 仓库路径

# 如果仓库目录存在,先删除它
if [ -d "$REPO_PATH" ]; then
    rm -rf "$REPO_PATH"
    echo "Deleted existing repository directory: $REPO_PATH"
fi

# 克隆新的仓库到指定目录 需要修改
GIT_URL="https://${GITHUB_PAT}@github.com/path1/code.git"
git clone "$GIT_URL" "$REPO_PATH"


# 移动到 Git 仓库目录
cd "$REPO_PATH" || exit 1

# 检查分支是否存在
if ! git ls-remote --heads origin "$BRANCH" | grep -q "$BRANCH"; then
    echo "Branch '$BRANCH' does not exist. Exiting."
    exit 1
fi

# 拉取指定分支并更新代码
git fetch origin
git checkout "$BRANCH"
git pull origin "$BRANCH"

# 执行 Maven 打包,跳过测试
mvn clean package -Dmaven.test.skip=true

# 备份原来的 JAR 文件
if [ -f "$BASE_PATH/$JAR_FILE" ]; then
    TIMESTAMP=$(date +"%Y%m%d%H%M%S")
    mv "$BASE_PATH/$JAR_FILE" "$BASE_PATH/$JAR_FILE.bak.$TIMESTAMP"
    echo "Backup original JAR file to $BASE_PATH/$JAR_FILE.bak.$TIMESTAMP"
fi

# 拷贝新的 JAR 文件到目标目录
cp "$REPO_PATH/target/$JAR_FILE" "$BASE_PATH/"
echo "Copied new JAR file to $BASE_PATH/$JAR_FILE"

# 移动到目标目录
cd "$BASE_PATH" || exit 1

# 检查 PID 文件是否存在
if [ -f "$PID_FILE" ]; then
    # 读取 PID
    PID=$(cat "$PID_FILE")
    if [ -n "$PID" ] && [ -d "/proc/$PID" ]; then
        echo "Killing existing process with PID: $PID"
        kill "$PID"
        sleep 5 # 等待进程终止
        # 再次检查进程是否已终止
        if [ -d "/proc/$PID" ]; then
            echo "Process $PID did not terminate. Forcing termination."
            kill -9 "$PID"
        fi
    fi
fi

# 启动新的进程
echo "Starting new Java process"
nohup java -Xms4g -Xmx4g -Dspring.profiles.active="$ACTIVE" -jar "$JAR_FILE" > cccc.log 2>&1 &

# 获取新进程的 PID
NEW_PID=$!
echo "New process PID: $NEW_PID"

# 将新进程的 PID 写入 PID 文件
echo "$NEW_PID" > "$PID_FILE"
echo "PID saved to $PID_FILE"

tail -1000f cccc.log

这是一段防爬代码块,我不介意文章被爬取,但请注明出处
console.log("作者主页:https://www.cnblogs.com/Go-Solo");
console.log("原文地址:https://www.cnblogs.com/Go-Solo/p/18329650");

标签:脚本,JAR,PID,echo,BASE,FILE,自动化,PATH
From: https://www.cnblogs.com/Go-Solo/p/18329650

相关文章

  • 界面自动化测试录制工具,让python selenium自动化测试脚本开发更加方便
    自动化测试中,QTP和seleniumIDE都支持浏览器录制与回放功能,简单的来说就像一个记录操作步骤的机器人,可以按照记录的步骤重新执行一遍,这就是脚本录制。个人觉得传统录制工具有些弊端,加上要定制支持我自己的自动化框架(python单机版自动化测试框架源代码),所以自己用javascript写了一个......
  • Lua脚本解决Redis 分布式锁
    Redis分布式锁由于判断锁和释放锁是两个步骤,在判断一致后如果线程阻塞导致锁超时释放。之后阻塞结束,当前线程继续执行释放了其它线程的锁。锁设计失败解决方法:通过lua封装比较和释放锁两个步骤:要么同时成功,要么同时失败我的疑问?为什么不对判断和释放锁两个步骤再加锁@Over......
  • 可以在没有 SAPGui 脚本记录器的情况下捕获 SAP GUI 交互吗?
    是否可以在不依赖VBS记录器的情况下捕获与SAPGUI元素的交互,是否有专门为此特定目的而设计的集成SAPGUI组件?观察:不是记录器屏幕importwin32com.client#ConectandoaoSAPGUISAPGuiAuto=win32com.client.GetObject("SAPGUI")ifnottype(SAPGuiAuto)==win3......
  • 最新斗音养号涨粉留痕脚本,解放双手自动引流涨粉
    1.引言在抖音等短视频社交平台上,用户关注度是衡量账号影响力的关键指标之一。抖音留痕技术作为一种新兴的社交策略,旨在通过自动化手段增加用户间的互动,以提高关注度。2.抖音留痕技术概述抖音留痕技术主要通过以下步骤实现:访问评论列表:选择抖音平台上的特定作品,进入其评......
  • 最新斗音养号涨粉留痕脚本,解放双手自动引流涨粉
    1.引言在抖音等短视频社交平台上,用户关注度是衡量账号影响力的关键指标之一。抖音留痕技术作为一种新兴的社交策略,旨在通过自动化手段增加用户间的互动,以提高关注度。2.抖音留痕技术概述抖音留痕技术主要通过以下步骤实现:访问评论列表:选择抖音平台上的特定作品,进入其评......
  • 最新斗音养号涨粉留痕脚本,解放双手自动引流涨粉
    1.引言在抖音等短视频社交平台上,用户关注度是衡量账号影响力的关键指标之一。抖音留痕技术作为一种新兴的社交策略,旨在通过自动化手段增加用户间的互动,以提高关注度。2.抖音留痕技术概述抖音留痕技术主要通过以下步骤实现:访问评论列表:选择抖音平台上的特定作品,进入其评......
  • 最新斗音养号涨粉留痕脚本,解放双手自动引流涨粉
    1.引言在抖音等短视频社交平台上,用户关注度是衡量账号影响力的关键指标之一。抖音留痕技术作为一种新兴的社交策略,旨在通过自动化手段增加用户间的互动,以提高关注度。2.抖音留痕技术概述抖音留痕技术主要通过以下步骤实现:访问评论列表:选择抖音平台上的特定作品,进入其评......
  • Kubernetes 集群中 Pod 使用镜像的批量导出脚本
    目录动机脚本使用实例获取指定命名空间获取所有命名空间生成csv文件动机最近,由于DockerHub镜像的失效,在重新启动Pod时,拉取镜像失败,导致Pod无法正常启动。因此,我需要批量检查集群中有哪些Pod使用了官方的DockerHub镜像,并将这些镜像保存到本地的Harbor仓库中。为此,......
  • Selenium4.0自动化测试从入门到实践介绍
    前言:本专栏是以Selenium4.0 +Python3为基础的UI自动化测试,小编结合自己多年的工作实践经验将工作过程中对Selenium的思考、实践倾囊相授:主要包括Selenium基础用法、高级用法、测试环境切换、图表自动化、PO模式(页面对象)、关键字模式、持续集成、测试报告生成、疑难杂症等,通......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-56- 多文件上传 - 下篇
    1.简介前边的两篇文章中,宏哥分别对input控件上传文件和非input控件上传文件进行了从理论到实践地讲解和介绍,但是后来又有人提出疑问,前边讲解和介绍的都是上传一个文件,如果上传多个文件,Playwright是如何实现的呢?宏哥看了一下官方的API也有上传多个文件的API,那么今天就来讲解和介绍......