ci: add FreeBSD and OpenBSD builds via vmactions - #570
Open
neilpang wants to merge 1 commit into
Open
Conversation
Cirrus CI shut down on 2026-06-01, which removed the FreeBSD coverage. Add FreeBSD and OpenBSD jobs using the vmactions VM actions, which boot the VM on a regular ubuntu-latest runner and cache the prepared image. Both are directly supported platforms with their own build config in configs/ (mconfig.FreeBSD, mconfig.OpenBSD). Closes davmac314#558
There was a problem hiding this comment.
Pull request overview
This PR restores BSD coverage in the main GitHub Actions workflow by adding FreeBSD and OpenBSD CI jobs using vmactions/*-vm, replacing the previously-lost Cirrus CI coverage.
Changes:
- Add a FreeBSD VM job that builds with
gmakeand runs unit + integration tests. - Add an OpenBSD VM job that builds with
gmakeand runs unit + integration tests. - Upload
src/igr-tests/*/output/*artifacts on failure for both new jobs.
Suppressed comments (2)
.github/workflows/regular_ci.yml:186
- Job id naming is inconsistent with the rest of this workflow (e.g.
Debian-bookworm_build,MacOS-latest_build,Alpine-latest_build). Consider using the same<OS>-<variant>_buildpattern for easier scanning and filtering in the Actions UI.
OpenBSD_build:
.github/workflows/regular_ci.yml:194
- The
archmatrix value is currently unused (it isn't referenced anywhere in the job). Either drop the matrix/strategy or pass the architecture through tovmactions/openbsd-vmvia itsarchinput. The vmactions docs usex86_64as the amd64 value.
strategy:
fail-fast: false # Upload src/igr-tests/*/output/* files in igr-tests
matrix:
include:
- arch: 'amd64'
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| name: igr-tests_output | ||
| path: src/igr-tests/*/output/* | ||
|
|
||
| FreeBSD_build: |
Comment on lines
+151
to
+165
| strategy: | ||
| fail-fast: false # Upload src/igr-tests/*/output/* files in igr-tests | ||
| matrix: | ||
| include: | ||
| - arch: 'amd64' | ||
|
|
||
| steps: | ||
| - uses: actions/checkout@v7 | ||
| - name: Build and test in FreeBSD | ||
| uses: vmactions/freebsd-vm@v1 | ||
| with: | ||
| usesh: true | ||
| cache-after-prepare: true | ||
| prepare: | | ||
| pkg install -y gmake |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #558
Cirrus CI shut down on 2026-06-01, which is what removed the FreeBSD
coverage. This adds FreeBSD and OpenBSD jobs to
regular_ci.ymlusing thevmactionsVM actions suggested in #558 -- they boot the guest underQEMU/KVM on a regular
ubuntu-latestrunner and cache the VM image.Both platforms already carry their own build config
(
configs/mconfig.FreeBSD,configs/mconfig.OpenBSD) and the build picksthem up automatically, which the logs confirm:
NetBSD is left out deliberately: there is no
configs/mconfig.NetBSD, so itis not among the directly-supported platforms listed in BUILD.
Verification
All six jobs green, the existing jobs unaffected:
https://github.com/neilpang/dinit/actions/runs/30680903099
x86_64-unknown-freebsd15.1Passed: 30, Failed: 0amd64-unknown-openbsd7.9Passed: 30, Failed: 0On the cache limit
You raised the cache limit in #558, so here are the measured numbers:
prepareprepareThat total includes
cache-after-prepare: true, which re-caches the imageafter
pkg install gmakeso later runs skip the package install entirely.Dropping that option removes the two "after prepare" entries (~2.6 GB,
leaving ~1.5 GB) at the cost of reinstalling gmake on every run -- a few
seconds. Happy to switch it off if you prefer the smaller footprint.