fix(ci): reuse ApiTests image in e2e instead of blind rebuild.

e2e pulled/reused eventhub-tests from test job or registry; plain buildkit logs if rebuild needed. Root cause of #342 e2e cancel: quiet rebuild + prune + timeout.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-17 22:57:50 +03:00
parent 5806bb0f95
commit 046e936eab
2 changed files with 47 additions and 10 deletions
+39 -10
View File
@@ -45,20 +45,49 @@ echo " WS_HOST=${WS_HOST}"
echo " ADMIN_WS_HOST=${ADMIN_WS_HOST}"
IMAGE="eventhub-api-tests:local"
REG_IMAGE=""
if [[ -n "${GITHUB_SHA:-}" ]]; then
IMAGE="eventhub-api-tests:sha-${GITHUB_SHA:0:12}"
REG_IMAGE="${REGISTRY:-git.sabilin.com/eventhub}/eventhub-api-tests:sha-${GITHUB_SHA:0:12}"
fi
echo "=== build API test image (${IMAGE}) ==="
bash scripts/retry-docker-build.sh 5 60 -- \
docker buildx build \
--network=host \
--file docker/ApiTests.Dockerfile \
--tag "${IMAGE}" \
--load \
--provenance=false \
--sbom=false \
.
echo "=== ensure API test image (${IMAGE}) ==="
have_image=0
if docker image inspect "${IMAGE}" >/dev/null 2>&1; then
echo " local image present: ${IMAGE}"
have_image=1
elif docker image inspect eventhub-tests:latest >/dev/null 2>&1; then
# act/hostexecutor: test job уже собрал тот же Dockerfile
docker tag eventhub-tests:latest "${IMAGE}"
echo " reused local eventhub-tests:latest → ${IMAGE}"
have_image=1
elif [[ -n "${REG_IMAGE}" ]]; then
if [[ -n "${REGISTRY_USER:-}" && -n "${REGISTRY_PASSWORD:-}" ]]; then
echo "${REGISTRY_PASSWORD}" | docker login git.sabilin.com -u "${REGISTRY_USER}" --password-stdin >/dev/null
fi
if docker pull "${REG_IMAGE}"; then
docker tag "${REG_IMAGE}" "${IMAGE}"
echo " pulled ${REG_IMAGE}"
have_image=1
else
echo " pull failed — will rebuild"
fi
fi
if [[ "${have_image}" -ne 1 ]]; then
# plain: иначе BUILDKIT_PROGRESS=quiet прячет причину падения rebar3
export BUILDKIT_PROGRESS="${BUILDKIT_PROGRESS:-plain}"
bash scripts/retry-docker-build.sh 5 60 -- \
docker buildx build \
--network=host \
--progress=plain \
--file docker/ApiTests.Dockerfile \
--tag "${IMAGE}" \
--load \
--provenance=false \
--sbom=false \
.
fi
docker run --rm --network=host \
-e CT_MODE=remote \