Skip to content

Conversation

gerrod3
Copy link
Collaborator

@gerrod3 gerrod3 commented Aug 5, 2025

This should speed up our CI by removing the emulation we were doing before.

@gerrod3
Copy link
Collaborator Author

gerrod3 commented Sep 1, 2025

An overview of the changes:

Switching the CI runners to be by architecture: amd64 or arm64. Now all the images will be built one after another in the same runner as each build takes around 2-3 minutes now that we are not using emulation for the arm images.

The base and build image actions have been updated to this new behavior. Since building is cheap now I removed the GH caching logic we were using for the base-images. Instead we now check if we need to rebuild and if not we pull the latest pushed build to use instead. This should eliminate a lot of redundant pushes we do where no significant changes happened.

The biggest changes are in the publish workflow which now has to account for the two separate runners building the images. We need to reunite the amd & arm images in order to publish them, so we do a temporary upload to ghcr.io and then have a separate job pull the uploads, retag them and do the final manifest push if needed.

Side note: the temporary upload might be a good candidate for using the Pulp service registry. The reason I didn't use the GH cache was because the total of all the images was too large and we could hit the cache limit.

@gerrod3 gerrod3 marked this pull request as ready for review September 1, 2025 10:20
@dralley
Copy link
Contributor

dralley commented Sep 8, 2025

I didn't thoroughly review this (my shell scripting skills are terrible anyway) but this looks reasonable from a high-level view. Removing emulation is hugely beneficial to performance, I did that recently on the createrepo_c / libcomps / libsolv build CI

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants