Open
Conversation
Update base Docker image from 24.0.7-alpine3.19 to 25.0.5-alpine3.20. Update Go version from 1.21 to 1.24.0. This prepares the foundation for upgrading dependent components.
…ersions Upgrade accelerated-container-image from v1.0.4 to v1.4.1 for improved performance. Pin overlaybd to a specific commit (6a6651652014bbcc5dd87a49f15ca2638ae9b1dc) and update alpine base image from 3.19 to 3.20. Update buildx from v0.12 to v0.13.1 to leverage latest Docker build improvements.
Update docker/docker package from v20.10.8 to v25.0.5+incompatible to align with the upgraded Docker base image. Update Go module dependencies to resolve transitive dependencies introduced by newer Docker version, including logrus, protobuf, gRPC, and OpenTelemetry libraries. Update documentation URL in storage.go comment to point to current API version (v1.44).
Updated Go versions in multi-stage build to match project requirements: - overlaybd_snapshotter_build: Go 1.21 → 1.23 (overlaybd-snapshotter v1.4.1 requires Go 1.23+) - dockerproxy_build: Go 1.21 → 1.24 (dockerproxy go.mod requires Go 1.24+) - Fixed docker/buildx-bin tag from v0.13.1 (non-existent) to v0.13 (available) These version constraints are dictated by the upstream projects and ensure all components compile successfully in the Docker 25.0.5 environment.
Created 9-phase test suite to validate Docker 25.0.5 upgrade with emphasis on buildpacks API v1.44 compatibility (resolves the "client version 1.52 is too new. Maximum supported API version is 1.43" error). Test phases: - Environment setup and Docker installation - Go build verification and code quality checks - Docker image build with overlaybd compilation - Component version verification - Docker API v1.44 functionality testing - Buildpacks API v1.44 compatibility (critical test) - overlaybd image conversion - Storage management and pruning - End-to-end integration tests All tests passed, confirming Docker 25.0.5 with API v1.44 is ready for deployment.
Documented comprehensive test results from Docker 25.0.5 upgrade validation, including all 9 test phases, version confirmations, and the critical buildpacks API v1.44 compatibility verification. Records the issues encountered during upgrade (Go version constraints, missing buildx tag) and their resolutions. This serves as both validation proof and reference documentation for the upgrade process.
dangra
approved these changes
Feb 7, 2026
Member
dangra
left a comment
There was a problem hiding this comment.
Looks good Jon. The tests are a nice thing to have, it would be ideal to hook the CI with running them in a sprite but that something for another day
Member
Author
|
Yea I'll probably do before I merge probably |
Add comprehensive exclusions for git artifacts, tests, documentation, development files, build artifacts, and IDE configurations. This reduces image size and keeps the build context focused on runtime requirements.
Establish consistent code quality checks with pre-commit hooks for trailing whitespace, YAML validation, and Go formatting. Add corresponding Makefile targets to make linting easily accessible locally.
Replace single monolithic job with three specialized jobs (lint, test, build) that run in sequence with proper dependencies. Add tiered testing capability with workflow_dispatch inputs and smart tier selection based on branch/tag. Implement concurrent cancellation and modern GitHub Actions versions.
Add three-tier test structure supporting different testing scenarios: Tier 1 for fast PR validation, Tier 2 for critical integration tests (including API v1.44 compatibility check), and Tier 3 for full validation. Include test harness with common helper functions, per-tier test scripts, and comprehensive documentation explaining the testing strategy and how to run tests locally and in CI.
Replace hardcoded absolute paths with a portable method that computes the repository root relative to the test script location. This allows tests to run from any working directory and makes the test suite more robust across different execution environments.
Previously, CI would run on all branches when pushed. This caused unnecessary build overhead and noise in logs. By restricting to main and tags, we reduce CI load while maintaining safety checks on PRs and explicit deployments.
Instead of relying on the default entrypoint (which requires --privileged for dockerd setup), explicitly invoke docker and dockerd binaries. This allows version checks to run without elevated privileges while keeping the logic simpler and more direct.
Update the Go version across the build system and documentation to support newer language features and improvements. This upgrade is required for modern dependency compatibility.
Remove CLAUDE.md from Docker build context (it's documentation, not a runtime dependency), add dockerproxy binary to gitignore, and update a GitHub link to reference a specific commit for consistency.
Replace the old sequential test suite (00-08) with a tiered test structure already implemented in tier1/tier2/tier3. The new structure is modular, maintainable, and maps 1:1 to the old scripts. Update README to remove migration notes now that the transition is complete.
Extend the tier1 version check to verify Buildx v0.13.x and Alpine 3.20.x are present in the image, ensuring all critical components are correctly versioned alongside Docker itself.
The buildx binary is now provided via the Alpine base image or Docker installation, eliminating the need for an explicit multi-stage copy. This simplifies the build process and reduces maintenance overhead.
The version check test (tier1/03-version-check.sh) verified component versions that are now effectively guaranteed by the Docker image build itself. Removing this redundant test simplifies the test suite and reduces CI execution time without losing coverage of the actual components present in the image.
Member
Author
|
incorporated into CI with some adjustments. I'll work on some testing within flyctl this week. |
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.
Tinkering with an old conversation about busted buildpacks