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:
@@ -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: 手动上传
|
||||
|
||||
|
||||
@@ -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. 验证部署
|
||||
|
||||
@@ -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
@@ -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 个核心文件外,以下文件也引用了这两个关键词,按类别归纳:
|
||||
|
||||
| 类别 | 文件路径 |
|
||||
|------|----------|
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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. 监控错误报告
|
||||
|
||||
@@ -245,8 +245,8 @@ SENTRY_DSN=你的真实SENTRY_DSN
|
||||
### 7.2 重新构建和部署
|
||||
|
||||
```bash
|
||||
# 回到本地开发机
|
||||
./deploy-dist.sh
|
||||
# 回到本地开发机,执行统一发布脚本
|
||||
./scripts/deploy.sh deploy
|
||||
```
|
||||
|
||||
Jenkins Pipeline 会自动:
|
||||
|
||||
Reference in New Issue
Block a user