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

2.4 KiB
Raw Blame History

头程测试环境部署说明

1. 部署范围

测试服务器使用两套 Compose 文件:

  • docker-compose-infra.yml:启动 MySQL、Redis、Nacos,只需在基础设施变化时执行。
  • deploy/docker-compose.yml:启动 11 个头程业务服务,由 Jenkins 增量部署。

当前方案假设 Jenkins 使用测试服务器的 Docker 守护进程。Jenkins 构建节点如果不在测试服务器,DEPLOY=true 不会把服务部署到目标测试服务器,需要改为专用节点或 SSH 远程部署。

2. 测试镜像策略

测试环境不登录、不推送、不拉取远程容器镜像仓库。Jenkins 在测试服务器的 Docker 节点直接构建本机镜像,镜像格式为:

baiyue-firstleg-test/<服务名>:<Git提交SHA>

随后由 deploy/docker-compose.yml 直接启动这些本机镜像。该方案不需要修改 Docker 守护进程安全策略,也不依赖当前 HTTP Gitea Registry。

预发布和生产环境仍会推送远程 Registry,正式启用前必须配置可信 HTTPS 域名和证书。

3. 启动测试基础设施

复制基础设施环境模板:

cp deploy/env/.env.infra-test.example .env

填写真实的 MySQL 和 Redis 测试密码后执行:

docker compose --env-file .env -f docker-compose-infra.yml up -d
docker compose --env-file .env -f docker-compose-infra.yml ps

应启动:

firstleg-test-nacos
firstleg-test-mysql
firstleg-test-redis

同时创建共享网络:

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 创建。共享网络内使用以下服务名:

MySQL:mysql:3306
Redis:redis:6379
Nacos:nacos:8848

5. Jenkins 参数

首次构建全部测试镜像并直接启动:

BUILD_MODE=ALL
ENVIRONMENT=test
DEPLOY=true
SKIP_TESTS=false
IMAGE_REPOSITORY=测试环境会自动忽略此参数

只构建镜像但不启动服务时使用:

BUILD_MODE=SELECT 或 ALL
ENVIRONMENT=test
DEPLOY=false

“生产环境部署确认(仅 production 执行)”在测试流水线日志中会显示为 skipped,这是正常行为,不代表流水线尝试部署生产环境。