Some checks failed
ARM64 Build / Build generic ARM64 disk image (push) Failing after 3s
CI / Go Tests (push) Successful in 1m27s
CI / Shellcheck (push) Failing after 50s
CI / Build Go Binaries (amd64, linux, linux-amd64) (push) Failing after 1m33s
CI / Build Go Binaries (arm64, linux, linux-arm64) (push) Failing after 1m15s
Phase 4 of v0.3 — KubeSolo version bump and CI gating. KubeSolo v1.1.0 → v1.1.5 brings: - New flag --disable-ipv6 (v1.1.5) - New flag --db-wal-repair (v1.1.5) — important for power-loss resilience on edge appliances; surfaced as kubesolo.db-wal-repair in cloud-init - New flag --full (v1.1.4) — disables edge-optimised k8s overrides - Pod egress connectivity fix after reboot (v1.1.4) - Registry config persistence fix (v1.1.5) - k8s 1.34.7, CoreDNS 1.14.3, Go 1.26.2 All three new flags wired into cloud-init: config.go fields, kubesolo.go extra-flag emission, full-config.yaml example. Supply-chain hygiene: - Per-arch checksums: KUBESOLO_SHA256_AMD64 and KUBESOLO_SHA256_ARM64 in versions.env. Replaces the single shared KUBESOLO_SHA256 that couldn't meaningfully verify both binaries at once. - Checksum now applied to the tarball (the immutable upstream artifact) rather than the post-extract binary. CI: - New .gitea/workflows/build-arm64.yaml routes the full kernel + rootfs + disk-image build to the Odroid arm64-linux runner. Triggers on push to main, tags, and manual workflow_dispatch. The boot smoke test is continue-on-error because KubeSolo's first-boot image import deadline fires under QEMU TCG on the Odroid. VERSION bumped to 0.3.0-dev. CHANGELOG entry under [0.3.0-dev] captures all Phase 1-4 work + the known limitations documented in arm64-status.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
74 lines
2.4 KiB
YAML
74 lines
2.4 KiB
YAML
name: ARM64 Build
|
|
|
|
# Triggers on push to main and on tags. Skipped on PRs to keep PR feedback fast;
|
|
# manual via Gitea UI ("Run workflow") if needed.
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
tags: ['v*']
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build-arm64-generic:
|
|
name: Build generic ARM64 disk image
|
|
# Routes to the Odroid self-hosted runner via the arm64-linux label.
|
|
# See docs/ci-runners.md for runner setup.
|
|
runs-on: arm64-linux
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Show host info
|
|
run: |
|
|
uname -a
|
|
nproc
|
|
free -h
|
|
df -h /home /tmp || df -h /
|
|
|
|
- name: Verify build prerequisites
|
|
run: |
|
|
# The Odroid runner ships these via apt; this is a sanity check.
|
|
which gcc make bc bison flex cpio gzip xz wget curl mkfs.ext4 mkfs.vfat \
|
|
sfdisk losetup kpartx grub-mkimage qemu-system-aarch64 git busybox
|
|
ls -la /bin/busybox
|
|
file /bin/busybox | grep -q 'statically linked' || {
|
|
echo "ERROR: /bin/busybox is not statically linked — install busybox-static"
|
|
exit 1
|
|
}
|
|
|
|
- name: Build mainline ARM64 kernel
|
|
# Cached in build/cache/kernel-arm64-generic between runs (persistent
|
|
# working dir on the host runner). First run takes 30-60 min; reruns
|
|
# exit immediately once the .config + Image match.
|
|
run: |
|
|
time make kernel-arm64
|
|
|
|
- name: Build cross-arch Go binaries
|
|
run: make build-cross
|
|
|
|
- name: Prepare generic ARM64 rootfs
|
|
run: sudo make rootfs-arm64
|
|
|
|
- name: Build ARM64 UEFI disk image
|
|
run: sudo make disk-image-arm64
|
|
|
|
- name: Show output artifact
|
|
run: |
|
|
ls -lh output/
|
|
file output/*.arm64.img
|
|
|
|
- name: Boot smoke test (best-effort)
|
|
# KubeSolo's image import deadline can fire under QEMU TCG on the
|
|
# Odroid; the boot itself succeeds through stage 90 every time, but
|
|
# the final "KubeSolo started" health check is timing-sensitive.
|
|
# We mark this continue-on-error until we have KVM or real hardware.
|
|
continue-on-error: true
|
|
run: sudo make test-boot-arm64-disk
|
|
|
|
- name: Upload disk image
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: kubesolo-os-arm64-${{ github.ref_name }}
|
|
path: output/kubesolo-os-*.arm64.img
|
|
retention-days: 90
|