Skip to content

Add arm64 support to CI Docker builds#2

Open
ChrisLovering wants to merge 7 commits into
mainfrom
ci/arm64-builds
Open

Add arm64 support to CI Docker builds#2
ChrisLovering wants to merge 7 commits into
mainfrom
ci/arm64-builds

Conversation

@ChrisLovering

Copy link
Copy Markdown
Member

Builds and pushes multi-platform Docker images for both amd64 and arm64.

@ChrisLovering ChrisLovering requested a review from jb3 June 23, 2026 21:33
Comment thread versions.toml
Comment on lines +54 to +55
- name: Set up QEMU
uses: docker/setup-qemu-action@v4

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Is this still needed?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Yeah, this job still builds the builder-base image with qemu emulation. The base image is pretty quick so the emulation is fine for this one

ghcr.io/python-discord/python-builds:builder-base
ghcr.io/python-discord/python-builds:builder-base-${{ needs.pyenv-version.outputs.pyenv_version }}

- name: Run Docker container to resolve versions

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Was there no reason to run this script inside Docker in the first place?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

yeah, previously pyenv was only available in the base image, so running it in docker meant we didn't have to install pyenv.

Previous we had to build the docker image to know what to build, this caused bugs since the main image always used the base builder image from ghcr, rather than what was on a PR.

Comment on lines +100 to +101
ghcr.io/python-discord/python-builds:${{ inputs.tag }}-linux-amd64 \
ghcr.io/python-discord/python-builds:${{ inputs.tag }}-linux-arm64

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Is there a way to avoid hard-coding the platforms here?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Not easily, GitHub Actions doesn't natively aggregate matrix job outputs, so there's no clean way to pass the platform list from the build matrix into merge.

Since the platforms are tied to the available runner types (both defined in the same file), I think this acceptable vs adding a lot of complexity to not hard code here.

@MarkKoz

MarkKoz commented Jun 25, 2026

Copy link
Copy Markdown

Why is the value not evaluated in the name of the skipped steps? They all look like this verbatim:

Merge ${{ inputs.version }} manifests

@ChrisLovering

Copy link
Copy Markdown
Member Author

Why is the value not evaluated in the name of the skipped steps? They all look like this verbatim:

Merge ${{ inputs.version }} manifests

The github interpolation only happens when the step is evaluated, if it's skipped Github is lazy and doesn't expand the template

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