refactor(deploy): 统一发布脚本为单一入口 scripts/deploy.sh

- 新增 scripts/deploy.sh,支持 build/deploy/rollback/status 子命令
- 删除 deploy.sh、deploy-dist.sh、scripts/deploy-static.sh、scripts/deployment/deploy-production.sh
- Jenkinsfile 部署/回滚改为调用统一脚本,移除内联部署逻辑与 STATIC_DIR
- 同步 README、DEPLOYMENT、docs、CLAUDE.md、setup-cicd 与 package.json 脚本
This commit is contained in:
2026-08-17 18:40:51 +08:00
parent 315d664b9c
commit af57504e8e
19 changed files with 511 additions and 657 deletions
+1 -4
View File
@@ -134,10 +134,7 @@ export COS_REGION="ap-chengdu"
```
3. 运行部署脚本:
```bash
chmod +x scripts/deploy-cdn.sh
./scripts/deploy-cdn.sh
```
> ⚠️ `scripts/deploy-cdn.sh` 尚未实现;当前统一发布脚本 `scripts/deploy.sh` 只负责构建与服务器静态发布,不包含 COS 上传。COS 上传请先使用下方手动方式,或后续按 `coscmd` 命令封装独立脚本。
#### 方法2: 手动上传
+2 -2
View File
@@ -49,8 +49,8 @@ cp .env.production .env.local
### 2. 运行部署脚本
```bash
chmod +x scripts/deploy-production.sh
./scripts/deploy-production.sh
# 统一发布脚本(构建 + 发布)
./scripts/deploy.sh deploy
```
### 3. 验证部署
+2 -2
View File
@@ -493,8 +493,8 @@ chmod +x scripts/setup-lightweight-monitoring.sh
```bash
# 运行生产部署脚本
chmod +x scripts/deploy-production.sh
./scripts/deploy-production.sh
# 统一发布脚本(构建 + 发布)
./scripts/deploy.sh deploy
```
这个脚本会:
+14 -17
View File
@@ -85,35 +85,32 @@
- `ssl/` -> `/etc/nginx/ssl`(只读)
- `logs/` -> `/var/log/nginx`
- `../certbot` -> `/var/www/certbot`ACME 验证)
- `../novalon-static` -> `/var/www/novalon`(只读,静态文件)
- `../novalon-website/dist` -> `/var/www/novalon`(只读,Novalon 主站静态文件)
- `../novalon-static` -> `/var/www/novavis-landing`(只读,Novavis 落地页)
- 使用外部网络 `novalon-network`
---
### 三、部署脚本(2 个)
### 三、部署脚本(1统一入口
#### 9. [deploy.sh](computer:///sessions/69e889f08f8c93c2514713f1/workspace/deploy.sh)
**用途**: 完整部署脚本 -- SSH 到远程服务器执行 Docker 构建+部署
#### 9. [scripts/deploy.sh](../scripts/deploy.sh)
**用途**: 统一发布脚本(唯一发布入口),负责构建、发布、回滚与状态查看
**关键内容**:
- 默认服务器 `139.155.109.62`root 用户),部署路径 `/home/novalon/docker-app/novalon-website`
- 容器名 `novalon-website`Nginx 容器名 `novalon-nginx`
- 流程: 部署前检查 -> SSH 验证 -> SCP 上传文件 -> 服务器端 SSL 配置 -> `docker-compose build --no-cache` -> `docker-compose up -d` -> 健康检查 -> SSL 自动续期 cron 配置
- 支持命令行参数: `-i`(IP)、`-u`(用户)、`-p`(项目名)、`-c`(容器名)、`-v`(版本号)
#### 10. [deploy-dist.sh](computer:///sessions/69e889f08f8c93c2514713f1/workspace/deploy-dist.sh)
**用途**: 轻量部署脚本 -- 仅上传预构建的 `dist/` 目录到服务器。
**关键内容**:
- 同一服务器 `139.155.109.62`,部署到 `/home/novalon/docker-app/novalon-website/dist`
- 流程: 检查 dist 目录 -> SSH 验证 -> 备份旧版本 -> rsync 上传 -> 设置文件权限 -> 验证 -> 清理旧备份(保留最近 3 个)
- 适用于已有 Nginx 容器运行、仅需更新静态文件的场景
- 默认服务器 `139.155.109.62`root 用户),远程目标目录 `/home/novalon/docker-app/novalon-website/dist`(生产 Nginx 实际挂载目录)
- 命令:
- `build`:构建静态产物
- `deploy`:构建 + 远程发布(备份旧版本 -> rsync 上传 -> 设置权限 -> 重载 Nginx -> 验证页面)
- `rollback`:回滚到最近一次远程备份
- `status`:查看生产环境发布状态
- 支持 `--skip-build``--auto-rollback``--dry-run` 及服务器/域名/备份保留数等参数
- 支持环境变量覆盖:`SERVER_IP``SERVER_USER``DEPLOY_ROOT``PROJECT_NAME``NGINX_CONTAINER``DOMAIN``BACKUP_RETENTION_COUNT``DIST_DIR`
---
### 四、引用 "novalon-nginx" / "novalon-website" 的其他文件(29 个)
除上述 10 个核心文件外,以下文件也引用了这两个关键词,按类别归纳:
除上述 9 个核心文件外,以下文件也引用了这两个关键词,按类别归纳:
| 类别 | 文件路径 |
|------|----------|
+7 -7
View File
@@ -18,16 +18,16 @@
│ novalon-website │
│ - 构建命令: npm run build:clean │
│ - 输出目录: dist/ │
│ - 部署命令: ./deploy-dist.sh
│ - 部署命令: ./scripts/deploy.sh deploy
└──────────────────────┬──────────────────────────────┘
│ rsync + SSH (root@139.155.109.62)
┌─────────────────────────────────────────────────────┐
│ 生产服务器 (139.155.109.62) │
│ └── /home/novalon/docker-app/ │
│ ├── novalon-static/ ← 当前版本 │
│ ├── novalon-static_backup_* ← 自动备份
│ └── docker-compose.yml
│ ├── novalon-website/dist/ ← 当前版本 │
│ ├── novalon-website/dist_backup_* ← 自动备份 │
│ └── novalon-nginx/
│ └── novalon-nginx-secure ← Nginx 容器 │
└──────────────────────┬──────────────────────────────┘
│ 反向代理
@@ -226,7 +226,7 @@ else
fi
# 4.3 部署到生产环境
./deploy-dist.sh
./scripts/deploy.sh deploy --skip-build
# 脚本会自动执行:
# 1. 检查 dist 目录
@@ -551,7 +551,7 @@ git reset --hard HEAD
║ 2. git checkout <stable-commit-hash> ║
║ # 切换到稳定版本 ║
║ ║
║ 3. ./deploy-dist.sh
║ 3. ./scripts/deploy.sh deploy --skip-build
║ # 重新构建并部署 ║
║ ║
║ 验证命令: ║
@@ -598,7 +598,7 @@ git reset --hard HEAD
## 📚 **相关文档链接**
- **部署脚本**: [deploy-dist.sh](./deploy-dist.sh)
- **部署脚本**: [scripts/deploy.sh](../../scripts/deploy.sh)
- **Jenkins Pipeline**: [Jenkinsfile](./Jenkinsfile)
- **Sentry 监控指南**: [docs/sentry-setup-guide.md](./docs/sentry-setup-guide.md)
- **技术栈降级指南**: [scripts/downgrade-stack.sh](./scripts/downgrade-stack.sh)
+2 -2
View File
@@ -136,8 +136,8 @@ NEXT_PUBLIC_GA_MEASUREMENT_ID=G-LGTLCR15KM
```bash
npm run build:clean
# 然后执行部署脚本
./deploy-dist.sh
# 然后执行统一发布脚本(跳过重复构建)
./scripts/deploy.sh deploy --skip-build
```
### 3. 监控错误报告
+2 -2
View File
@@ -245,8 +245,8 @@ SENTRY_DSN=你的真实SENTRY_DSN
### 7.2 重新构建和部署
```bash
# 回到本地开发机
./deploy-dist.sh
# 回到本地开发机,执行统一发布脚本
./scripts/deploy.sh deploy
```
Jenkins Pipeline 会自动: