#!/bin/sh set -eu cd "$(dirname "$0")/.." platform=${PLATFORM:-linux/arm64} slug=$(printf '%s' "$platform" | tr '/:' '--') core_image="thothii-core:verify-$slug" frontend_image="thothii-frontend:verify-$slug" inventory_dir=${CONTAINER_INVENTORY_DIR:-.artifacts/container-images/$slug} mkdir -p "$inventory_dir" docker buildx build --platform "$platform" --load \ -f docker/core.Dockerfile -t "$core_image" . docker buildx build --platform "$platform" --load \ -f docker/frontend.Dockerfile -t "$frontend_image" . expected_pi_version=$(sed -n 's/^ARG PI_VERSION=//p' docker/core.Dockerfile) test -n "$expected_pi_version" test "$(docker image inspect --format '{{ index .Config.Labels "io.thothii.pi.version" }}' "$core_image")" = "$expected_pi_version" test "$(docker image inspect --format '{{ index .Config.Labels "org.opencontainers.image.title" }}' "$core_image")" = "thothii-core" test "$(docker image inspect --format '{{ index .Config.Labels "org.opencontainers.image.title" }}' "$frontend_image")" = "thothii-frontend" docker run --rm --platform "$platform" --entrypoint /app/docker/smoke/core-smoke.sh \ "$core_image" ./scripts/test-vector-migration-image.sh "$core_image" "$platform" docker run --rm --platform "$platform" "$frontend_image" frontend-config-smoke ./docker/smoke/frontend-policy-smoke.sh if docker run --rm --platform "$platform" -e THOTH_PUBLIC_EXPOSURE=true -e AUTH_MODE=none \ "$core_image" server >/dev/null 2>&1; then echo "core accepted public exposure without upstream authentication" >&2 exit 1 fi docker image inspect "$core_image" >"$inventory_dir/core-image-inspect.json" docker image inspect "$frontend_image" >"$inventory_dir/frontend-image-inspect.json" docker run --rm --platform "$platform" --entrypoint sh "$core_image" -c \ 'dpkg-query -W; /opt/venv/bin/pip freeze; /opt/venv/bin/python -c '"'"'import glob,json; rows=set(); for path in glob.glob("/app/backend/node_modules/**/package.json", recursive=True): try: package=json.load(open(path)); rows.add((package.get("name","?"), package.get("version","?"))) except (OSError, ValueError): pass print("\n".join(f"{name}=={version}" for name,version in sorted(rows)))'"'"'' \ >"$inventory_dir/core-packages.txt" docker run --rm --platform "$platform" --entrypoint sh "$frontend_image" -c 'apk info -vv' \ >"$inventory_dir/frontend-packages.txt" echo "container verification and inventory complete for $platform"