From 1c3b487caa1908b3b0fb20cec7630e8125e3ad8a Mon Sep 17 00:00:00 2001 From: mac Date: Sat, 30 May 2026 00:20:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=A0=87=E5=87=86?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E8=84=9A=E6=9C=AC=20scripts/deploy.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/deploy.sh | 84 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100755 scripts/deploy.sh diff --git a/scripts/deploy.sh b/scripts/deploy.sh new file mode 100755 index 0000000..2c1c24f --- /dev/null +++ b/scripts/deploy.sh @@ -0,0 +1,84 @@ +#!/bin/bash +# OPC Manager 标准部署脚本 +# 用法: ./scripts/deploy.sh [message] +# 示例: ./scripts/deploy.sh v0.1.1 "修复首页样式" + +set -euo pipefail + +VERSION="${1:-}" +MESSAGE="${2:-Release $VERSION}" + +if [ -z "$VERSION" ]; then + echo "用法: ./scripts/deploy.sh [message]" + echo "示例: ./scripts/deploy.sh v0.1.1" + exit 1 +fi + +TAG="opc-manager-$VERSION" +REMOTE_HOST="${OPC_REMOTE_HOST:-business}" +REMOTE_PATH="${OPC_REMOTE_PATH:-/opt/opc-manager}" +SERVICE_NAME="${OPC_SERVICE_NAME:-opc-manager.service}" +HEALTH_URL="${OPC_HEALTH_URL:-https://opc.yxcowork.vip/api/health}" +HOME_URL="${OPC_HOME_URL:-https://opc.yxcowork.vip}" + +echo "=== OPC Manager 部署 $VERSION ===" + +# 1. 确保在项目根目录 +cd "$(dirname "$0")/.." + +# 2. 更新 VERSION_LOG.md +echo "" >> VERSION_LOG.md +echo "## $TAG - $(date +%F)" >> VERSION_LOG.md +echo "" >> VERSION_LOG.md +echo "- $MESSAGE" >> VERSION_LOG.md +echo "" >> VERSION_LOG.md +echo "VERSION_LOG.md 已更新" + +# 3. Git commit +git add -A +if git diff --cached --quiet; then + echo "没有需要提交的变更,跳过 commit" +else + git commit -m "release: $TAG - $MESSAGE" + echo "已提交: release: $TAG" +fi + +# 4. Git tag(轻量 tag,只打在 OPC 独立仓库) +if git rev-parse "$TAG" >/dev/null 2>&1; then + echo "Tag $TAG 已存在,跳过" +else + git tag "$TAG" + echo "已打 tag: $TAG" +fi + +# 5. Git push +echo "推送代码和 tag..." +git push origin main +git push origin "$TAG" + +# 6. 服务器同步 +echo "同步到服务器 $REMOTE_HOST..." +ssh "$REMOTE_HOST" "cd $REMOTE_PATH && git fetch origin && git reset --hard origin/main" + +# 7. 重启服务 +echo "重启 $SERVICE_NAME..." +ssh "$REMOTE_HOST" "sudo systemctl restart $SERVICE_NAME && sleep 2" +ssh "$REMOTE_HOST" "systemctl status $SERVICE_NAME --no-pager" | head -6 + +# 8. 健康检查 +echo "" +echo "健康检查..." +sleep 2 +HEALTH_RESULT=$(curl -s "$HEALTH_URL") +echo "$HEALTH_RESULT" + +HOME_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$HOME_URL") +echo "首页 HTTP 状态: $HOME_CODE" + +if [ "$HOME_CODE" = "200" ]; then + echo "" + echo "=== 部署 $VERSION 完成 ===" +else + echo "" + echo "!!! 警告:首页返回 $HOME_CODE,请检查 !!!" +fi