Fix Blazor Wasm and Ntex Fortunes docker builds in CI#2171
Closed
LoopedBard3 wants to merge 1 commit into
Closed
Conversation
Both benchmarks have been failing in benchmarks-ci-02 since April 2026 because their dockerfiles pull from upstream repos that have rolled forward in incompatible ways. Add local overrides under docker/ so the benchmarks repo controls these two builds directly. Blazor Wasm (docker/wasm-performance/): The upstream dockerfile at dotnet/aspnetcore installs Node.js 21 via https://deb.nodesource.com/setup_21.x. Recent aspnetcore npm packages (balanced-match, brace-expansion, eslint-visitor-keys, minimatch, @tootallnate/once, ...) require node 18 || 20 || >=22, and the rollup-driven 'npm run build' step now fails on Node 21 with ERR_REQUIRE_ESM. Replace the upstream config in build/job-variables.yml with a local benchmarks.compose.json that points at a copy of the dockerfile using setup_22.x. Track upstream by leaving everything else identical so future changes can be diff-rebased. Ntex Fortunes / Ntex Plaintext / Ntex Json (docker/ntex-techempower/): The TechEmpower ntex Cargo.toml uses ntex-bytes = { version = "1.5" } (caret semver), so cargo resolves to the newest 1.x. ntex-bytes 1.6.0 shipped 2026-05-02 and introduced the BytePages type, which the fafhrd91/postgres ntex-3 tokio-postgres fork (frozen at commit fbc7a17) does not understand - it still uses BytesMut. Because the workspace builds tokio-postgres for every ntex binary when --features=tokio is set, *all* ntex docker builds fail with E0308 mismatched-types errors, not just the database scenario. Add docker/ntex-techempower/ntex-plt.dockerfile and ntex-db.dockerfile that clone TechEmpower master from inside the container, pin ntex-bytes to =1.5.4 with sed, then build as before. Redirect the ntex job (and the fortunes_ntex override) in scenarios/te.benchmarks.yml to use them. Verified locally with docker build --pull on Docker Desktop: - benchmarks_wasm: succeeds with setup_22.x (was: rollup ERR_REQUIRE_ESM from http-proxy-agent under Node 21) - benchmarks_ntex-plt: succeeds with ntex-bytes 1.5.4 pin - benchmarks_ntex-db: succeeds with ntex-bytes 1.5.4 pin Both overrides are temporary - drop them once dotnet/aspnetcore moves to Node 22 upstream and the fafhrd91/postgres tokio-postgres fork is updated for ntex-bytes 1.6+. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
Author
|
Closing in favor of some more direct approaches for fixes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Both Blazor Wasm and Ntex Fortunes have been failing in benchmarks-ci-02 since mid‑April. The last green run was
20260326.1on Mar 26; every run since has failed on adocker build --pullfor one of these two scenarios. Both failures come from upstream dockerfiles outside this repo that have rolled forward in incompatible ways. Add local overrides underdocker/so the benchmarks repo controls these two builds directly.Investigation
Reproduced both failing crank commands from build 2974764 on Docker Desktop:
Blazor Wasm→docker build --pull --build-arg gitBranch=main -t benchmarks_dockerfile -f src/Components/benchmarkapps/Wasm.Performance/dockerfile .../src/Components/benchmarkapps/Wasm.Performance(log)Ntex Fortunes→docker build --pull -t benchmarks_ntex-db -f frameworks/Rust/ntex/ntex-db.dockerfile .../frameworks/Rust/ntex/(log)Blazor Wasm
dotnet/aspnetcore's wasm dockerfile installs Node.js 21 viahttps://deb.nodesource.com/setup_21.x. Node 21 went EOL in June 2024 and recent aspnetcore npm dependencies requirenode 18 || 20 || >=22:Ntex Fortunes (and Ntex Plaintext / Ntex Json)
TechEmpower's
frameworks/Rust/ntex/Cargo.tomlusesntex-bytes = { version = "1.5", features=["simd"] }— caret semver, so cargo resolves to the newest 1.x. ntex-bytes 1.6.0 shipped 2026-05-02 and introduced theBytePagestype, which the fafhrd91/postgresntex-3tokio-postgres fork (frozen atfbc7a17) does not understand — it still usesBytesMut. Because the workspace buildstokio-postgresfor every binary when--features=tokiois set, all ntex docker builds fail with E0308 mismatched-types errors, not just the database scenario:Fix
Two narrowly-scoped overrides:
docker/wasm-performance/— copy of upstream'sdockerfile,exec.sh, and a newbenchmarks.compose.json, withsetup_21.x→setup_22.xand the source repo pointing at this repo so crank picks up the override.build/job-variables.ymlnow pointsblazorWasmJobsat the local compose JSON.docker/ntex-techempower/{ntex-plt,ntex-db}.dockerfile— a thin replacement that clones TechEmpower master from inside the container, thensed -ipinsntex-bytesto=1.5.4beforecargo build.scenarios/te.benchmarks.ymlupdates thentexjob and thefortunes_ntexoverride to source these fromaspnet/Benchmarksinstead of the TechEmpower checkout.Verification
Ran the exact crank
docker build --pullinvocations locally on Docker Desktop after both fixes:benchmarks_wasm_node22(upstream dockerfile + setup_22.x)test_wasm_local(local override underdocker/wasm-performance/)test_ntex-plt_local(local override)Finished release profile [optimized] target(s) in 52.40stest_ntex-db_local(local override)ntex-dbandntex-pltbinaries produced;Cargo.lockshowsntex-bytes 1.5.4as expectedNotes for follow-up
Both overrides are intentionally temporary:
docker/wasm-performance/once dotnet/aspnetcore bumps to Node 22 upstream.docker/ntex-techempower/once fafhrd91/postgresntex-3is updated forntex-bytes 1.6+(or TechEmpower itself pinsntex-bytes).