ci: cross-build the daemon for each release target (#269)

* ci: cross-build the daemon for each release target

* ci: use Android anet linker compatibility flag

* ci: skip BSD VMs for build-only targets

* ci: FreeBSD and OpenBSD on ARM64 run the workloads in ARM64 VMs, not only build

* docs: the BSDs on ARM64 run the workloads too, and every target's daemon is built in CI

* ci: use tar sync for FreeBSD arm64 VM

---------

Co-authored-by: Austin L. <86896075+rvnminers-A-and-N@users.noreply.github.com>
This commit was merged in pull request #269.
This commit is contained in:
excho0andrvnminers-A-and-N authored and GitHub committed 2026-10-15 04:42:04 +03:00
1 parent 120d8c110b
commit 52d7cd6950
3 files changed
+34 -8

No files matched your search

+30 -5
View File
@@ -140,6 +140,12 @@ jobs:
run: |
test "$(go env GOOS)" = "${{ matrix.goos }}"
test "$(go env GOARCH)" = "${{ matrix.goarch }}"
- name: Build the daemon for the release target
env:
CGO_ENABLED: "0"
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
run: go build ./apps/sisyphusd
- name: Check known-answer workloads
run: >-
go test ./packages/runtime
@@ -149,7 +155,8 @@ jobs:
# has no runner of: the tests are compiled for each and run in an emulator
# of the processor, on the Android build's own processor (loaded by Linux's
# loader, since it asks for Android's, which it needs only to be placed in
# memory), or in a virtual machine of the BSD. s390x is big-endian, so it shows that an answer does
# memory), or in a virtual machine of the BSD, an emulated ARM64 one for
# FreeBSD and OpenBSD on ARM64. s390x is big-endian, so it shows that an answer does
# not depend on byte order.
workload-elsewhere:
strategy:
@@ -163,7 +170,9 @@ jobs:
- {runner: ubuntu-26.04, goos: linux, goarch: loong64, via: qemu-loongarch64}
- {runner: ubuntu-26.04, goos: linux, goarch: "386", via: ""}
- {runner: ubuntu-26.04-arm, goos: android, goarch: arm64, via: /lib/ld-linux-aarch64.so.1}
- {runner: ubuntu-26.04, goos: freebsd, goarch: arm64, via: vm}
- {runner: ubuntu-26.04, goos: freebsd, goarch: amd64, via: vm}
- {runner: ubuntu-26.04, goos: openbsd, goarch: arm64, via: vm}
- {runner: ubuntu-26.04, goos: openbsd, goarch: amd64, via: vm}
- {runner: ubuntu-26.04, goos: netbsd, goarch: amd64, via: vm}
name: workload-elsewhere (${{ matrix.goos }}, ${{ matrix.goarch }})
@@ -182,27 +191,43 @@ jobs:
GOARCH: ${{ matrix.goarch }}
GOARM: "7"
run: go test -c -o packages/runtime/runtime.test ./packages/runtime
- name: Build the daemon for the release target
env:
CGO_ENABLED: "0"
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
GOARM: "7"
run: |
if [ "$GOOS" = android ]; then
# Match build-release.sh: anet uses a standard-library linkname on Android.
go build -ldflags=-checklinkname=0 -o "$RUNNER_TEMP/sisyphusd" ./apps/sisyphusd
else
go build -o "$RUNNER_TEMP/sisyphusd" ./apps/sisyphusd
fi
- name: Install the emulator
if: startsWith(matrix.via, 'qemu')
run: sudo apt-get update && sudo apt-get install -y qemu-user
- name: Run the known-answer workloads
if: matrix.via != 'vm'
if: matrix.via != 'vm' && matrix.via != 'build-only'
working-directory: packages/runtime
run: ${{ matrix.via }} ./runtime.test -test.v -test.run "$KNOWN_ANSWERS"
- name: Run the known-answer workloads on FreeBSD
if: matrix.goos == 'freebsd'
if: matrix.goos == 'freebsd' && matrix.via == 'vm'
uses: vmactions/freebsd-vm@v1
with:
arch: ${{ matrix.goarch == 'arm64' && 'aarch64' || '' }}
sync: ${{ matrix.goarch == 'arm64' && 'tar' || 'rsync' }}
envs: KNOWN_ANSWERS
run: cd packages/runtime && ./runtime.test -test.v -test.run "$KNOWN_ANSWERS"
- name: Run the known-answer workloads on OpenBSD
if: matrix.goos == 'openbsd'
if: matrix.goos == 'openbsd' && matrix.via == 'vm'
uses: vmactions/openbsd-vm@v1
with:
arch: ${{ matrix.goarch == 'arm64' && 'aarch64' || '' }}
envs: KNOWN_ANSWERS
run: cd packages/runtime && ./runtime.test -test.v -test.run "$KNOWN_ANSWERS"
- name: Run the known-answer workloads on NetBSD
if: matrix.goos == 'netbsd'
if: matrix.goos == 'netbsd' && matrix.via == 'vm'
uses: vmactions/netbsd-vm@v1
with:
envs: KNOWN_ANSWERS
+2 -2
View File
@@ -29,12 +29,12 @@ Pushing a tag such as `v0.1.0` makes GitHub build `sisyphusd` and publish the bi
| NetBSD | x86-64 |
| Android | ARM64, for use in a terminal such as Termux |
The whole test suite runs on Linux x86-64. The known-answer workloads, which have to give the same result wherever they run, are also run on every other row of the table but OpenBSD and FreeBSD on ARM64:
The whole test suite runs on Linux x86-64. The known-answer workloads, which have to give the same result wherever they run, are also run on every other row of the table, and every row's daemon is built:
- on GitHub's own Linux, Windows and macOS machines, on x86-64 and ARM64;
- under an emulator for Linux's other processors;
- natively for Android;
- in virtual machines for FreeBSD, OpenBSD and NetBSD.
- in virtual machines for FreeBSD, OpenBSD and NetBSD, emulated ARM64 ones for FreeBSD and OpenBSD on ARM64.
Solaris, illumos, AIX, Plan 9 and NetBSD on ARM64 are not built because a dependency does not support them.
+2 -1
View File
@@ -15,7 +15,8 @@ mkdir -p "$out"
# Every target here builds without a C toolchain. The whole test suite runs
# on linux/amd64; the known-answer workloads also run on each of Linux,
# Windows and macOS on x64 and arm64, on Linux's other processors under an
# emulator, on Android's arm64, and on the BSDs in virtual machines (the
# emulator, on Android's arm64, and on the BSDs in virtual machines, ARM64
# ones included, and each target's daemon is built (the
# workload-architecture and workload-elsewhere jobs in ci.yml). Not built:
# NetBSD on arm64, Solaris, illumos, AIX and Plan 9 (a dependency does not
# support them), and iOS and Android on x86, which need a platform SDK.