Skip to content
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

Test GNU/Linux ARM builds on the new ARM CI runner #1777

Merged
merged 5 commits into from
Jan 18, 2025

Conversation

EliahKagan
Copy link
Member

While ARM64 runners for macOS have been available, and not limited to enterprise or paid customers, for a while now, free Linux ARM runners for public projects were not likewise available. They are now available in public preview, as of a couple days ago. This PR extends and modifies cy.yml to makes use of them, by:

  • Adding an ubuntu-24.04-arm job to test-fast.
  • Making test-32bit a matrix job definition, and adding a 32-bit ARMv7 job to it. The 32-bit x86 job uses a container on an x86-64 runner, just as before, while the new 32-bit ARM job uses a container on an ARM64 runner. (Although GitHub Actions supports 32-bit ARM runners in the sense that the runner software can run on such a system, there are no GitHub-hosted 32-bit ARM runners..)
  • Removing the test-32bit-cross job, which was not able to run many tests; it was only testing gix-hashtable. Its value seems less now that test-32bit covers ARMv7. However, it may be worth reviewing the specific target, in case it is a goal to continue running some tests with a androideabi target. (If so, it should be possible to add that as a target to a non-cross 64-bit or 32-bit environment.)

This turns the `test-32bit` job into a matrix job definition with
two jobs: the i386 job, which already existed, and a new ARMv7 job,
which is able to run (still without emulation) in a container on
the new ARM64 runner.

As written, this is not expected to work, and is even expected to
break the old job, because I've commented out the code that
installs libraries for the 64-bit host architecture inside the
container to allow the 64-bit Node.js on the host to run in the
container for script steps. This is just to make sure that is still
needed, before attempting to generalize it to cover both platforms.
This is needed so script steps can run Node.js, which is the 64-bit
Node.js on the host. This appears not just to still be the case for
x86, but also for ARM when using containers on the new ARM runners.
It was not able to test as much as was desired, and there is now a
job-level container based way that does a full 32-but ARMv7 test
(facilitated by the new ARM64 runners, which are also able to
execute ARMv7 binaries without emulation).

The new ARM jobs added in the last couple of commits, consisting
of a 64-bit job in `test-fast` and a 32-bit job in `test-32bit`,
increase the total time and resources required to run CI checks.
Removing `test-32bit-cross` only slightly counteracts that. But it
is also less needed now.
@EliahKagan EliahKagan force-pushed the run-ci/arm branch 2 times, most recently from 5589984 to c3d4cff Compare January 18, 2025 11:40
@EliahKagan EliahKagan changed the title Test ARM GNU/Linux builds on the new ARM CI runner Test GNU/Linux ARM builds on the new ARM CI runner Jan 18, 2025
Neither is expected to fail, so this is analogous to most of the
other matrix jobs, such as `test-fast`, with no more of a reason
than there to use `fail-fast: true`. So this removes that.
@EliahKagan EliahKagan force-pushed the run-ci/arm branch 2 times, most recently from c7f5013 to c3d4cff Compare January 18, 2025 12:32
@Byron
Copy link
Member

Byron commented Jan 18, 2025

Thanks a lot for this massive simplification and improvement to the CI setup. I wasn't aware that ARM runners are now available for Linux as well.

The androideabi target probably isn't the most important one particularly given how limited the tests were, and it seems best to wait until there is renewed demand before testing it on CI again.

@Byron Byron merged commit 1e37e95 into GitoxideLabs:main Jan 18, 2025
40 checks passed
@EliahKagan EliahKagan deleted the run-ci/arm branch January 18, 2025 18:55
@EliahKagan
Copy link
Member Author

I've opened #1780 to track the problem described in #1778 (comment) and give what information I know about it. I had seen something like that here when working on this, but had thought or hoped it had gone away.

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