Skip to content

Jphenow/buildpacks#42

Open
jphenow wants to merge 21 commits intomainfrom
jphenow/buildpacks
Open

Jphenow/buildpacks#42
jphenow wants to merge 21 commits intomainfrom
jphenow/buildpacks

Conversation

@jphenow
Copy link
Member

@jphenow jphenow commented Feb 6, 2026

Tinkering with an old conversation about busted buildpacks

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.
@jphenow jphenow requested a review from dangra February 6, 2026 23:04
Copy link
Member

@dangra dangra left a comment

Choose a reason for hiding this comment

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

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

@jphenow
Copy link
Member Author

jphenow commented Feb 7, 2026

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.
@jphenow
Copy link
Member Author

jphenow commented Feb 9, 2026

incorporated into CI with some adjustments. I'll work on some testing within flyctl this week.

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