IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    自动更新 Mix-Space & Shiro

    Jayden\'s site发表于 2024-04-27 12:27:58
    love 0
    该渲染由 marked 生成,可能存在排版问题,最佳体验请前往:https://xxu.do/posts/geek/update-Mix-Space-and-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)
    
    # 更新后端
    echo "开始更新后端..."
    cd $BACKEND_PATH
    if docker compose pull && docker compose up -d; then
        echo "后端更新完毕。"
    else
        echo "后端更新失败。"
        exit 1
    fi
    
    # 清除冗余的 Docker 镜像
    /usr/bin/docker system prune -af
    
    echo "---------------------------------------------"
    
    # 更新前端
    cd $FRONTEND_PATH
    export PATH="$NODE_VERSION:$PATH"
    
    output=$(git pull)
    if undefined; 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 脚本的新手,虽然写的很烂,但卓有成效。

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

    看完了?说点什么呢



沪ICP备19023445号-2号
友情链接