하루에도 몇 번씩 업데이트를 올리시는 @innei 님의 속도를 따라가려면, 최신 기능을 언제든 바로 써 볼 수 있도록 Mix-Space와 Shiro를 매일 자동으로 업데이트하는 스크립트를 만들어 두는 게 꼭 필요합니다.
업데이트 스크립트
제 Mix-Space 백엔드는 Docker Compose로 배포하고, 프론트엔드는 Shiro의 소스가 공개되지 않은 버전인 Shiroi를 컴파일해서 배포합니다.
백엔드와 프론트엔드를 업데이트하는 스크립트는 다음과 같습니다.
Shell
#!/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로 출력되게 했습니다. 참고하시면 됩니다.
Shell
crontab -e
CRON
10 1 * * * /root/sh/mix-space-shiroi-update.sh >> /root/sh/update.log 2>&1
저는 shell 스크립트를 작성하는 데는 완전 초보입니다. 스크립트가 엉망이긴 하지만, 효과는 확실합니다.
더 좋은 아이디어가 있으시다면 댓글에서 저와 함께 이야기해 주세요.