Skip to content

Enable runners from runs-on.com for Aarch64 CI#15007

Merged
straight-shoota merged 2 commits intomasterfrom
infra/runs-on
Sep 17, 2024
Merged

Enable runners from runs-on.com for Aarch64 CI#15007
straight-shoota merged 2 commits intomasterfrom
infra/runs-on

Conversation

@straight-shoota
Copy link
Member

Our previous sponsoring for a CI server from Works On Arm has run out, so we need a replacement to run CI on aarch64 (see https://forum.crystal-lang.org/t/sponsored-servers-for-ci-on-aarch64-running-out/7099).
We might be getting some new sponsoring from Works On Arm, but that hasn't materialized yet. And we would like to get CI workflows running again.

https://runs-on.com is a service that provisions machines on AWS on demand to run workflow jobs.
It triggers when a job is tagged as runs-on and you can configure what kind of machine you like this to run on. The machine specification could likely use some fine tuning (we can use other instance types, and theoretically 8GB should be sufficient). But that'll be a follow-up. For now we know that this works.
We expect this to be more price-efficient setup than renting a fixed server or a CI runner service.

This patch also includes an update to the latest base image. The old arm base images were using Crystal 1.0 and some outdated libraries which caused problems on the new runners (#15005). The build images are based on the docker images from 84codes/crystal.

Thanks to @crohr for providing runs-on.com and helping with some issues we faced while setting this up.

Update to the latest base image. Based on the docker images from
84codes/crystal.
Copy link
Member

@beta-ziliani beta-ziliani left a comment

Choose a reason for hiding this comment

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

🚀

@straight-shoota straight-shoota added this to the 1.13.3 milestone Sep 17, 2024
@straight-shoota straight-shoota merged commit f17b565 into master Sep 17, 2024
@straight-shoota straight-shoota deleted the infra/runs-on branch September 17, 2024 19:17
straight-shoota added a commit that referenced this pull request Sep 17, 2024
https://runs-on.com is a service that provisions machines on AWS on demand to run workflow jobs.
It triggers when a job is tagged as `runs-on` and you can configure what kind of machine you like this to run on. The machine specification could likely use some fine tuning (we can use other instance types, and theoretically 8GB should be sufficient). But that'll be a follow-up. For now we know that this works.
We expect this to be more price-efficient setup than renting a fixed server or a CI runner service.

This patch also includes an update to the latest base image. The old arm base images were using Crystal 1.0 and some outdated libraries which caused problems on the new runners (#15005). The build images are based on the docker images from [84codes/crystal](https://hub.docker.com/r/84codes/crystal).
@crysbot
Copy link
Collaborator

crysbot commented Sep 18, 2024

This pull request has been mentioned on Crystal Forum. There might be relevant details there:

https://forum.crystal-lang.org/t/sponsored-servers-for-ci-on-aarch64-running-out/7099/9

@crohr
Copy link

crohr commented Sep 18, 2024

@straight-shoota great that you managed to make it work! Still not sure about what's happening with the libssl issue though. What was the version on your old runners?

@straight-shoota
Copy link
Member Author

I put some more details in #15005. The lib version was identical (using the same Docker image in both instances). The only significant differences I can think of are CPUs (Neoverse 2 vs. Gravitron), and probably the kernel version (can't check that anymore though).

straight-shoota added a commit to crystal-lang/distribution-scripts that referenced this pull request Sep 21, 2024
These docker files are based on the [images from 84codes](https://hub.docker.com/r/84codes/crystal) and add the specific dependencies required for building the compiler (particularly `libllvm`, `libffi`) and are copied from the existing `alpine.Dockerfile` and `ubuntu.Dockerfile`.

This results in up-to-date build images for `linux/arm64` which we're using for Aarch64 CI in crystal-lang/crystal#15007
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.

4 participants