Skip to content

fix(ci): make Docker restore-warm layer cover all core csprojs - #549

Merged
JabbaKadabra merged 1 commit into
masterfrom
claude/issue-544-7w7jlc
Aug 16, 2026
Merged

fix(ci): make Docker restore-warm layer cover all core csprojs#549
JabbaKadabra merged 1 commit into
masterfrom
claude/issue-544-7w7jlc

Conversation

@JabbaKadabra

Copy link
Copy Markdown
Collaborator

What

The cache-warming dotnet restore layer in the three backend Dockerfiles copied only Nordstein.Core.Common and Nordstein.Core.Domain csprojs, although the product now also consumes Nordstein.Core.Storage, Nordstein.Core.Licensing, and Nordstein.Core.AI through the source-mode NordsteinCoreReference expansion. The hand-listed set had drifted from the real dependency graph across three extraction tranches, so the early restore layer no longer did what its comment claimed.

Fixes #544.

Changes

  • deploy/allinone/Dockerfile, Proxytrace.Api/Dockerfile, Proxytrace.Proxy.Api/Dockerfile: replaced the two hand-listed core csproj COPY lines with a single structure-preserving glob — COPY --parents core/*/*.csproj ./ — so every current and future Nordstein.Core package is warmed automatically instead of silently dropping out of the restore layer (drift-proof, as suggested in the issue).
  • Added the # syntax=docker/dockerfile:1 parser directive to each file, which COPY --parents requires.
  • Dropped the stray UTF-8 BOM at the top of Proxytrace.Api/Dockerfile that would otherwise sit before the parser directive and mask it.
  • Rewrote the misleading restore-layer comment in all three files to describe the real behavior.

The explicit core/Directory.Build.props + core/Nordstein.Core.sln copy is kept as-is — the sln is what selects source mode, and neither file is a csproj matched by the glob.

Why the glob works with structure preserved

Plain COPY core/*/*.csproj core/ flattens all matches into one directory, which breaks restore (each csproj must live in its own project directory). COPY --parents preserves the core/<Project>/ path, so the source-mode ProjectReference expansion resolves for the whole graph.

Verification

  • No other Dockerfiles carry the stale pattern (frontend/ and sample-client/ are Node images; neither copies core).
  • CI's image job path-triggers on Dockerfile changes: it does a real buildx build of the all-in-one image (submodules recursive, so core/ is populated and the glob matches) and smoke-tests the booted container — exercising the --parents glob and the syntax directive end-to-end on this PR.

Not user-facing (build-internal), so no CHANGELOG entry.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QZkxhC3XUtkmBosiTKvW32


Generated by Claude Code

The cache-warming restore layer in the three backend Dockerfiles copied
only Nordstein.Core.Common and Nordstein.Core.Domain csprojs, but the
product now also consumes Nordstein.Core.Storage, .Licensing, and .AI
through the source-mode NordsteinCoreReference expansion. The copied set
had drifted from the real dependency graph across three extraction
tranches, so the early restore did not cover what its comment claimed.

Replace the hand-listed core csproj COPY lines with a structure-
preserving glob (COPY --parents core/*/*.csproj), so every current and
future Nordstein.Core package is picked up automatically instead of
silently drifting out of the layer. This needs the dockerfile:1 frontend,
so add the syntax directive to each file (and drop the stray UTF-8 BOM on
Proxytrace.Api/Dockerfile that would otherwise mask the directive). Fix
the misleading comment to describe the real behavior.

Fixes #544

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QZkxhC3XUtkmBosiTKvW32
@JabbaKadabra
JabbaKadabra merged commit 93f41d1 into master Aug 16, 2026
14 checks passed
@JabbaKadabra
JabbaKadabra deleted the claude/issue-544-7w7jlc branch August 16, 2026 06:21
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.

Docker restore-warm COPY layer lists a stale core csproj set

2 participants