暂存提交
This commit is contained in:
@@ -1,8 +1,7 @@
|
|||||||
ARG BASE_IMAGE=docker.m.daocloud.io/library/eclipse-temurin:17-jre-alpine
|
ARG BASE_IMAGE=docker.m.daocloud.io/library/eclipse-temurin:17-jre-alpine
|
||||||
FROM ${BASE_IMAGE}
|
FROM ${BASE_IMAGE}
|
||||||
|
|
||||||
RUN apk add --no-cache curl \
|
RUN addgroup -S app \
|
||||||
&& addgroup -S app \
|
|
||||||
&& adduser -S -G app -u 10001 app
|
&& adduser -S -G app -u 10001 app
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
@@ -18,6 +17,6 @@ ENV JAVA_OPTS="-XX:MaxRAMPercentage=75.0 -XX:+ExitOnOutOfMemoryError -Dfile.enco
|
|||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
|
||||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
|
||||||
CMD curl -fsS "http://127.0.0.1:${SERVER_PORT}/actuator/health" || exit 1
|
CMD busybox wget -q -O /dev/null "http://127.0.0.1:${SERVER_PORT}/actuator/health" || exit 1
|
||||||
|
|
||||||
ENTRYPOINT ["sh", "-c", "exec java $JAVA_OPTS -jar /app/app.jar"]
|
ENTRYPOINT ["sh", "-c", "exec java $JAVA_OPTS -jar /app/app.jar"]
|
||||||
|
|||||||
@@ -0,0 +1,90 @@
|
|||||||
|
# 头程测试环境部署说明
|
||||||
|
|
||||||
|
## 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`,这是正常行为,不代表流水线尝试部署生产环境。
|
||||||
Reference in New Issue
Block a user