chore(deps): update ubuntu docker tag to v26#1021
Conversation
Deploying control-layer with
|
| Latest commit: |
8361986
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://b45ae002.control-layer.pages.dev |
| Branch Preview URL: | https://renovate-ubuntu-26-x.control-layer.pages.dev |
a61f40e to
1566c1d
Compare
5147ba6 to
714a6a0
Compare
714a6a0 to
7b62c36
Compare
There was a problem hiding this comment.
Summary
This PR updates the Ubuntu base image for the runtime stage from ubuntu:24.04 to ubuntu:26.04. This is a routine dependency update to keep the Docker image current.
Verdict: Ready to approve — the change is minimal and low-risk for this use case.
Research notes
- Ubuntu 26.04 availability: Confirmed available on Docker Hub with tag
26.04(codename "resolute"), last updated 8 days ago. Multi-arch support confirmed (linux/amd64, linux/arm/v7, linux/arm64/v8). - Runtime dependencies: The Dockerfile installs only
ca-certificates,curl,libxml2, andtzdata— all standard packages available across Ubuntu versions. - Build vs Runtime: The Rust binary is compiled in the builder stage and copied to the runtime container, so the runtime image doesn't need build toolchains or compatibility layers.
- Non-root user: The
ubuntuuser exists by default in official Ubuntu images, so line 64 (chown -R ubuntu:ubuntu) and line 67 (USER ubuntu) will continue to work.
Suggested next steps
- Approve and merge — This is a low-risk update suitable for merging.
- Optional validation — If not already covered by CI, consider verifying the multi-platform Docker build succeeds with the new base image (
docker buildx bakeas documented in CLAUDE.md).
General findings
No issues found. The change is a single-line version bump that follows best practices:
- Pinned to a specific minor version (
26.04rather thanlatestorrolling) - Minimal runtime surface area (only essential packages installed)
- No breaking changes expected for the static Rust binary runtime
7b62c36 to
0593ec6
Compare
There was a problem hiding this comment.
Summary
This PR updates the Ubuntu base image in the Dockerfile from ubuntu:24.04 to ubuntu:26.04 (the latest LTS release codenamed "resolute"). This is a routine dependency update from Renovate.
Verdict: Ready to approve - this is a low-risk, standard LTS upgrade.
Research notes
- Fetched Docker Hub ubuntu page: Confirmed
ubuntu:26.04(resolute) is a valid official image released April 2026, and is now thelatestandrollingtag target - Ubuntu 26.04 is the current LTS release, succeeding 24.04 (noble)
- Per Docker Hub docs, the
unminimizecommand was moved to a separate package starting in Ubuntu 24.10, but this Dockerfile doesn't useunminimize, so no impact
Suggested next steps
- Approve and merge - No changes required. The single-line update is correct and follows standard practice for keeping base images current.
- Optional follow-up: Consider whether the GitHub Actions runners (
depot-ubuntu-24.04in.github/workflows/release.ymlandbuild-staging.yml) should eventually be updated to match, though this is not required since the runner OS only affects the build environment, not the final runtime image.
General findings
No issues found. The change is:
- Minimal scope: Only one line changed (the FROM directive)
- Low risk: Runtime dependencies (
ca-certificates,curl,libxml2,tzdata) are standard packages available across Ubuntu versions - Compatible: Node.js 20.x installation via nodesource works on Ubuntu 26.04
- No cascading changes needed: Workflow files use
depot-ubuntu-24.04runners for the build environment, which is independent of the runtime base image
f8bdccf to
d3469fb
Compare
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from Ubuntu 24.04 LTS to Ubuntu 26.04 LTS (Resolute Raccoon). Ubuntu 26.04 was released on April 23, 2026, and is a valid LTS release available on Docker Hub.
Verdict: Approve with verification recommended - this is a routine dependency update with low risk, but should be tested before merging to production.
Research notes
- Fetched Ubuntu Releases - confirmed Ubuntu 26.04 LTS (Resolute Raccoon) is an official release from April 2026
- Fetched Docker Hub ubuntu:26.04 tag - confirmed the image is published and available (last pushed 9 days ago)
- Fetched cargo-chef documentation - the builder stage uses
lukemathwalker/cargo-chef:latest-rust-1.93.0-slimwhich is Debian bookworm-based; glibc backward compatibility ensures binaries built on older glibc work on newer Ubuntu versions
Suggested next steps
- Test the Docker build locally to verify the build completes successfully with Ubuntu 26.04
- Verify runtime dependencies - confirm
ca-certificates,curl,libxml2, andtzdatainstall without issues on Ubuntu 26.04 - Run integration tests against the new image to ensure no regressions
- Consider updating CI runners (
depot-ubuntu-24.04) to match the target runtime version in a follow-up PR for consistency (not blocking)
General findings
- Binary compatibility: The Rust binary is compiled in a Debian bookworm-based builder stage and copied to the Ubuntu 26.04 runtime. glibc maintains backward compatibility, so this is not a concern.
- CI workflow alignment: The GitHub Actions workflows (
build-staging.yml:22,release.yml:10,release.yml:94) currently usedepot-ubuntu-24.04runners. This doesn't affect the Docker build output but could be updated for consistency in a separate PR. - docker-compose: No changes needed - the compose files reference the built image, not the base OS version.
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from ubuntu:24.04 (Noble Numbat LTS) to ubuntu:26.04 (Resolute Raccoon LTS). The change is a single-line modification in the Dockerfile.
Verdict: Approved with minor consideration noted below.
Research notes
-
Ubuntu 26.04 LTS status: Confirmed via Docker Hub that
ubuntu:26.04tag exists and is an official LTS release ("Resolute Raccoon"). The image was last pushed 9 days ago with multi-architecture support (amd64, arm/v7, arm64). -
Ubuntu release pattern: Per Wikipedia's Ubuntu version history, Ubuntu releases follow a predictable schedule where every fourth release (April of even-numbered years) is an LTS release with 5 years of standard support. Ubuntu 26.04 LTS follows this pattern.
-
Package compatibility: The Dockerfile installs minimal runtime dependencies (
ca-certificates,curl,libxml2,tzdata). These are core packages that remain available across LTS versions. -
CI/CD impact: GitHub Actions workflows use
depot-ubuntu-24.04as the runner OS, but this is independent of the Docker base image. The Docker build occurs within the runner environment.
Suggested next steps
-
Monitor initial deployments - Since Ubuntu 26.04 is a recent LTS release, monitor the first few production deployments for any unexpected behavior related to library versions or system calls.
-
Consider pinning to specific patch version - For production stability, consider pinning to a specific patch release (e.g.,
ubuntu:26.04is fine, but you could also useubuntu:nobleif you want rolling patch updates within the LTS series, though26.04already does this).
General findings
No blocking issues identified. The change is low-risk because:
- The application is a statically-linked Rust binary (built in the builder stage)
- Runtime dependencies are minimal and well-established packages
- The Dockerfile doesn't rely on Ubuntu-specific behaviors that might differ between versions
One non-blocking observation: The GitHub Actions workflows reference depot-ubuntu-24.04 runners. While this doesn't affect the built image, teams sometimes prefer to keep CI runner versions aligned with the container base version for consistency during debugging. This is optional and not required for correctness.
d3469fb to
04ad26d
Compare
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from ubuntu:24.04 (Noble) to ubuntu:26.04 (Resolute Raccoon), which is the current LTS release as of April 2026. The change is minimal and follows standard dependency update practices.
Verdict: Ready to approve - no blocking issues identified.
Research notes
- Ubuntu 26.04 LTS release page - Confirmed as official LTS release (Resolute Raccoon) published April 2026
- Docker Hub ubuntu tags - Verified
ubuntu:26.04tag exists with multi-arch support (amd64, arm64, arm32v7, ppc64le, riscv64, s390x) - docker-library/ubuntu README - Documents supported tags including
26.04,resolute, andlatest
Suggested next steps
- Verify the built image works as expected - After merge, ensure the staging deployment runs correctly with the new base image (standard practice for any base OS change)
- Monitor Grype security scan results - The CI pipeline includes vulnerability scanning; verify that moving to 26.04 doesn't introduce new vulnerabilities (though typically newer LTS images have fewer CVEs)
General findings
CI runner compatibility: The GitHub Actions workflows use depot-ubuntu-24.04-* runners (lines 12, 102, 195, etc. in .github/workflows/ci.yaml). These are the VM hosts that execute the build pipeline and are independent of the container base image. The Dockerfile's FROM ubuntu:26.04 only affects the production container, not the CI environment. No changes needed to CI configuration.
Dependency considerations: The runtime stage explicitly installs all required packages (ca-certificates, curl, libxml2, tzdata), so the image doesn't depend on implicit Ubuntu 24.04 defaults that might differ in 26.04.
Builder stage unaffected: The builder stage still uses cargo-chef:latest-rust-1.93.0-slim, which is appropriate since the Rust compilation environment is separate from the runtime container.
04ad26d to
4d03874
Compare
8fa0c07 to
69f28ec
Compare
There was a problem hiding this comment.
Summary
This PR updates the runtime base image in the Dockerfile from ubuntu:24.04 to ubuntu:26.04. Ubuntu 26.04 ("resolute") is an official Docker Hub image currently tagged as latest and rolling, indicating it's the active stable release. The change is straightforward but carries considerations for production deployments.
Verdict: Non-blocking - the change is reasonable for keeping dependencies current, but teams should verify compatibility with their deployment environments before merging.
Research notes
- Docker Hub tags: Confirmed
ubuntu:26.04exists and is actively maintained (last pushed ~1 month ago). It's aliased aslatestandrollingin the official images repository. - Official images manifest: The docker-library official-images repo shows
ubuntu:26.04(codename "resolute", build 20260421) supports all major architectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x. - Image size difference:
ubuntu:24.04(noble): ~28.36 MB (amd64)ubuntu:26.04(resolute): ~39.63 MB (amd64)- The newer image is ~11MB larger, which may impact pull times and storage.
- No other references: Grep confirms the Dockerfile is the only place referencing ubuntu version tags in the codebase.
Suggested next steps
- Verify binary compatibility: Ensure the compiled
dwctlbinary runs correctly on Ubuntu 26.04's glibc and library versions. The build stage uses a different base image (cargo-chef with rust-1.93.0-slim), so the binary is compiled in a different environment than it runs in. - Test in staging: Deploy the updated image to a staging environment before production rollout to catch any runtime library incompatibilities.
- Consider pinning: For production reproducibility, consider using a specific digest-pinned tag (e.g.,
ubuntu@sha256:...) instead of the floating26.04tag, or add a comment documenting when this should be reviewed.
General findings
No inline comments are filed. The following general observations apply:
- Image size increase: The upgrade adds ~11MB to the final image (39.63MB vs 28.36MB for amd64). This is a minor concern but worth noting for bandwidth/storage-constrained deployments.
- Floating tag without digest pinning: Using
ubuntu:26.04means the exact image can change over time as Canonical pushes security updates. For maximum reproducibility, consider pinning to a specific digest once the image is validated.
69f28ec to
75099a5
Compare
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from Ubuntu 24.04 LTS (Noble Numbat) to Ubuntu 26.04 LTS (Resolute Raccoon), the latest LTS release from April 2026. This is a routine dependency update managed by Renovate.
Verdict: Ready to approve - this is a standard, low-risk infrastructure update.
Research notes
- Fetched Ubuntu releases page: Confirmed Ubuntu 26.04 LTS (Resolute Raccoon) is the latest LTS release as of April 2026
- Checked Ubuntu package repository: All runtime dependencies (
ca-certificates,curl,libxml2,tzdata) are available in Ubuntu 26.04 - OpenSSL upgrades from 3.0.13 (Ubuntu 24.04) to 3.5.5 (Ubuntu 26.04) - this provides security improvements
- CI workflows use
depot-ubuntu-24.04runners, but this doesn't affect the Docker image since the build occurs inside Docker Buildx/Depot using the base image specified in the Dockerfile
Suggested next steps
- Approve and merge - No changes required; this is a safe dependency update
- Optional follow-up: Consider updating CI runner images to
depot-ubuntu-26.04in a separate PR for consistency (currently usesdepot-ubuntu-24.04in.github/workflows/ci.yaml)
General findings
No issues identified. The change is minimal (single line), well-scoped, and follows standard practice for keeping base images current. The Rust binary compiled in the builder stage will run correctly on Ubuntu 26.04, and all declared runtime dependencies are available in the new base image.
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from Ubuntu 24.04 LTS (Noble Numbat) to Ubuntu 26.04 LTS (Resolute Raccoon). Ubuntu 26.04 was released on April 23, 2026, and is available on Docker Hub as an official image with multi-architecture support (amd64, arm64, etc.).
The change is minimal and low-risk: it only affects the runtime stage of the multi-stage Docker build. The builder stage uses a Debian-based image (lukemathwalker/cargo-chef:latest-rust-1.93.0-slim), so the compiled binary should be portable across Ubuntu versions. The runtime dependencies installed (ca-certificates, curl, libxml2, tzdata) are standard packages available in both versions.
Verdict: This PR is ready to approve, with one minor consideration about the recency of the Ubuntu 26.04 release noted below.
Research notes
- Ubuntu 26.04 LTS: Released April 23, 2026 as "Resolute Raccoon" Ubuntu release page
- Docker Hub tags:
ubuntu:26.04,ubuntu:resolute,ubuntu:latest, andubuntu:rollingall point to Ubuntu 26.04 Docker Hub - Supported architectures: amd64, arm64/v8, arm/v7, ppc64le, riscv64, s390x - matching the project's multi-platform build targets
- Package notes: Starting from Ubuntu 24.10, the
unminimizecommand was moved to a dedicated package, but this Dockerfile doesn't use it - CI runners: GitHub Actions workflows use
depot-ubuntu-24.04-*runners, but these only affect CI execution, not the Docker build output
Suggested next steps
- Approve and merge - The change is straightforward and follows standard dependency update practices
- Monitor after deployment - Since Ubuntu 26.04 is relatively new (~7 weeks old at time of review), consider monitoring for any unexpected behavior in production, though risk is low
General findings
Consideration - New base image maturity: Ubuntu 26.04 LTS was released in April 2026, making it significantly newer than Ubuntu 24.04. While it's an official LTS release with proper support, teams that prefer more battle-tested base images may want to wait a few more months. This is not a blocking concern, just a risk tolerance consideration.
The glibc version difference (2.43 in 26.04 vs 2.39 in 24.04) does not affect this build because the binary is compiled in the Debian-based builder stage, not the Ubuntu runtime stage.
There was a problem hiding this comment.
Summary
This PR updates the Ubuntu base image from 24.04 to 26.04 in the Dockerfile runtime stage. Ubuntu 26.04 LTS was released in April 2026 and is fully supported until 2031 (standard) / 2041 (extended). The change is straightforward and low-risk since the application is a statically-compiled Rust binary with minimal runtime dependencies.
Verdict: Ready to approve — this is a routine, beneficial dependency update.
Research notes
- Docker Hub ubuntu tags: Confirmed
ubuntu:26.04tag exists and was published ~1 month ago - Ubuntu release cycle: Ubuntu 26.04 LTS released April 2026, standard support until May 2031, expanded security maintenance until April 2041
- Current system date is June 12, 2026 — Ubuntu 26.04 has been available for ~2 months
Suggested next steps
- Merge as-is — No changes required. This is a safe, beneficial update.
- Post-merge verification (optional): After deploying, verify the container starts correctly and the
/app/dwctlbinary runs without missing library errors (unlikely given the minimal dependencies).
General findings
None. The single-line change is correct and well-scoped.
There was a problem hiding this comment.
Summary
This PR updates the Docker base image from ubuntu:24.04 (Noble) to ubuntu:26.04 (Resolute) in the runtime stage of the Dockerfile. Ubuntu 26.04 LTS was released in April 2026 and is available on Docker Hub with support until May 2031 (standard) / April 2036 (Pro).
Verdict: The change is technically sound, but consider timing given the recent release of Ubuntu 26.04 LTS.
Research notes
- Ubuntu release cycle: Confirmed via ubuntu.com that Ubuntu 26.04 LTS was released in April 2026 with standard security maintenance until May 2031.
- Docker Hub availability: Confirmed via hub.docker.com/_/ubuntu that
ubuntu:26.04(tagged asresolute-20260421) is available for all supported architectures (amd64, arm64v8, etc.). - Breaking changes check: The Docker Hub documentation notes that the
unminimizecommand was moved to a dedicated package starting in Ubuntu 24.10+, but this Dockerfile does not use that command, so no impact. - Runtime dependencies: The installed packages (
ca-certificates,curl,libxml2,tzdata) are all standard packages available in Ubuntu 26.04.
Suggested next steps
-
Consider waiting period (Non-blocking): Ubuntu 26.04 LTS was released only ~2 months ago (April 2026). For production workloads, some teams prefer to wait 3-6 months after an LTS release to allow initial bugs to surface. If this is for staging/dev environments first, this is less concerning.
-
Verify multi-platform builds: Ensure the Docker build succeeds for both
linux/amd64andlinux/arm64platforms, as the workflow builds for both architectures. -
Monitor Grype security scans: The CI pipeline runs Grype security scans on built images. Compare vulnerability counts between ubuntu:24.04 and ubuntu:26.04 builds to confirm the expected security improvement from the newer base image.
General findings
- CI runner compatibility: The GitHub Actions workflows use
depot-ubuntu-24.04-*runners, but this doesn't affect the Docker build since the build happens inside containers. No changes needed to CI configuration. - Build vs runtime separation: The build stage uses
lukemathwalker/cargo-chef:latest-rust-1.93.0-slim(Debian-based), so the Rust binary compilation is independent of the Ubuntu base image version. The runtime image only needs to provide compatible glibc and libraries, which Ubuntu 26.04 does. - No other references: No other files in the repository reference the Ubuntu version directly; the change is isolated to the Dockerfile.
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from ubuntu:24.04 (Noble Numbat LTS) to ubuntu:26.04 (LTS). Both are Long Term Support releases, with 26.04 being the newer LTS released in April 2026 with standard security maintenance until May 2031.
Verdict: The change is reasonable and follows Ubuntu's recommended LTS-to-LTS upgrade path. However, there's one consideration around CI/CD runner parity that should be acknowledged.
Research notes
- Fetched Ubuntu release cycle documentation: Confirms 26.04 LTS was released April 2026 with support until 2031 (standard) / 2036 (Pro)
- Fetched Docker Hub ubuntu tags: Confirms
ubuntu:26.04image exists and is actively maintained (last pushed ~1 month ago) - Image size comparison: ubuntu:26.04 (~39.63 MB compressed for amd64) vs ubuntu:24.04 (~28.36 MB compressed) - approximately 40% larger due to newer packages
Suggested next steps
- Non-blocking: Consider updating CI runners from
depot-ubuntu-24.04todepot-ubuntu-26.04(if available) to ensure CI tests run on the same OS version as production. This isn't critical since the Rust binary is statically compiled and runtime dependencies are explicitly installed, but it provides better parity.
General findings
No blocking issues identified. The change is low-risk because:
- The Rust binary is compiled in the builder stage (Debian-based) and statically linked
- Runtime dependencies (
ca-certificates,curl,libxml2,tzdata) are explicitly installed via apt, ensuring they're present regardless of base image - No application-level code changes required
- LTS-to-LTS upgrade follows Ubuntu best practices
There was a problem hiding this comment.
Summary
This PR updates the runtime base image from ubuntu:24.04 (Noble Numbat) to ubuntu:26.04 (Resolute). While Ubuntu 26.04 is a valid, recently-released LTS version (April 2026), this change introduces a blocking issue that will cause the Docker build to fail.
Verdict: Blocked - Requires fixes before merging.
Research notes
- Fetched Docker Hub ubuntu tags: Confirmed
ubuntu:26.04exists (codename "resolute"), last pushed ~1 month ago - Fetched Ubuntu package database:
- libssl-dev: Version 3.0.13 (24.04) → 3.5.5 (26.04) - major version bump, but package name unchanged
- libxml2: Package renamed from
libxml2(24.04, version 2.9.14) tolibxml2-16(26.04, version 2.15.2) - ca-certificates: Available in both versions (20260223 in 26.04)
- Base image size increase: ~28.36 MB → ~39.63 MB (amd64), approximately 40% larger
Suggested next steps
- Update the libxml2 package name in the Dockerfile from
libxml2tolibxml2-16to match Ubuntu 26.04's package naming - Test the Docker build end-to-end with the new base image to verify all dependencies resolve correctly
- Consider whether the 40% image size increase is acceptable or if optimization is needed
General findings
None - all findings are captured in inline comments below.
General findings (auto-demoted from inline due to pre-validation)
- Blocking
Dockerfile:50— This package name changed between Ubuntu 24.04 and 26.04.- (demoted: line 50 (side=RIGHT) is not part of any diff hunk in Dockerfile)
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from ubuntu:24.04 to ubuntu:26.04. However, this change introduces a significant concern: Ubuntu 26.04 ("Resolute") is NOT an LTS release, whereas Ubuntu 24.04 (Noble Numbat) is an LTS release with 5-year support.
Verdict: Changes requested — This update should not be merged as-is without clarification on why a non-LTS base is preferred for production use.
Research notes
- Docker Hub Ubuntu Tags: Shows both
24.04(noble, LTS) and26.04(resolute, non-LTS) are available - Ubuntu release pattern: Even-numbered April releases (22.04, 24.04) are LTS; interim releases (like 26.04 "Resolute") receive only 9 months of security updates vs 5 years for LTS
- CI workflows all run on
depot-ubuntu-24.04runners, creating an environment mismatch between build-time testing and runtime
Suggested next steps
- Block this PR unless there's a specific, documented reason to use a non-LTS Ubuntu release in production
- If the intent was to update to the latest LTS, that would be staying on 24.04 (or evaluating when 26.04 LTS becomes available if that's the naming scheme)
- Consider pinning to
ubuntu:nobleorubuntu:24.04explicitly with a comment explaining the LTS choice - If there IS a specific technical reason for 26.04 (e.g., glibc version requirement, specific library needed), document it in the PR description and/or Dockerfile comment
General findings
Production suitability concern: Using a non-LTS Ubuntu release as the base for a production container image is generally not recommended because:
- Shorter security support window (9 months vs 5 years)
- Less battle-tested than LTS releases
- More frequent breaking changes between versions
- Goes against common industry best practices for server/container deployments
The Rust binary itself is statically compiled and shouldn't have strong OS dependencies, making this upgrade unnecessary from a compatibility standpoint.
|
|
||
| # Runtime stage | ||
| FROM ubuntu:24.04 | ||
| FROM ubuntu:26.04 |
There was a problem hiding this comment.
Blocking: Ubuntu 26.04 ("Resolute") is a non-LTS interim release, not a Long Term Support release.
Why it matters: Ubuntu LTS releases (like 24.04 Noble Numbat) receive 5 years of security updates and are designed for production/server workloads. Non-LTS releases only receive 9 months of support and are intended for desktop users wanting newer packages. Using a non-LTS base in production creates:
- Frequent forced upgrades to stay secure
- Less stability testing
- Potential supply chain churn
Additionally, your CI runners use depot-ubuntu-24.04, creating a build/runtime environment mismatch.
Suggested fix: Revert to FROM ubuntu:24.04 or FROM ubuntu:noble (the current LTS). Add a comment documenting the LTS choice:
# Use LTS release for production stability (5-year support window)
FROM ubuntu:24.04If there's a specific technical requirement for 26.04, please document it.
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from ubuntu:24.04 (Noble) to ubuntu:26.04 (Resolute), following Ubuntu's LTS release cycle. The change is minimal—updating only the FROM directive in the Dockerfile.
Verdict: Needs verification before merge—see blocking concern below regarding package compatibility.
Research notes
- Ubuntu 26.04 LTS was released in April 2026 and is supported until May 2031 (standard) / April 2036 (expanded security) [ubuntu.com]
- Docker Hub:
ubuntu:26.04tag exists, last pushed ~1 month ago [hub.docker.com] - Image size increase: ~28.36 MB → ~39.63 MB (amd64), an increase of ~11 MB
- GitHub Actions runner references (
depot-ubuntu-24.04) are unrelated—they specify CI runner OS, not build target
Suggested next steps
- Verify runtime dependency compatibility (Blocking): Confirm
libxml2and other installed packages are available and ABI-compatible in Ubuntu 26.04. A quick smoke test building and running the container would validate this. - Consider pinning to a specific patch version (Non-blocking): Instead of
ubuntu:26.04, considerubuntu:26.04.0or a dated tag for reproducibility, similar to how the project uses pinned versions elsewhere.
General findings
None—the change is isolated to a single line.
|
|
||
| # Runtime stage | ||
| FROM ubuntu:24.04 | ||
| FROM ubuntu:26.04 |
There was a problem hiding this comment.
Blocking: Verify runtime library compatibility before merging.
Why it matters: Ubuntu 26.04 ships with newer versions of core libraries (glibc, libssl, etc.) compared to 24.04. While the Rust binary itself should be portable, the runtime dependencies installed in this layer (libxml2, curl, ca-certificates, tzdata) may have different versions or ABI characteristics. The base image also increased by ~11 MB (28 MB → 40 MB), which suggests meaningful underlying changes.
Without testing the actual container runtime behavior, there's risk of:
- Missing or incompatible shared libraries that the binary indirectly depends on
- Changed default behaviors in installed packages (e.g., certificate paths, timezone data formats)
- Unexpected interaction with the
onwardsrouting layer oroutlet-postgresmiddleware if they have implicit OS assumptions
Suggested fix: Run a quick integration test:
# Build with new base image
docker build -t dwctl:test .
# Run smoke test
docker run --rm dwctl:test ./dwctl --help
# Verify health endpoint if possible
docker run --rm -p 3001:3001 dwctl:test &
curl http://localhost:3001/healthAlternatively, consider staying on ubuntu:24.04 until 26.04 has been validated in a staging environment, since 24.04 remains fully supported until 2029.
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from ubuntu:24.04 to ubuntu:26.04. The change is minimal (single line) and follows standard dependency update practices.
Verdict: Approved with minor observation noted below.
Research notes
- Docker Hub verification: Confirmed
ubuntu:26.04(codename "resolute") is a valid, officially published tag with multi-arch support (amd64, arm64, arm/v7) Docker Hub - Image size difference: ubuntu:26.04 (~39.6MB) is slightly larger than ubuntu:24.04 (~28.4MB) due to additional base packages
- CI runner compatibility: GitHub Actions uses
depot-ubuntu-24.04-*runners, but this doesn't affect the Docker build since it's containerized
General findings
Observation - Runner/Base Image Version Mismatch
The CI workflows (ci.yaml:12,102,198,263,337; release.yml:10,94) run on depot-ubuntu-24.04-* runners while the produced Docker image uses ubuntu:26.04. This is generally fine for multi-stage Docker builds, but worth monitoring for any unexpected behavior during the build process or security scanning phase.
The existing Grype security scan job (ci.yaml:270-335) will catch any new vulnerabilities introduced by the base image change, which is the appropriate safety net for this type of dependency update.
Suggested next steps
- Monitor the security scan results after merge to ensure no new Critical/High vulnerabilities appear in the Grype output
- Verify E2E tests pass - the
e2e-test-dockerjob (ci.yaml:337+) will validate the runtime image works correctly with the test suite - Consider pinning to a specific patch version (e.g.,
ubuntu:26.04-20260421) for reproducible builds if this pattern isn't already used elsewhere
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from Ubuntu 24.04 LTS (Noble Numbat) to Ubuntu 26.04 LTS (Resolute Raccoon). The change is a single-line modification in the Dockerfile's runtime stage.
Verdict: Ready to approve — this is a routine LTS version bump with no apparent compatibility concerns.
Research notes
- Ubuntu 26.04 LTS availability: Confirmed on Docker Hub —
ubuntu:26.04tag exists, published ~1 month ago - Ubuntu 26.04 LTS support: Per Wikipedia, Ubuntu 26.04 LTS "Resolute Raccoon" is an official long-term support release with 5 years of standard support (extendable to 10-15 years with Ubuntu Pro/Legacy)
- Image size impact: AMD64 image increases from 28.36 MB (24.04) to 39.63 MB (26.04) — approximately 40% larger due to newer glibc and system packages
- No other Ubuntu references: Grep found no other hardcoded Ubuntu version references in documentation or configuration files
Suggested next steps
- Verify in CI/CD: Ensure Docker builds pass with the new base image (standard practice for any base image change)
- Consider documenting the LTS policy: If not already documented, consider noting which Ubuntu LTS versions are supported and the upgrade cadence
General findings
No blocking issues identified. The change is straightforward and follows best practices:
- Pinning to LTS releases (not interim versions like 24.10 or 25.04)
- Using specific version tags rather than
latestorrolling - Only one changed line minimizes regression risk
The builder stage uses ubuntu implicitly via cargo-chef:latest-rust-1.93.0-slim, which is separate from this runtime change and would need its own update if desired.
There was a problem hiding this comment.
Summary
This PR updates the Ubuntu base image in the Docker runtime stage from ubuntu:24.04 (Noble) to ubuntu:26.04 (Resolute). This is a straightforward dependency update with no code changes.
Verdict: Approved — The change is minimal, follows standard practices, and poses low risk.
Research notes
- Fetched Ubuntu tags from Docker Hub: Confirmed
ubuntu:26.04(codename "resolute") is the current stable release, tagged aslatestandrolling. Last pushed about 1 month ago. - Fetched official-images repository: Verified 26.04 supports all standard architectures (amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x).
- Image size comparison: ubuntu:24.04 (~28.36 MB amd64) → ubuntu:26.04 (~39.63 MB amd64), approximately 40% increase due to newer packages.
Suggested next steps
- Merge this PR after confirming the staging build passes (the
/build-stagingcommand will validate the Docker build with the new base image). - Monitor the first production deployment for any unexpected behavior, though risk is minimal given the statically-compiled Rust binary.
General findings
No blocking or non-blocking issues identified. The following observations are noted for awareness:
- GitHub Actions runners: CI workflows use
depot-ubuntu-24.04runners, but this does not affect the Docker build since the Dockerfile specifies its own base image independently. - Runtime dependencies: The installed packages (
ca-certificates,curl,libxml2,tzdata) are core packages available in both Ubuntu versions with compatible APIs. - Binary compatibility: The Rust binary is compiled with static linking in the builder stage, so it is not affected by libc or library version differences between Ubuntu releases.
There was a problem hiding this comment.
Summary
This PR updates the Docker base image from ubuntu:24.04 to ubuntu:26.04 (Resolute Reindeer) in the runtime stage of the multi-stage Dockerfile. This is a routine dependency update to keep the container base image current.
Verdict: Approved with one non-blocking consideration regarding the newness of Ubuntu 26.04.
Research notes
- Docker Hub verification: Confirmed
ubuntu:26.04tag exists and was last pushed about 1 month ago, with support for linux/amd64, linux/arm64/v8, and linux/arm/v7 architectures Docker Hub - Package availability in Ubuntu 26.04 (resolute):
libssl-dev: Version 3.5.5-1ubuntu3.2 available for amd64/arm64/i386 Ubuntu Packageslibxml2: Version 2.15.2+dfsg-0.1 available across all architectures Ubuntu Packagesca-certificates,curl,tzdata: Standard packages available in resolute repository
- CI runner compatibility: GitHub Actions CI uses
depot-ubuntu-24.04-*runners for testing, but Docker builds are platform-agnostic via Depot's build infrastructure which handles cross-platform builds correctly
Suggested next steps
- Non-blocking: Consider monitoring for any runtime issues after deployment given Ubuntu 26.04 is a relatively new LTS release (April 2026). The security scan job in CI will catch any critical vulnerabilities introduced by the base image change.
General findings
No significant issues identified. The change is minimal and low-risk:
- Only affects the runtime stage (not the builder stage which uses Rust 1.93.0 slim image)
- All required runtime dependencies are available in Ubuntu 26.04
- Multi-architecture builds (amd64, arm64) are supported
- Security scanning via Grype is already in place in CI to catch vulnerabilities
|
|
||
| # Runtime stage | ||
| FROM ubuntu:24.04 | ||
| FROM ubuntu:26.04 |
There was a problem hiding this comment.
Non-blocking: Ubuntu 26.04 ("Resolute Reindeer") is a very recent LTS release (April 2026). While all required packages (libssl-dev 3.5.5, libxml2 2.15.2, ca-certificates, curl, tzdata) are confirmed available, this is bleeding-edge for production use.
Why it matters: New LTS releases may have undiscovered issues that only surface after extended production use. Ubuntu 24.04 has had ~2 years of stabilization, while 26.04 has limited real-world validation. That said, the security benefits of newer base images (updated packages, security patches) often outweigh this concern, and your CI security scan with Grype will catch any known vulnerabilities.
Suggested fix: No code change required. Monitor the vulnerability counts reported by the Grype security scan in CI (security-scan job in .github/workflows/ci.yaml:288-327) after merging. If critical/high counts increase significantly compared to 24.04 baseline, consider holding at 24.04 until 26.04 matures.
There was a problem hiding this comment.
Summary
This PR updates the Docker base image from Ubuntu 24.04 (noble) to Ubuntu 26.04 (resolute). While this is a reasonable dependency update to the latest LTS release, there is a blocking issue that will cause the Docker build to fail.
Verdict: Blocked - requires fix before merge.
Research notes
I researched Ubuntu 26.04 package availability:
-
Ubuntu 26.04 exists: Confirmed via Docker Hub -
ubuntu:26.04(codename "resolute") was released ~1 month ago and is available. -
Package naming change in Ubuntu 26.04:
- In Ubuntu 24.04 (noble): the runtime library is packaged as
libxml2(version 2.9.14) - In Ubuntu 26.04 (resolute): the runtime library has been renamed to
libxml2-16(version 2.15.2) following SONAME versioning conventions - Source: packages.ubuntu.com/resolute
- In Ubuntu 24.04 (noble): the runtime library is packaged as
-
libssl-dev: Available in Ubuntu 26.04 as version 3.5.5, no breaking changes expected.
Suggested next steps
-
Update Dockerfile line 50 to use
libxml2-16instead oflibxml2to fix the build failure. -
Consider testing the Docker build after the change to verify all dependencies resolve correctly.
General findings
None - the only finding is anchored to a specific line below.
Comments
General findings (auto-demoted from inline due to pre-validation)
- Blocking
Dockerfile:50— This package name will not exist in Ubuntu 26.04 (resolute).- (demoted: line 50 (side=RIGHT) is not part of any diff hunk in Dockerfile)
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from Ubuntu 24.04 LTS to Ubuntu 26.04 LTS ("Plucky Pangolin"). Ubuntu 26.04 is a valid, recently-released LTS version (April 2026) with standard security support through May 2031.
Verdict: Needs minor consideration before approval - see Non-blocking finding below.
Research notes
- Ubuntu 26.04 LTS release status: Confirmed as an official LTS release from Canonical, released April 2026. Standard security maintenance runs until May 2031, with expanded security maintenance until April 2036. Source: Ubuntu release cycle
- Docker Hub availability: The
ubuntu:26.04tag exists and is actively maintained on Docker Hub, last pushed about 1 month ago with multi-architecture support (amd64, arm/v7, arm64). Source: Docker Hub ubuntu tags - Image size difference: Ubuntu 26.04 is slightly larger (~39.63 MB compressed for amd64) compared to Ubuntu 24.04 (~28.36 MB compressed for amd64) - approximately 11 MB increase due to newer packages.
- CI runner compatibility: GitHub Actions CI runners currently use
depot-ubuntu-24.04images. This is acceptable since CI builds the Docker image from scratch - the host OS version doesn't constrain the container base image.
General findings
Package compatibility considerations: The runtime stage installs ca-certificates, curl, libxml2, and tzdata. These packages are available in Ubuntu 26.04 repositories. No breaking changes are expected for this minimal runtime dependency set.
Binary compatibility: The dwctl binary is compiled in the builder stage (which uses Node.js 20.x and Rust 1.93.0 toolchain on a Debian-based image) and simply copied into the runtime. The glibc version in Ubuntu 26.04 should be compatible with binaries compiled on the builder stage's Debian-based image, as has been the case with Ubuntu 24.04.
Suggested next steps
- Non-blocking: Consider verifying the Docker image builds successfully and passes smoke tests with Ubuntu 26.04 before merging, particularly if there's a staging environment where the new image can be validated.
|
|
||
| # Runtime stage | ||
| FROM ubuntu:24.04 | ||
| FROM ubuntu:26.04 |
There was a problem hiding this comment.
Non-blocking: Base image updated to Ubuntu 26.04 LTS.
Why it matters: Ubuntu 26.04 is a valid LTS release (April 2026) with security support through 2031. However, this is a relatively new release, and there could be unforeseen compatibility issues with:
- Runtime package versions (
ca-certificates,curl,libxml2,tzdata) - though these are standard packages expected to work - The glibc version in 26.04 vs what the binary was compiled against in the builder stage
- Any subtle behavioral changes in the OS that could affect the application
The ~11MB image size increase (39.63 MB vs 28.36 MB compressed) is a minor trade-off for staying current.
Suggested fix: Before merging, verify that:
- The Docker build completes successfully with
ubuntu:26.04 - Smoke tests pass in a staging environment
- No runtime errors appear related to missing libraries or incompatible glibc versions
If the project has automated Docker build + test pipelines, those should provide sufficient validation. If not, a quick manual verification would be prudent.
There was a problem hiding this comment.
Summary
This PR updates the Ubuntu base image from 24.04 (Noble Numbat LTS) to 26.04 (Resolute Raccoon LTS) in the Dockerfile runtime stage. This is an automated dependency update via Renovate.
Verdict: The change is straightforward but requires validation before approval due to potential compatibility concerns with the newer LTS release.
Research notes
-
Ubuntu 26.04 LTS availability: Confirmed via Docker Hub that
ubuntu:26.04(codename "resolute") is a valid, published image tag, last updated ~1 month ago. -
Image size increase: Docker Hub data shows:
ubuntu:24.04: ~28.36 MB (amd64)ubuntu:26.04: ~39.63 MB (amd64)- ~40% larger base image, which could impact build times, pull times, and container startup latency.
-
LTS status: Ubuntu 26.04 "Resolute Raccoon" is confirmed as an LTS release (even-numbered year, April release), meaning it will receive 5 years of standard support.
-
GitHub Actions runners: Both CI workflows (
release.yml,build-staging.yml) usedepot-ubuntu-24.04runners. This doesn't affect the Docker build directly since the Dockerfile specifies its own base, but creates an inconsistency between CI environment and production container OS. -
Runtime dependencies: The installed packages (
ca-certificates,curl,libxml2,tzdata) should all be available in 26.04, but version differences could introduce subtle behavioral changes.
Suggested next steps
-
Verify Rust binary compatibility: Test the compiled
dwctlbinary runs correctly on Ubuntu 26.04, particularly checking for any glibc or libssl version mismatches. -
Run integration tests: Execute the full test suite against a container built with Ubuntu 26.04 to catch any runtime issues.
-
Consider CI alignment: Evaluate whether GitHub Actions runners should also be updated to
depot-ubuntu-26.04for consistency between CI and production environments. -
Document the upgrade: Add a note about the Ubuntu version change in release notes, especially if there are known breaking changes or migration considerations.
General findings
No blocking issues identified. The change is a routine LTS version bump following Ubuntu's release cycle. However, the increased image size and lack of test evidence in this PR warrants a brief validation period before merging.
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from ubuntu:24.04 (Noble Numbat LTS) to ubuntu:26.04 (new April 2026 LTS). While Ubuntu 26.04 LTS is a valid release with long-term support until 2031, this change introduces several risks that should be addressed before merging.
Verdict: Needs changes — The upgrade is reasonable but requires additional validation given the significant glibc version jump and the very recent release date of Ubuntu 26.04.
Research notes
- Ubuntu 26.04 LTS: Released April 2026, confirmed via ubuntu.com. Standard security maintenance until May 2031, expanded security until 2036.
- glibc versions: Ubuntu 24.04 ships glibc 2.39; Ubuntu 26.04 ships glibc 2.43+. The builder stage uses
lukemathwalker/cargo-chef:latest-rust-1.93.0-slimwhich is Debian-based (likely bookworm with glibc 2.36). Rust binaries compiled against older glibc should be backward-compatible with newer glibc, but this should be verified in testing. - OpenSSL: Ubuntu 26.04 includes OpenSSL 3.5.x vs 3.0.x in 24.04 — a positive security upgrade.
- CI runner mismatch: GitHub Actions runners use
depot-ubuntu-24.04-*(lines 12, 103, 198, 262, 338 in.github/workflows/ci.yaml), not 26.04. Production image will differ from test environment. - Docker Hub tag confirmed:
ubuntu:26.04exists and was last pushed ~1 month ago.
Suggested next steps
- Update CI runners to match the production base image (change
depot-ubuntu-24.04-*todepot-ubuntu-26.04-*in CI workflows) OR pin the Dockerfile to 24.04 until runners are updated. - Run full E2E tests with the new base image to verify binary compatibility, especially around:
- TLS/SSL functionality (OpenSSL version change)
- DNS resolution (glibc resolver changes)
- Any system calls that may behave differently
- Consider waiting for Ubuntu 26.04.1 point release (typically 3-6 months after initial release) for better stability unless there's a specific need for 26.04 features.
- Add a comment in the Dockerfile explaining why 26.04 was chosen over the more battle-tested 24.04 LTS.
General findings
Potential glibc ABI incompatibility (Blocking)
The builder stage (lukemathwalker/cargo-chef:latest-rust-1.93.0-slim) and runtime stage (ubuntu:26.04) use different base distributions with different glibc versions. While Rust statically links most dependencies, dynamic linking against libc can cause issues when the builder's glibc is older than the runtime's.
Why it matters: If the binary was compiled against glibc 2.36 (Debian bookworm) and runtime expects glibc 2.43 symbols that don't exist, the container will fail to start with errors like version 'GLIBC_2.XX' not found. Conversely, if the builder somehow uses newer glibc symbols than 26.04 provides, similar failures occur.
Suggested fix: Either:
- Use matching base images:
FROM ubuntu:26.04 AS cheffor the builder stage, or - Use musl-libc for fully static binaries: target
x86_64-unknown-linux-musl, or - Run comprehensive integration tests with the built image to verify it starts and functions correctly
CI/CD environment mismatch (Non-blocking)
GitHub Actions runners use depot-ubuntu-24.04-* while production will run ubuntu:26.04. This means the Docker build happens on 24.04 runners but produces a 26.04-based image.
Why it matters: Subtle differences in toolchain behavior, package availability, or system libraries between 24.04 and 26.04 could cause builds to succeed in CI but fail in production, or vice versa.
Suggested fix: Update .github/workflows/ci.yaml to use depot-ubuntu-26.04-* runners once they're available, or document this intentional difference.
Very new base image (Non-blocking)
Ubuntu 26.04 LTS was released only ~2 months ago (April 2026). LTS point releases (e.g., 26.04.1) typically include important bug fixes and stability improvements.
Why it matters: Early adopters of new LTS releases often encounter edge-case bugs that are fixed in subsequent point releases. For production infrastructure, waiting for 26.04.1 (typically 3-6 months post-release) is often safer.
Suggested fix: Unless there's a specific security or feature requirement driving this upgrade, consider waiting for Ubuntu 26.04.1 or pinning to 24.04 for now.
|
|
||
| # Runtime stage | ||
| FROM ubuntu:24.04 | ||
| FROM ubuntu:26.04 |
There was a problem hiding this comment.
Blocking: glibc ABI compatibility risk between builder and runtime stages.
Why it matters: The builder stage uses lukemathwalker/cargo-chef:latest-rust-1.93.0-slim (Debian bookworm-based, glibc ~2.36) while this runtime stage uses Ubuntu 26.04 (glibc 2.43). Rust binaries compiled against an older glibc should generally work on newer glibc systems due to backward compatibility, but this is not guaranteed — especially if any dynamic linking occurs or if the builder pulls in libraries with newer glibc requirements.
If incompatible, the container will fail at runtime with errors like:
/usr/bin/dwctl: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.43' not found
Suggested fix: Either:
- Align builder and runtime bases:
FROM ubuntu:26.04 AS cheffor consistency - Use fully static musl-linked binaries (
x86_64-unknown-linux-musltarget) - At minimum: thoroughly test the built image to verify it starts and all system calls work correctly
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from Ubuntu 24.04 to Ubuntu 26.04. The change is a single-line modification in the Dockerfile. While the update appears straightforward, I cannot recommend approval without additional verification due to Ubuntu 26.04 being a very recent LTS release (April 2026) and the ~40% increase in image size.
Verdict: Needs changes — specifically, validation that 26.04 is stable for production and that the larger image size is acceptable.
Research notes
-
Ubuntu 26.04 ("Resolute") is confirmed as the current
latesttag on Docker Hub, first released ~2 months ago (April 2026 per Ubuntu's LTS cadence). -
Image size impact:
ubuntu:24.04: 28.36 MB (amd64)ubuntu:26.04: 39.63 MB (amd64)- Increase: ~11 MB / ~40%
-
No breaking changes detected in the Dockerfile structure — the runtime dependencies installed (
ca-certificates,curl,libxml2,tzdata) are available in both versions. -
Builder stage unaffected: The build stage uses
cargo-chef:latest-rust-1.93.0-slim, which is independent of the runtime base image.
Suggested next steps
-
Confirm Ubuntu 26.04 LTS production readiness — Check Canonical's release notes for any known issues or advisories against early adoption.
-
Run full CI pipeline with the new base image to verify binary compatibility, especially:
- Application startup and health checks
- TLS/SSL operations (libxml2, ca-certificates)
- Any locale/timezone-dependent features (tzdata)
-
Consider pinning to a specific patch version (e.g.,
ubuntu:26.04-20260509) rather than floating26.04tag for reproducibility. -
Document the rationale for this upgrade in the PR description or changelog (e.g., security patches, CVE fixes, package updates).
General findings
- Image bloat: The 40% size increase may impact pull times in CI/CD and deployment scenarios. Consider whether a
-slimvariant of 26.04 exists or if the extra packages are justified. - No other files reference the Ubuntu version, so this change is properly isolated.
|
|
||
| # Runtime stage | ||
| FROM ubuntu:24.04 | ||
| FROM ubuntu:26.04 |
There was a problem hiding this comment.
Non-blocking: Ubuntu 26.04 is a recent LTS release (April 2026) and represents a ~40% increase in base image size compared to 24.04 (39.63 MB vs 28.36 MB for amd64).
Why it matters: New LTS releases can have undiscovered bugs in the first few months. Additionally, the larger image size impacts pull times and storage costs, especially in CI/CD pipelines and multi-region deployments. Per Docker Hub data, ubuntu:24.04 images are still actively maintained (last pushed 16 days ago), so there's no urgency to upgrade for security reasons alone.
Suggested fix:
- Verify that Ubuntu 26.04 has passed your organization's production validation criteria (or add a comment documenting why this upgrade is needed).
- Consider pinning to a specific snapshot tag like
ubuntu:26.04-20260509for reproducibility instead of the floating26.04tag. - If image size is a concern, investigate whether
ubuntu:26.04-slimor a distroless alternative meets your runtime requirements.
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from Ubuntu 24.04 to Ubuntu 26.04. While this is a routine dependency update, there is a CI/CD consistency concern that should be addressed before merging.
Verdict: Needs changes - the CI runner configuration should be updated to match the new base image version to ensure proper testing of the Docker build.
Research notes
-
Ubuntu 26.04 availability: Confirmed via Docker Hub that
ubuntu:26.04is an official image pushed ~1 month ago. It's also available as a GA image on GitHub Actions runners (ubuntu-26.04). -
Runner mismatch: The release workflow (
.github/workflows/release.yml:10) and staging workflow (.github/workflows/build-staging.yml:22) both usedepot-ubuntu-24.04runners. These are Depot-hosted runners pinned to Ubuntu 24.04, which creates an inconsistency when building/testing a Docker image based on Ubuntu 26.04. -
Package compatibility: The runtime stage installs minimal packages (
ca-certificates,curl,libxml2,tzdata). While these are standard packages likely available in 26.04, the CI environment running on 24.04 cannot validate that the Docker build works correctly with the newer glibc, OpenSSL, or other system libraries that 26.04 provides.
Suggested next steps
-
Update CI runners (Blocking): Change
depot-ubuntu-24.04todepot-ubuntu-26.04in bothrelease.ymlandbuild-staging.ymlto ensure the build environment matches the target runtime. Ifdepot-ubuntu-26.04runners are not yet available, coordinate with Depot or revert this change until they are. -
Verify binary compatibility: After updating runners, confirm the statically-linked Rust binary runs without issues on Ubuntu 26.04 (glibc version differences can cause runtime failures).
General findings
None beyond the CI runner mismatch noted above.
|
|
||
| # Runtime stage | ||
| FROM ubuntu:24.04 | ||
| FROM ubuntu:26.04 |
There was a problem hiding this comment.
Blocking: Base image version mismatch with CI runners.
Why it matters: The GitHub Actions workflows (release.yml:10, build-staging.yml:22) use depot-ubuntu-24.04 runners. When building this Docker image in CI, the build runs on Ubuntu 24.04 hosts but produces an image targeting Ubuntu 26.04. This creates a testing gap:
- The CI cannot validate that the compiled binary actually runs on Ubuntu 26.04 (glibc, libssl, and other system library versions differ between releases)
- Runtime dependencies installed via
apt-getin the Docker build may behave differently than what the CI host provides - Multi-platform builds for
linux/arm64may not be properly validated if the runner architecture doesn't match
This has caused production incidents in other repositories where binaries compiled against older glibc failed on newer Ubuntu releases, or vice versa.
Suggested fix: Update the CI runner labels to match the target base image:
.github/workflows/release.yml: Changeruns-on: depot-ubuntu-24.04toruns-on: depot-ubuntu-26.04.github/workflows/build-staging.yml: Same change
If depot-ubuntu-26.04 runners are not yet available, either: (a) coordinate with Depot to provision them first, or (b) defer this base image update until they are.
There was a problem hiding this comment.
Summary
This PR updates the Ubuntu base image for the runtime stage from ubuntu:24.04 (Noble Numbat) to ubuntu:26.04 (Resolute Raccoon), the latest LTS release.
Verdict: Approved - this is a straightforward dependency update with no identified blockers.
Research notes
I researched the following to validate this change:
-
Ubuntu 26.04 LTS availability: Confirmed on Docker Hub -
ubuntu:26.04tag exists and was published ~1 month ago with multi-arch support (amd64, arm64, arm/v7). -
GitHub Actions support: Ubuntu 26.04 runner images are available (actions/runner-images), confirming ecosystem readiness.
-
Compatibility analysis:
- Build stage: Uses
cargo-chef:latest-rust-1.93.0-slim(Debian-based) - binary compiled here will be compatible with newer glibc in Ubuntu 26.04 runtime - Runtime dependencies:
ca-certificates,curl,libxml2,tzdataare all available in Ubuntu 26.04 - OpenSSL: Build stage installs
libssl-dev(for compilation), runtime only needsca-certificates- no OpenSSL library version mismatch risk - glibc compatibility: Binaries compiled on older systems work on newer glibc (forward-compatible)
- Build stage: Uses
-
No code changes required: This is a pure infrastructure update - the Rust binary and its dependencies don't require any changes.
Suggested next steps
- Merge this PR - No blocking issues identified.
- Verify CI passes - Ensure the Docker build completes successfully with the new base image.
- Monitor post-deployment - As with any base OS update, watch for unexpected behavior in staging/production during initial rollout.
General findings
None - this is a clean, low-risk dependency update typical of automated maintenance tools like Renovate.
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from ubuntu:24.04 (Noble) to ubuntu:26.04 (Resolute). The change is straightforward - a single-line version bump in the Dockerfile.
Verdict: Needs minor clarification before approval.
Research notes
-
Ubuntu 26.04 LTS availability: Confirmed via Docker Hub that
ubuntu:26.04exists and is actively maintained (codename "resolute", last pushed ~1 month ago). -
Image size difference: Ubuntu 26.04 is noticeably larger than 24.04:
- ubuntu:24.04 (noble): ~28.36 MB (amd64)
- ubuntu:26.04 (resolute): ~39.63 MB (amd64)
- This is a ~40% increase in base image size, which will impact pull times and storage.
-
Package availability: Verified that all runtime packages installed in the Dockerfile are available in Ubuntu 26.04 (resolute):
ca-certificates: ✓ Available (version 20260601~26.04.1)curl: ✓ Availablelibxml2: ✓ Available (version 2.15.2+dfsg-0.1, package namelibxml2-16)tzdata: ✓ Available
-
GitHub Actions runners: The CI workflows currently use
depot-ubuntu-24.04runners. These only affect the build stage (which uses a separate builder imagelukemathwalker/cargo-chef:latest-rust-1.93.0-slim), not the runtime image, so this is not a blocker but worth noting for consistency. -
Ubuntu 26.04 release info: Ubuntu 26.04 LTS "Resolute" is the latest LTS release. The GitHub Actions runner image documentation shows it includes modern tooling (Rust 1.96.0, Node.js 24, Python 3.14, etc.).
Suggested next steps
-
Non-blocking: Consider documenting the rationale for this upgrade in the commit message or PR description (e.g., security patches, newer glibc, alignment with infrastructure standards).
-
Optional consideration: If image size is a concern for your deployment (pull latency, storage costs), consider whether
ubuntu:26.04-minimalor a slim variant might be appropriate, or document that the size trade-off is acceptable. -
Verify in staging: As with any base OS change, ensure the application runs correctly in a staging environment before production rollout, particularly around:
- Any native library compatibility (libxml2 version changed)
- TLS/certificate handling (ca-certificates updated)
- Timezone data (tzdata updated)
General findings
No blocking issues identified. The change is valid and the target image exists with all required packages available. The primary considerations are:
- Image size increase (~11 MB additional) - may impact deployment speed
- Newer glibc and system libraries - generally beneficial but should be tested
- Long-term support alignment - Ubuntu 26.04 LTS will receive security updates until 2031
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from ubuntu:24.04 to ubuntu:26.04. This is an automated dependency update via Renovate.
Verdict: Needs changes — While updating to the latest LTS is generally good practice, Ubuntu 26.04 was released in April 2026 (only 2 months ago), and there's no compelling reason to upgrade from Ubuntu 24.04 LTS which has standard security support until May 2029. The risks of early adoption of a new LTS release outweigh the benefits in this case.
Research notes
- Ubuntu release cycle: Ubuntu 26.04 LTS was released in April 2026 with standard security maintenance until May 2031. Ubuntu 24.04 LTS remains fully supported until May 2029 (standard) and April 2034 (Ubuntu Pro).
- CI/CD runners use
depot-ubuntu-24.04across all workflows (ci.yaml,build-staging.yml,release.yml), meaning the Docker image is built on Ubuntu 24.04 runners but runs on Ubuntu 26.04. - The builder stage uses
lukemathwalker/cargo-chef:latest-rust-1.93.0-slim(Debian-based), so the Rust binary is compiled on Debian and copied into the Ubuntu runtime image.
Suggested next steps
-
Recommended: Pin the runtime to
ubuntu:24.04for stability. Ubuntu 24.04 LTS is well-tested, has 5 years of standard support remaining, and matches the CI runner environment. -
Alternative: If there's a specific requirement for Ubuntu 26.04 (e.g., a package only available in 26.04, security compliance requirement), document the rationale in the PR description.
-
If proceeding with 26.04: Test the Docker image thoroughly in a staging environment to verify:
- The binary runs correctly on Ubuntu 26.04
- All runtime dependencies (
ca-certificates,curl,libxml2,tzdata) are available and compatible - No glibc or library version mismatches occur
General findings
- No breaking changes in the diff: The change is a single-line update to the base image tag.
- Runtime dependencies are minimal: The Dockerfile only installs
ca-certificates,curl,libxml2, andtzdata, which should be available in both versions. - Potential subtle issues: Ubuntu 26.04 may have different default security policies (AppArmor, seccomp), TLS configuration, or library versions that could affect runtime behavior.
- No urgency: Ubuntu 24.04 LTS is not EOL or nearing EOL, so there's no security or support pressure to upgrade.
|
|
||
| # Runtime stage | ||
| FROM ubuntu:24.04 | ||
| FROM ubuntu:26.04 |
There was a problem hiding this comment.
Non-blocking: Consider staying on ubuntu:24.04 for production stability.
Why it matters: Ubuntu 26.04 LTS was released in April 2026, only 2 months ago. While it's the latest LTS, early adoption carries risks:
- Limited real-world testing: Fewer production deployments mean undiscovered bugs may exist
- Tooling compatibility: Some third-party tools or libraries may not yet be fully tested on 26.04
- No urgency: Ubuntu 24.04 LTS has standard security support until May 2029 (3+ years remaining)
The CI runners also use depot-ubuntu-24.04, so keeping the runtime aligned with the build environment reduces potential compatibility issues.
Suggested fix: Revert to FROM ubuntu:24.04 unless there's a specific requirement for 26.04. If upgrading is intentional, document the rationale in the PR description (e.g., specific package requirement, compliance need).
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from ubuntu:24.04 (Noble Numbat) to ubuntu:26.04 (Resolute Raccoon), which is the latest LTS release. The change is a single-line update to the Dockerfile runtime stage.
Verdict: Approved - this is a routine LTS version bump with no identified issues.
Research notes
-
Ubuntu 26.04 LTS validity: Confirmed
ubuntu:26.04tag exists on Docker Hub with multi-arch support (amd64, arm64, arm/v7) -
Runtime dependencies verified: All packages installed in the runtime stage are available in Ubuntu 26.04 (resolute) repositories:
ca-certificates(20260601~26.04.1)curl(8.18.0-1ubuntu2.1)libxml2(2.15.2+dfsg-0.1)tzdata(2026a-3ubuntu1)
-
glibc compatibility: The builder stage uses
lukemathwalker/cargo-chef:latest-rust-1.93.0-slim(Debian-based, glibc 2.36), while the runtime will use Ubuntu 26.04 (glibc 2.43). This is safe - binaries compiled against older glibc versions are backwards compatible with newer glibc. -
Ubuntu 26.04 is an LTS release: According to Ubuntu version history, Ubuntu 26.04 LTS "Resolute Raccoon" follows the LTS naming convention (every fourth release, April of even-numbered years) with 5 years of support.
Suggested next steps
- Test the Docker build: Verify the multi-stage build completes successfully with the new base image
- Run integration tests: Ensure the compiled binary runs correctly on Ubuntu 26.04 runtime
- Consider updating CI runners (optional): The GitHub Actions workflows use
depot-ubuntu-24.04runners - this is separate from the runtime image but could be updated for consistency if the depot-ubuntu-26.04 runners become available
General findings
No issues identified. This is a well-scoped dependency update that:
- Stays within LTS releases (24.04 → 26.04, skipping non-LTS interim releases)
- Maintains backwards compatibility (Debian builder → Ubuntu 26.04 runtime)
- Has all required runtime dependencies available in the target version
- Follows the project's existing pattern of using Ubuntu LTS for runtime images
There was a problem hiding this comment.
Summary
This PR updates the Ubuntu runtime base image from 24.04 to 26.04 in the main Dockerfile. This is a routine dependency update that brings security patches and newer system libraries to the production container.
Verdict: Ready to approve - this is a safe, standard base image update.
Research notes
- Fetched Docker Hub Ubuntu tags: Confirmed
ubuntu:26.04is an actively maintained official image with multi-arch support (linux/amd64, linux/arm/v7, linux/arm64), last pushed 3 days ago. - Ubuntu 26.04 ("Plucky Puffin") is the latest interim release between 24.04 LTS and the next LTS. For container runtimes with minimal system interaction, this is generally safe.
- The dashboard Dockerfile uses
node:24-alpineand is unaffected by this change.
Suggested next steps
- Approve and merge if your CI/CD pipeline validates the Docker build successfully.
- Optional verification: Run a quick smoke test of the built container to ensure the static binary executes correctly on Ubuntu 26.04 (glibc compatibility).
General findings
No issues identified. The change is minimal, well-scoped, and follows best practices for keeping base images current.
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from ubuntu:24.04 to ubuntu:26.04 (Resolute Raccoon), the latest Ubuntu LTS released in April 2026. This is a straightforward dependency update with a single-line change.
Verdict: Ready to approve — no blocking issues identified. The change provides longer support coverage (security maintenance until May 2031) and more recent security patches.
Research notes
- Fetched Ubuntu release cycle documentation: Confirmed Ubuntu 26.04 LTS is supported with standard security maintenance until May 2031 and expanded security until April 2036. Valid upgrade path from 24.04 LTS.
- Fetched Docker Hub ubuntu page: Confirmed
ubuntu:26.04(tagged also asresolute-20260610,resolute,latest) is an official image maintained by Canonical, last updated 3 days ago (from June 22, 2026).
Suggested next steps
- Verify the built container runs correctly in a staging environment before production rollout (standard practice for base image changes)
- Consider monitoring for any glibc-related errors in initial deployments, though none are expected given the builder/runtime combination
General findings
No blocking issues found. The runtime dependencies installed in the Dockerfile (ca-certificates, curl, libxml2, tzdata) are all standard packages available in Ubuntu 26.04. The ubuntu user referenced in line 64 exists in the 26.04 image. The application does not rely on any Ubuntu 24.04-specific features.
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from ubuntu:24.04 to ubuntu:26.04. Ubuntu 26.04 LTS (Resolute Raccoon) was released in April 2026 and is supported until 2031. The change is minimal (single line) and follows standard container maintenance practices.
Verdict: Ready to approve — no blocking issues identified.
Research notes
- Ubuntu 26.04 LTS release notes — Confirmed valid LTS release with 5-year support window (until April 2031)
- Docker Hub ubuntu:26.04 — Official image, actively maintained (last pushed 3 days ago)
- Cargo.toml analysis shows the application uses
rustls(v0.23 withaws-lc-rs) for all TLS operations rather than OpenSSL, meaning the binary is largely statically linked and unaffected by system library changes between Ubuntu versions
Suggested next steps
- Merge this PR after standard CI validation passes
- Consider monitoring deployment metrics for any unexpected behavior (standard practice for any base image change)
General findings
No issues found. The change is appropriately scoped and low-risk:
- Runtime dependencies (
ca-certificates,curl,libxml2,tzdata) are standard packages available in both Ubuntu versions - The rustls-based TLS stack minimizes glibc/system library compatibility concerns
- GitHub Actions runners use
depot-ubuntu-24.04but this is independent of the Docker build image and doesn't require changes
There was a problem hiding this comment.
Summary
This PR updates the Docker runtime base image from Ubuntu 24.04 (Noble Numbat) to Ubuntu 26.04 (Plucky Puffin). The change is a single-line modification in the Dockerfile's runtime stage.
Verdict: Approved with minor considerations noted below.
Research Notes
- Ubuntu 26.04 availability: Confirmed on Docker Hub - tag
26.04exists and was last pushed 3 days ago (as of June 22, 2026) - Release timeline: Ubuntu 26.04 LTS was released in April 2026, making it approximately 2 months old at the time of this PR
- Runtime packages: The installed packages (
ca-certificates,curl,libxml2,tzdata) are standard Ubuntu packages available in both 24.04 and 26.04 repositories - Builder/Runtime mismatch: The builder stage uses
lukemathwalker/cargo-chef:latest-rust-1.93.0-slim(Debian-based), while the runtime is Ubuntu. This is an existing pattern in the codebase and should work correctly since Rust binaries are mostly statically linked.
Suggested Next Steps
- Monitor initial deployments: Since Ubuntu 26.04 is a relatively new LTS release (~2 months old), monitor the first few production deployments for any unexpected behavior
- Consider security scan results: The CI pipeline includes Grype security scanning - verify that the vulnerability count doesn't increase unexpectedly with the new base image
- Optional: Consider pinning to a specific Ubuntu 26.04 point release (e.g.,
ubuntu:26.04is fine, but could also useubuntu:noble-YYYYMMDDstyle tags for reproducibility if desired)
General Findings
No blocking issues identified. This is a routine dependency maintenance update following standard practices. The GitHub Actions runners continue to use depot-ubuntu-24.04, but this does not impact the Docker build since builds occur inside containers using the specified base images.
This PR contains the following updates:
24.04→26.04Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.