-
Notifications
You must be signed in to change notification settings - Fork 126
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add CI runners on emulated hardware #458
Conversation
Use a GitHub action to install Alpine Linux for different, less common architectures that are emulated with qemu (apart from x86). Additionally, Alpine Linux is one of those distributions that are based on musl (instead of glibc). This increases coverage for different configurations in CI.
Thanks! Still need to have a closer look. @sylvestre: what do you say? |
why not ? |
Thank you for checking this PR. Which tests should be executed? Are you referring to these: https://github.com/opencollab/arpack-ng/pull/458/checks?notification_referrer_id=NT_kwDOA-DQjrQxMTA3MDUyOTc5OTo2NTA2NTEwMg#step:11:6 |
The compilation (especially of the C++ objects) is pretty slow with qemu. Use ccache to speed up build time on subsequent runs.
I triggered the CI again by a minor change to one comment to check if the The following tables show the duration of the CI runs. Because the With cold cache:
With hot cache (2nd run):
As you can see, using a hot |
Can we afford such build/run times on the CI: @sylvestre what do you think? |
Minutes for GitHub-hosted runners should be free (as in no costs) for open source projects. Please, let me know how to proceed. |
Lgtm I am curious how the testing works? Emulation? |
IIUC, the action from the GitHub marketplace that sets up the Alpine build environment uses In the meantime, GitHub seems to aim at deploying (native) ARM-based Windows and Linux runners for open source projects by the end of this year:
When that happens, the CI rules could probably be adapted to no longer emulate |
Pull request purpose
Use a GitHub action to install Alpine Linux for different, less common architectures that are emulated with qemu (apart from x86).
Additionally, Alpine Linux is one of those distributions that are based on musl (instead of glibc).
This increases coverage for different configurations in CI.
Detailed changes proposed in this pull request
This PR adds GitHub action runners that build on Alpine Linux. It uses an action from the GitHub marketplace to install the required packages and set up
qemu
for subsequent steps (if necessary to emulate the respective architecture).The emulated hardware can be slow. Especially compiling C++ objects seems to take quite some time. In preliminary tests, building ARPACK in the given configuration on emulated hardware took about 30 minutes.
This PR uses
ccache
to try to mitigate that. In preliminary tests, building with a hot cache reduced the build time to about 10 minutes on emulated hardware.Unfortunately, current versions of
ccache
aren't able to cache Fortran objects. So, it is only used for the C and C++ objects.To reduce the minutes that are used by this action, a concurrency rule is used to skip running the action if changes are pushed in quick succession.