mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-12 09:34:05 +08:00
🐛 fix(ci): 修复 Docker 冒烟测试端口冲突
- Web Server 冒烟测试使用随机宿主端口 - 动态解析映射端口并复用健康检查与鉴权验证
This commit is contained in:
17
.github/workflows/docker-images.yml
vendored
17
.github/workflows/docker-images.yml
vendored
@@ -122,10 +122,17 @@ jobs:
|
||||
cookie_jar="$(mktemp)"
|
||||
cid=""
|
||||
trap 'rm -f "$cookie_jar"; if [[ -n "$cid" ]]; then docker rm -f "$cid" >/dev/null 2>&1 || true; fi' EXIT
|
||||
cid="$(docker run -d -p 34116:34116 -e GONAVI_WEB_ADDR=0.0.0.0:34116 -e GONAVI_WEB_PASSWORD=123456 codex-smoke/${{ matrix.image_name }}:local web-server)"
|
||||
cid="$(docker run -d -p 127.0.0.1::34116 -e GONAVI_WEB_ADDR=0.0.0.0:34116 -e GONAVI_WEB_PASSWORD=123456 codex-smoke/${{ matrix.image_name }}:local web-server)"
|
||||
host_port="$(docker port "$cid" 34116/tcp | awk -F: 'NR == 1 { print $NF }')"
|
||||
if [[ ! "$host_port" =~ ^[0-9]+$ ]]; then
|
||||
docker logs "$cid"
|
||||
echo "Failed to resolve the Web Server smoke-test port" >&2
|
||||
exit 1
|
||||
fi
|
||||
base_url="http://127.0.0.1:${host_port}"
|
||||
ready=false
|
||||
for _ in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
|
||||
if curl --fail --silent http://127.0.0.1:34116/__gonavi/healthz >/dev/null; then
|
||||
if curl --fail --silent "${base_url}/__gonavi/healthz" >/dev/null; then
|
||||
ready=true
|
||||
break
|
||||
fi
|
||||
@@ -136,11 +143,11 @@ jobs:
|
||||
echo "Web Server image smoke test failed" >&2
|
||||
exit 1
|
||||
fi
|
||||
status="$(curl --fail --silent --show-error http://127.0.0.1:34116/__gonavi/auth/status)"
|
||||
status="$(curl --fail --silent --show-error "${base_url}/__gonavi/auth/status")"
|
||||
grep -Fq '"configured":true' <<<"$status"
|
||||
login="$(curl --fail --silent --show-error -c "$cookie_jar" -H 'Content-Type: application/json' -d '{"password":"123456","code":""}' http://127.0.0.1:34116/__gonavi/auth/login)"
|
||||
login="$(curl --fail --silent --show-error -c "$cookie_jar" -H 'Content-Type: application/json' -d '{"password":"123456","code":""}' "${base_url}/__gonavi/auth/login")"
|
||||
grep -Fq '"success":true' <<<"$login"
|
||||
app_status="$(curl --silent --show-error -o /dev/null -w '%{http_code}' -b "$cookie_jar" http://127.0.0.1:34116/)"
|
||||
app_status="$(curl --silent --show-error -o /dev/null -w '%{http_code}' -b "$cookie_jar" "${base_url}/")"
|
||||
[[ "$app_status" == "200" ]]
|
||||
|
||||
- name: Smoke test build environment image
|
||||
|
||||
Reference in New Issue
Block a user