Files
baiyue-firstleg/docs/test-environment-deployment.md
T
2026-07-30 22:46:32 +08:00

91 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 头程测试环境部署说明
## 1. 部署范围
测试服务器使用两套 Compose 文件:
- `docker-compose-infra.yml`:启动 MySQL、Redis、Nacos,只需在基础设施变化时执行。
- `deploy/docker-compose.yml`:启动 11 个头程业务服务,由 Jenkins 增量部署。
当前方案假设 Jenkins 使用测试服务器的 Docker 守护进程。Jenkins 构建节点如果不在测试服务器,`DEPLOY=true` 不会把服务部署到目标测试服务器,需要改为专用节点或 SSH 远程部署。
## 2. 测试镜像策略
测试环境不登录、不推送、不拉取远程容器镜像仓库。Jenkins 在测试服务器的 Docker 节点直接构建本机镜像,镜像格式为:
```text
baiyue-firstleg-test/<服务名>:<Git提交SHA>
```
随后由 `deploy/docker-compose.yml` 直接启动这些本机镜像。该方案不需要修改 Docker 守护进程安全策略,也不依赖当前 HTTP Gitea Registry。
预发布和生产环境仍会推送远程 Registry,正式启用前必须配置可信 HTTPS 域名和证书。
## 3. 启动测试基础设施
复制基础设施环境模板:
```bash
cp deploy/env/.env.infra-test.example .env
```
填写真实的 MySQL 和 Redis 测试密码后执行:
```bash
docker compose --env-file .env -f docker-compose-infra.yml up -d
docker compose --env-file .env -f docker-compose-infra.yml ps
```
应启动:
```text
firstleg-test-nacos
firstleg-test-mysql
firstleg-test-redis
```
同时创建共享网络:
```text
firstleg-test-infra-network
```
## 4. Jenkins 测试环境凭据
Jenkins 必须存在:
| ID | 类型 | 用途 |
| --- | --- | --- |
| `gitea-test-token` | Username with password | 从 Gitea 拉取代码 |
| `firstleg-test-env` | Secret file | 测试业务容器的数据库、Redis、Nacos 和安全配置 |
`firstleg-test-env` 根据 `deploy/env/.env.test.example` 创建。共享网络内使用以下服务名:
```text
MySQL:mysql:3306
Redis:redis:6379
Nacos:nacos:8848
```
## 5. Jenkins 参数
首次构建全部测试镜像并直接启动:
```text
BUILD_MODE=ALL
ENVIRONMENT=test
DEPLOY=true
SKIP_TESTS=false
IMAGE_REPOSITORY=测试环境会自动忽略此参数
```
只构建镜像但不启动服务时使用:
```text
BUILD_MODE=SELECT 或 ALL
ENVIRONMENT=test
DEPLOY=false
```
“生产环境部署确认(仅 production 执行)”在测试流水线日志中会显示为 `skipped`,这是正常行为,不代表流水线尝试部署生产环境。