CI using shared workflow to generate matrix#3549
Merged
Conversation
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.
We advertise our macos CI as macos-arm64, using macos-13.
But when I try to fix the docker base images and nightly build using macos arm64 binaries, turns out macos-13 is a github hosted runner runs on intel machine. All sort of incompatible caches and binaries pops up.
And the github docs confirms it. https://docs.github.com/en/actions/reference/runners/github-hosted-runners#standard-github-hosted-runners-for-public-repositories. Only macos-14 and newer really runs on arm64 machine.
So this shared workflow ensure all our CI matrices in this repo using the same configuration. same matrix for consistency.
Later, a following PR will addressing shared steps in CI jobs using composite workflow to ease maintenance instead each CI script using their own recipes. All CI will use the same basic configuration, e.g. nim compiler, c/c++ compilers, cache keys, cached binaries, test vector, docker things, etc will use shared composite workflow.
Right now we support linux-amd64, linux-arm64, windows-amd64, and macos-arm64(now the label and the binaries are correct).
Later if we want to add windows-arm64 for example, we don't have to go through all CI files, only need to modify one place, and all CI will enjoy the same benefits.