Skip to content

ci(module-pack): container entries run the tester image against the platform image's /app - #2907

Merged
rbuergi merged 1 commit into
mainfrom
ci/container-lane-runs-the-tester-image
Aug 31, 2026
Merged

rbuergi merged 1 commit into
mainfrom
ci/container-lane-runs-the-tester-image

Conversation

@rbuergi

@rbuergi rbuergi commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #2854, found by measurement before any satellite flipped an entry: the platform image (memex-portal-ai@7e8c0b20…) carries no /app/mw-plugin-test — the tester ships in its own mw-plugin-test image, tag-matched to the portal images by construction. As merged, every "build":"container" entry would die at docker run with executable-not-found.

The two images deliberately keep their roles:

So the lane gains tester-image + tester-image-digest (required for container entries, checked loudly with the existing no-fallback stance), extracts the platform /app once per job (docker create + cp — the portal entrypoint never starts), and runs the tester image's builder with --app /platform-app. This is byte-for-byte the shape the 18-green measurement used natively (builder-adjacent generators + portal /app refs).

Callers pass both pins from the same CD wave (satellites already carry MW_TEST_IMAGE/digest conventions). The Plugins flip PR pins this lane's SHA.

🤖 Generated with Claude Code

…e PLATFORM image's /app

Measured before any entry flipped: memex-portal-ai@7e8c0b20 ships no
/app/mw-plugin-test (331 files, none the tester), so #2854's container
path — the tester run from the platform image — fails at docker run for
every entry that declares it. The two images cannot swap roles either:
the tester's own /app lacks the Blazor/Hosting.AspNetCore half of the
reference surface (the platform-image input already documents this). So
the lane now takes tester-image/tester-image-digest, extracts the
platform /app once (docker create + cp — the portal's entrypoint never
starts), and runs the tester image's builder with --app /platform-app.
Both pins are published by one CD wave and move together.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 31, 2026 15:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the reusable node-repo-module-pack workflow so "build":"container" module entries run the mw-plugin-test builder from a dedicated tester image while compiling against the pinned platform image’s extracted /app, avoiding “executable not found” failures when the portal image doesn’t ship /app/mw-plugin-test.

Changes:

  • Adds tester-image / tester-image-digest workflow inputs and wires them into the pack job environment.
  • For build=container, pulls both pinned images, extracts the platform /app via docker create + docker cp, and runs the tester image’s /app/mw-plugin-test build-project against that extracted app.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +619 to +623
platform_app="$RUNNER_TEMP/platform-app"
rm -rf "$platform_app"
pcid=$(docker create --platform linux/amd64 "$pinned")
docker cp -q "$pcid:/app" "$platform_app"
docker rm "$pcid" >/dev/null
Comment on lines 606 to +616
case "${IMAGE##*/}" in *:*) IMAGE_NOTAG="${IMAGE%:*}" ;; *) IMAGE_NOTAG="$IMAGE" ;; esac
pinned="${IMAGE_NOTAG}@${DIGEST}"
case "${TESTER_IMAGE##*/}" in *:*) TESTER_NOTAG="${TESTER_IMAGE%:*}" ;; *) TESTER_NOTAG="$TESTER_IMAGE" ;; esac
tester_pinned="${TESTER_NOTAG}@${TESTER_DIGEST}"
echo "$ACR_PASSWORD" | docker login "${IMAGE%%/*}" -u "$ACR_USERNAME" --password-stdin
# 🚨 --platform linux/amd64 ALWAYS, for the same reason the refs extraction pins it:
# framework identities are per-architecture and the bundles are sealed under the x64
# identity the portals run. Pulled here rather than relying on the refs step above,
# which does not run on a platform-refs cache HIT.
docker pull --platform linux/amd64 "$pinned"
docker pull --platform linux/amd64 "$tester_pinned"
@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

792 tests  ±0   788 ✅ ±0   4m 50s ⏱️ +5s
  7 suites ±0     4 💤 ±0 
  7 files   ±0     0 ❌ ±0 

Results for commit c189840. ± Comparison against base commit b88d705.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

    8 files  ±0      8 suites  ±0   4m 13s ⏱️ +13s
1 490 tests ±0  1 489 ✅ ±0  1 💤 ±0  0 ❌ ±0 
2 193 runs  ±0  2 192 ✅ ±0  1 💤 ±0  0 ❌ ±0 

Results for commit c189840. ± Comparison against base commit b88d705.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

1 118 tests  ±0   1 118 ✅ ±0   3m 34s ⏱️ -14s
    7 suites ±0       0 💤 ±0 
    7 files   ±0       0 ❌ ±0 

Results for commit c189840. ± Comparison against base commit b88d705.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

1 165 tests  ±0   1 165 ✅ ±0   4m 42s ⏱️ +6s
    7 suites ±0       0 💤 ±0 
    7 files   ±0       0 ❌ ±0 

Results for commit c189840. ± Comparison against base commit b88d705.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

3 059 tests  ±0   2 867 ✅ ±0   6m 58s ⏱️ +7s
    8 suites ±0     192 💤 ±0 
    8 files   ±0       0 ❌ ±0 

Results for commit c189840. ± Comparison against base commit b88d705.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

1 152 tests  ±0   1 152 ✅ ±0   8m 12s ⏱️ +35s
    7 suites ±0       0 💤 ±0 
    7 files   ±0       0 ❌ ±0 

Results for commit c189840. ± Comparison against base commit b88d705.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results

   44 files  ±0     44 suites  ±0   32m 30s ⏱️ +52s
8 776 tests ±0  8 579 ✅ ±0  197 💤 ±0  0 ❌ ±0 
9 479 runs  ±0  9 282 ✅ ±0  197 💤 ±0  0 ❌ ±0 

Results for commit c189840. ± Comparison against base commit b88d705.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants