Text
Page: 1
riscv64.rubyci.org internal
Kazuhiro NISHIYAMA
株式会社Ruby開発
RubyKaigi 2025 LT
2025-04-17
Powered by Rabbit 3.0.5
Page: 2
What’s rubyci.org?
A CI results summary site
https://rubyci.org/
Runs chkbuild on various CI environments
https://github.com/ruby/chkbuild
Most environments run all supported Ruby versions.
Some environments run only on the master branch.
JIT variants, Android, riscv64.
1/10
Page: 4
Why do I maintain the riscv64
VM?
I am interested in minor environments and run tests on
them. They may uncover interesting bugs.
qemu-system-riscv64 has become easier to use recently.
When I took over the riscv64 VM,
there was an environment created by mame-san,
but it was slightly outdated.
I made some improvements and will share one of them
here.
3/10
Page: 5
Premise
qemu-system-riscv64 runs on host environments and is
very slow.
CPU emulation with qemu-system takes much longer than running
on real hardware.
Therefore, it runs only on the master branch.
Even so, it can take hours (e.g., 7 hours).
To avoid wasting time by interrupting CI due to reboots, I
devised a way to reboot between CI runs.
4/10
Page: 6
How to run without interruption
unattended-upgrade sometimes requires a reboot
after upgrading packages.
It creates /run/reboot-required.
I allocate an hour for maintenance between chkbuild
runs.
The machine reboots during this time if necessary.
5/10
Page: 7
Guest VM and Host OS
It is relatively easy to wait for the guest VM to reboot
itself.
However, the host OS also needs to handle reboots.
6/10
Page: 8
How to wait?
The guest and host cooperate using a shared directory.
After chkbuild finishes, it updates the mtime of a specific file in the
shared directory.
A custom systemd path unit detects the mtime change
and reboots both the guest and host if necessary.
Pros:
Loose coupling between components.
The notifier requires fewer privileges.
Usually no maintenance is required.
7/10
Page: 9
Are you interested?
If you want Ruby to support your favorite environments
better:
Set up your own CI environment to run chkbuild.
Use start-rubyci in ruby/chkbuild.
Add your results to rubyci.org.
Contact the rubyci.org maintainers to add your chkbuild
output URLs.
If tests fail, fix them, report issues, or take other actions.
8/10
Page: 10
self.introduction
Kazuhiro NISHIYAMA
One of the Ruby Committers
GitHub, etc.: @znz
株式会社Ruby開発 www.ruby-dev.jp
We are hiring!
9/10
Page: 11
株式会社Ruby開発
Powered by Rabbit 3.0.5
10/10