自动更新 Mix-Space & Shiro

2024 年 4 月 27 日 星期六(已编辑)
306
AI 生成的摘要
这篇文章上次修改于 2024 年 9 月 17 日 星期二,可能部分内容已经不适用,如有疑问可询问作者。

自动更新 Mix-Space & Shiro

@innei 大佬一天数更的更新速度,为保证随时体验到最新的特性,写一个脚本来每日自动更新 Mix-Space 和 Shiro 非常有必要。

更新脚本

我的 Mix-Space 后端是用 Docker Compose 部署的,而前端是 Shiro 的闭源版本 Shiroi,编译后进行部署。

更新前后端的脚本如下:

#!/usr/bin/zsh

# 定义路径和版本变量
BACKEND_PATH="/root/mix-space/core"
FRONTEND_PATH="/root/mix-space/Shiroi"
NODE_VERSION="/root/.nvm/versions/node/v20.12.2/bin"
DATE=$(date)

# 清除冗余的 Docker 镜像
/usr/bin/docker system prune -af

# 更新后端
echo "开始更新后端..."
cd $BACKEND_PATH
if docker compose pull && docker compose up -d; then
    echo "后端更新完毕。"
else
    echo "后端更新失败。"
    exit 1
fi

echo "---------------------------------------------"

# 更新前端
cd $FRONTEND_PATH
export PATH="$NODE_VERSION:$PATH"

output=$(git pull)
if [[ $output == *"Already up to date."* ]]; then
    echo "前端已经最新啦,不需要更新。"
else
    echo "开始更新前端..."
    npm install -g pm2
    npm install -g pnpm
    echo "pnpm 和 pm2 更新完成。"

    echo "开始安装依赖..."
    if pnpm i; then
        echo "依赖安装完毕。"
    else
        echo "依赖安装失败。"
        exit 1
    fi

    echo "开始编译..."
    if pnpm build; then
        echo "编译结束。"
    else
        echo "编译失败。"
        exit 1
    fi

    echo "正在重启前端..."
    if pm2 reload ecosystem.config.cjs; then
        echo "重启前端完毕"
    else
        echo "前端重启失败。"
        exit 1
    fi
fi

echo "最后更新时间:$DATE"

定时运行

我设置的是每天 1 点 10 分进行自动更新,将日志输出到 /root/sh/update.log 中,您可以参考。

crontab -e
10 1 * * * /root/sh/mix-space-shiroi-update.sh >> /root/sh/update.log 2>&1

我完全是一个写 shell 脚本的新手,虽然写的很烂,但卓有成效。

您如果有更好的主意,欢迎在评论区和我讨论。

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...