update
This commit is contained in:
parent
8ce26cf89f
commit
5c0bbd4b1a
29
README.md
29
README.md
@ -5,23 +5,44 @@
|
||||
## 可直接复制使用的模板
|
||||
|
||||
- **构建镜像工作流模板**:`build-images.yml`
|
||||
- 作用:用于在 `<分支>` 分支上构建 Docker 镜像。
|
||||
- 作用:用于在 `<自定义分支>` 分支上构建 Docker 镜像。
|
||||
- 触发条件:
|
||||
- 推送到 `<分支>` 分支,并且改动包含 `Dockerfile*`、`requirements.txt` 或 `.gitea/workflows/build-images.yml`
|
||||
- 推送到 `<自定义分支>` 分支,并且改动包含 `Dockerfile*`、`requirements.txt` 或 `.gitea/workflows/build-images.yml`
|
||||
- 手动触发 (`workflow_dispatch`)
|
||||
- 使用方式:
|
||||
1. 复制该文件到目标项目的 `.gitea/workflows/build-images.yml`(或对应 CI 目录)。
|
||||
2. 根据项目实际情况修改其中的 `<image_name>`、`<version>` 以及 `Dockerfile` 路径等参数。
|
||||
|
||||
- **Docker 部署工作流模板**:`deploy-docker.yml`
|
||||
- 作用:在 `<分支>` 分支上,通过 `docker compose` 部署服务。
|
||||
- 作用:在 `<自定义分支>` 分支上,通过 `docker compose` 部署服务。
|
||||
- 触发条件:
|
||||
- 推送到 `<分支>` 分支
|
||||
- 推送到 `<自定义分支>` 分支
|
||||
- 手动触发 (`workflow_dispatch`)
|
||||
- 使用方式:
|
||||
1. 复制该文件到目标项目的 `.gitea/workflows/deploy-docker.yml`(或对应 CI 目录)。
|
||||
2. 确认项目根目录存在 `docker-compose.yml`,并根据需要调整步骤中的命令。
|
||||
|
||||
- **API 健康检查工作流模板**:`e2e-tests.yml`
|
||||
- 作用:对后端各 API 服务的 `/health` 接口进行健康检查,可支持**多个 IP / 域名**(多个环境)。不再检查前端页面。
|
||||
- 触发条件:
|
||||
- 推送到 `<自定义分支>`(或你自定义的)分支
|
||||
- 手动触发 (`workflow_dispatch`)
|
||||
- 使用方式:
|
||||
1. 复制该文件到目标项目的 `.gitea/workflows/e2e-tests.yml`(或对应 CI 目录)。
|
||||
2. 根据实际环境修改 `jobs.e2e.strategy.matrix.target` 中的配置即可复用,例如:
|
||||
```yaml
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
target:
|
||||
- name: env-local
|
||||
base_url: http://127.0.0.1
|
||||
- name: env-remote
|
||||
base_url: http://10.0.0.1
|
||||
```
|
||||
3. 如果你的服务端口与模板中的默认值不同,可在 `services` 变量里调整 `name:port` 列表,例如:`auth:5710`、`project:5711` 等。
|
||||
4. 如需调整重试次数、间隔时间或检查路径,可在对应 `curl` 循环处按需修改脚本逻辑。
|
||||
|
||||
## 其他文件/目录
|
||||
|
||||
`actions/`、`docs/` 等其他文件或目录仅作内部使用或扩展示例,对实际在项目中使用上述两个模板不是必需的,你可以忽略它们。
|
||||
|
||||
90
e2e-tests.yml
Normal file
90
e2e-tests.yml
Normal file
@ -0,0 +1,90 @@
|
||||
name: End-to-End Tests
|
||||
|
||||
on:
|
||||
# 默认触发条件,可以在复制到具体仓库后按需调整
|
||||
push:
|
||||
branches:
|
||||
- offline
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
e2e:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
# 多个 IP / 域名 组合时,互不影响
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# 在这里配置要检查的环境,只需要改 base_url 即可复用
|
||||
target:
|
||||
- name: offline-145 # 仅用于日志标识
|
||||
base_url: http://127.0.0.1
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: offline
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Check API services (${{ matrix.target.name }})
|
||||
env:
|
||||
BASE_URL: ${{ matrix.target.base_url }}
|
||||
run: |
|
||||
echo "当前检查环境:${BASE_URL}"
|
||||
|
||||
echo "====== 开始检查各 API 服务 /health ======"
|
||||
|
||||
services="\
|
||||
service-name:5710 \
|
||||
service-name:5711 \
|
||||
"
|
||||
|
||||
failed_services=""
|
||||
api_failed=0
|
||||
|
||||
for item in $services; do
|
||||
name="${item%%:*}"
|
||||
port="${item##*:}"
|
||||
|
||||
echo ""
|
||||
echo "------ 检查服务 ${name} (端口 ${port}) /health ------"
|
||||
|
||||
success=0
|
||||
for i in {1..10}; do
|
||||
if curl -fsS "${BASE_URL}:${port}/health" > /dev/null; then
|
||||
success=1
|
||||
break
|
||||
fi
|
||||
echo "第 ${i} 次重试,等待 5 秒..."
|
||||
sleep 5
|
||||
done
|
||||
|
||||
if [ "${success}" -ne 1 ]; then
|
||||
echo "✗ 服务 ${name} /health 检查失败"
|
||||
failed_services="${failed_services} ${name}:${port}"
|
||||
else
|
||||
echo "✓ 服务 ${name} /health 正常"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -n "${failed_services}" ]; then
|
||||
echo ""
|
||||
echo "✗ 以下服务健康检查失败:"
|
||||
for s in ${failed_services}; do
|
||||
echo " - ${s}"
|
||||
done
|
||||
api_failed=1
|
||||
else
|
||||
echo ""
|
||||
echo "====== 所有 API 服务健康检查通过 ======"
|
||||
fi
|
||||
|
||||
if [ "${api_failed}" -ne 0 ]; then
|
||||
echo ""
|
||||
echo "✗ API /health 检查存在失败,详见上方日志"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "✓ 所有 API /health 检查通过"
|
||||
Loading…
Reference in New Issue
Block a user