feat: distribute multiplatform images #330
Draft
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.
Contributor Comments
This is a WIP because it was on my mind today and I wanted to stash some reminders for others / future me in case someone takes on this work. Anyone with write access to the repo is welcome to take this over and push commits to the branch, etc. to get this done.
The biggest difficulty with this work is that
docker-py
doesn't yet supportBUILDKIT
per docker/docker-py#2230The way I see it, we have three options:
seiso/easy_infra:latest-opentofu-aws-arm64
,seiso/easy_infra:latest-opentofu-aws-amd64
, etc. 🤮). This would be a workaround, but pretty easy to do as it doesn't requireBULDKIT
, is already baseline supported (i.e. if youtask build
on an arm64 system today, the image that's created is for arm64 as of dbd3a8b), and can be done with GitHub-hosted runners as of Support Linux ARM64 build images actions/runner-images#5631. We'd need to update this matrix to additionally includeubuntu-24.04-arm64
and then updateruns-on:
in line with this documentation. I've already pre-created theubuntu-24.04-arm64
runner in our org it requires authorization of an additional actions spend here in order to use it (it doesn't use our monthly pre-allocated 3,000 minutes).BUILDKIT
and implement something along the lines of the goat's reusable Taskfile.yml and the Dockerfile that cookiecutter-python creates (the latter of which I've already implemented in this branch). It would require tweaks to ourbuild_and_tag
function.docker buildx build
) on the builder's host. I would recommend making ascripts/
dir, creating some helper python scripts in there, and then calling that fromTaskfile.yml
if this is the chosen approach, otherwise theTaskfile.yml
will be massive/too complex.Pull Request Checklist
Thank you for submitting a contribution to our project!
In order to streamline the review of your contribution we ask that you review and comply with the below requirements:
Don't forget our more detailed contribution guidelines here.