乌班图.NETCORE发布文件自动发布

#!/bin/bash
set -e

#######################
# 配置部分
#######################
SRATR_NAME="BackApi"
APP_NAME="backapi"
DEPLOY_DIR="/data/cache/$APP_NAME"
CONFIG_DIR="/data/appsettings/back"
ZIP_FILE="/data/publishfile/BackAPI.zip"
LOG_FILE="/var/log/deploy_${APP_NAME}.log"
LOCK_FILE="/tmp/deploy_${APP_NAME}.lock"
#######################
# 并发保护
#######################
if [ -f "$LOCK_FILE" ]; then
    echo "部署已在进行中,请稍后再试" | tee -a $LOG_FILE
    exit 1
fi
touch $LOCK_FILE

# 确保删除锁文件
trap 'rm -f "$LOCK_FILE"' EXIT

#######################
# 部署开始
#######################
datetime=$(date +"%Y%m%d%H%M%S")
TARGET_DIR=$DEPLOY_DIR/$datetime

echo "[$(date)] ===== 开始部署 $APP_NAME =====" | tee -a $LOG_FILE

# 1. 停止服务
echo "==> 停止服务 $SRATR_NAME" | tee -a $LOG_FILE
supervisorctl stop $SRATR_NAME

# 2. 创建时间戳目录
mkdir -p $TARGET_DIR
cd $TARGET_DIR

# 3. 拷贝并解压
echo "==> 解压部署包到 $TARGET_DIR" | tee -a $LOG_FILE
cp $ZIP_FILE .
unzip -q BackAPI.zip
rm -f BackAPI.zip

# 4. 确保 publish 目录
if [ ! -d "$TARGET_DIR/publish" ]; then
    echo "==> 创建 publish 目录" | tee -a $LOG_FILE
    mkdir -p publish
    # 移动所有文件到 publish,包含隐藏文件
    #shopt -s dotglob
    for f in *; do
      [ "$f" != "publish" ] && mv "$f" publish/
    done
    #shopt -u dotglob
fi

# 5. 设置权限
chown -R www:www $TARGET_DIR

# 6. 备份旧版本软链接
if [ -L "$WWW_DIR" ]; then
    OLD_LINK=$(readlink -f $WWW_DIR)
    echo "==> 备份旧版本软链接: $OLD_LINK" | tee -a $LOG_FILE
fi

# 7. 更新软连接
echo "==> 更新软连接 $WWW_DIR -> $TARGET_DIR/publish" | tee -a $LOG_FILE
ln -sfn $TARGET_DIR/publish $TARGET_DIR/publish

# 8. 拷贝配置文件
echo "==> 拷贝配置文件到新版本" | tee -a $LOG_FILE
cp -f $CONFIG_DIR/appsettings.json $TARGET_DIR/publish

# 9. 启动服务
echo "==> 启动服务 $SRATR_NAME" | tee -a $LOG_FILE
if ! supervisorctl start $SRATR_NAME; then
    echo "!!! 启动服务失败,回滚到旧版本" | tee -a $LOG_FILE
    if [ -n "$OLD_LINK" ]; then
        ln -sfn $OLD_LINK $WWW_DIR
        supervisorctl start $SRATR_NAME
        echo "回滚完成" | tee -a $LOG_FILE
    fi
    exit 1
fi

echo "[$(date)] 部署完成,版本号:$datetime" | tee -a $LOG_FILE
echo "====================================" | tee -a $LOG_FILE

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值