Misc #17720


Cirrus CI to check non-x86_64 architecture cases by own machines

Added by jaruga (Jun Aruga) 6 months ago. Updated 4 months ago.




This ticket is related to the tickets #16234 #16360. But I opened a new ticket because it is related to general non-x86_64 architecture CI cases.

I have a suggestion.

I see the .travis.yml was removed [1], and I also saw another open source project remove their .travis.yml because they could not get the credits to continue to run Travis [2]. I feel Travis is not really a possible option for every open source project for now.

While we have RubyCI, I think we still have a motivation to run a CI on non-x86_64 architectures at a pull-request timing. So, I investigated alternative CI. When checking GitHub Actions, I do not feel it will happen soon on GitHub Actions [3]. Then I found an interesting CI called "Cirrus CI", that might enable us to run CI on non-x86_64 architectures such as Mac M1 (arm) ppc64le and s390x beyond the cloud.

Cirrus CI has 2 types of features: "cloud" and "persistent workers". I see the Cirrus CI "cloud" feature has been used in the QEMU and podman projects [4][5]. It has a unique freeBSD host. However the remarkable feature for the Ruby project is the "persistent workers" [6] announced a few months ago, that is beyond the cloud. Because this feature enables us to use our own machines as a CI running host. You can see the examples running the CI with the machines such as Mac M1, iPhone, ppc64le and s390x on the page [6]. Maybe the used machine does not even have the global static IP. You can see other articles [7][8] too.

I can see some benefits to start Cirrus CI for the Ruby project.

  • Possibly we can check Mac M1 (arm), ppc64le, s390x cases using machines used in RubyCI [9] and someone's machine such as ReiOdaira (Rei Odaira)'s ppc64le/s390x machines at the pull-request timing.
  • When we face the CI issue, we can login to the machine and use the interactive debugging tool such as gdb to fix it.
  • The config file is YAML format and it has the matrix feature [10]. We are familiar with the YAML and matrix.

What do you think? Positive or negative?
Thank you.

[1] ruby removed .travis.yml:
[2] simde removed .travis.yml:
[3] GitHub Actions and ppc64le:
[4] QEMU:
[5] Podman:
[6] The issue ticket of Persistent Workers:
[7] Persistent Workers blog:
[8] Persistent Workers guide:
[9] RubyCI:
[10] Cirrus CI matrix feature:


Also available in: Atom PDF