HH-636: make smoke provider CI-safe
Docker image / Test (pull_request) Failing after 54s
Docker image / Build and publish (pull_request) Skipped

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
2026-08-25 00:19:02 +08:00
co-authored by multica-agent
parent bf96f448cc
commit a6eca3dd5f
+2 -16
View File
@@ -8,7 +8,6 @@ unconfigured="mohomo-docker-unconfigured-${suffix}"
provider="mohomo-provider-smoke-${suffix}"
network="mohomo-network-smoke-${suffix}"
volume="mohomo-volume-smoke-${suffix}"
provider_dir=""
cookie=""
secret="container-smoke-secret"
admin_password="container-smoke-admin-password"
@@ -22,7 +21,6 @@ cleanup() {
docker container rm --force "$container" "$unconfigured" "$provider" >/dev/null 2>&1 || true
docker volume rm "$volume" >/dev/null 2>&1 || true
docker network rm "$network" >/dev/null 2>&1 || true
[ -z "$provider_dir" ] || rm -rf "$provider_dir"
[ -z "$cookie" ] || rm -f "$cookie"
}
trap cleanup EXIT INT TERM
@@ -101,27 +99,15 @@ docker run --rm --network none --entrypoint /bin/sh "$image" -c '
/usr/local/lib/ssclash/clash -t -d "$runtime" -f "$runtime/config.yaml"
' >/dev/null
provider_dir=$(mktemp -d)
printf '%s\n' \
'proxies:' \
' - name: smoke-node' \
' type: socks5' \
' server: 127.0.0.1' \
' port: 9' \
> "$provider_dir/provider.yaml"
chmod 0755 "$provider_dir"
chmod 0644 "$provider_dir/provider.yaml"
docker network create "$network" >/dev/null
docker volume create "$volume" >/dev/null
docker run --detach --rm \
--name "$provider" \
--network "$network" \
--volume "$provider_dir:/srv:ro" \
--entrypoint /bin/sh \
"$image" -c 'while :; do { printf "HTTP/1.1 200 OK\r\nContent-Type: text/yaml\r\nConnection: close\r\n\r\n"; cat /srv/provider.yaml; } | nc -l -p 8080; done' >/dev/null
"$image" -c 'while :; do printf "HTTP/1.1 200 OK\r\nContent-Type: text/yaml\r\nConnection: close\r\n\r\nproxies:\n - name: smoke-node\n type: socks5\n server: 127.0.0.1\n port: 9\n" | nc -l -p 8080; done' >/dev/null
attempt=0
until docker exec "$provider" wget -qO- http://127.0.0.1:8080/provider.yaml >/dev/null; do
until docker exec "$provider" wget -qO- http://127.0.0.1:8080/provider.yaml | grep -F 'name: smoke-node' >/dev/null; do
attempt=$((attempt + 1))
if [ "$attempt" -ge 10 ]; then
echo "subscription fixture did not become ready" >&2