82 lines
2.3 KiB
Markdown
82 lines
2.3 KiB
Markdown
# 环境拆分与流水线规则
|
|
|
|
`role-admin` 是静态前端项目。测试环境和生产环境通过独立构建模式、独立部署目录和独立 Nginx `/api` 代理拆分。
|
|
|
|
## 环境约定
|
|
|
|
| 环境 | 触发方式 | 代码依据 | 构建命令 | 默认部署目录 |
|
|
| --- | --- | --- | --- | --- |
|
|
| 测试环境 | `develop` 合并后自动触发 Jenkins | `develop` 最新提交 | `pnpm build:test` | `/srv/www/test/role-admin/current` |
|
|
| 生产环境 | Jenkins 手动触发 | Gitea 项目 Tag | `pnpm build:prod` | `/srv/www/production/role-admin/current` |
|
|
|
|
生产环境禁止因代码合并自动部署。生产部署时必须在 Jenkins 参数中选择 `DEPLOY_ENV=production` 并填写已存在的 `RELEASE_TAG`。
|
|
|
|
## Jenkins 参数
|
|
|
|
| 参数 | 说明 |
|
|
| --- | --- |
|
|
| `DEPLOY_ENV` | `test` 或 `production`。默认 `test`。 |
|
|
| `RELEASE_TAG` | 生产环境必填,必须是 Gitea 仓库中已存在的 Tag。 |
|
|
| `SKIP_DEPLOY` | 为 `true` 时只执行安装、检查、构建,不部署。 |
|
|
|
|
`Jenkinsfile` 会强制校验:
|
|
|
|
- 测试环境只在 `develop` 分支自动部署。
|
|
- 生产环境必须手动触发。
|
|
- 生产环境必须填写 `RELEASE_TAG`。
|
|
- 生产环境构建会先 checkout 到该 Tag 对应的提交,再部署。
|
|
|
|
## Nginx 拆分要求
|
|
|
|
静态资源部署目录默认如下:
|
|
|
|
```text
|
|
/srv/www/test/role-admin/current
|
|
/srv/www/production/role-admin/current
|
|
```
|
|
|
|
两套站点的 `/api` 必须分别代理到对应后端:
|
|
|
|
```text
|
|
测试 role-admin /api -> 测试 access-manage
|
|
生产 role-admin /api -> 生产 access-manage
|
|
```
|
|
|
|
不要让测试前端代理到生产后端,也不要让生产前端代理到测试后端。
|
|
|
|
## 生产发布流程
|
|
|
|
1. 在需要发布的提交上创建 Tag。
|
|
2. 推送 Tag 到 Gitea。
|
|
3. Jenkins 手动 Build With Parameters。
|
|
4. 选择 `DEPLOY_ENV=production`。
|
|
5. 填写 `RELEASE_TAG`。
|
|
6. 执行构建部署。
|
|
|
|
示例:
|
|
|
|
```bash
|
|
git tag -a v2026.06.05-1 -m "role-admin production release 2026-06-05"
|
|
git push origin v2026.06.05-1
|
|
```
|
|
|
|
## 部署脚本
|
|
|
|
`deploy/jenkins/deploy-static.sh` 会把 `dist/` 发布到:
|
|
|
|
```text
|
|
${DEPLOY_BASE_DIR}/${DEPLOY_ENV}/role-admin/releases/<build>-<commit>
|
|
```
|
|
|
|
并更新:
|
|
|
|
```text
|
|
${DEPLOY_BASE_DIR}/${DEPLOY_ENV}/role-admin/current
|
|
```
|
|
|
|
如果 Jenkins 不在目标服务器上运行,可以配置:
|
|
|
|
```text
|
|
DEPLOY_REMOTE=user@server
|
|
```
|