Skip to content

Add CI pipelines, nightly LKL builds, and documentation#1

Merged
jserv merged 2 commits intomainfrom
infrastructure
Mar 19, 2026
Merged

Add CI pipelines, nightly LKL builds, and documentation#1
jserv merged 2 commits intomainfrom
infrastructure

Conversation

@jserv
Copy link
Contributor

@jserv jserv commented Mar 19, 2026

Nightly workflow (build-lkl.yml) builds liblkl.a for x86_64 and aarch64 in parallel, checks upstream lkl/linux HEAD to skip redundant rebuilds, and publishes to the lkl-nightly release on sysprog21/kbox with delete-then-create semantics.

Build-and-test workflow (build-kbox.yml) splits unit tests from integration tests for parallelism: unit tests run immediately (no LKL dependency) while the build job fetches LKL, compiles, and prepares the rootfs.

fetch-lkl.sh now fetches from sysprog21/kbox lkl-nightly release instead of querying lkl/linux releases. Auto-detects host arch.

Also adds LKL API surface doc, threading mode analysis, LSAN suppression file for known LKL leaks, and ABI warning on manually-declared struct lkl_disk.


Summary by cubic

Adds CI for build/test and a nightly LKL builder that publishes prebuilt liblkl.a for x86_64 and aarch64. Speeds up testing, pins a consistent LKL, and documents our LKL interface and threading model.

  • New Features

    • Nightly LKL build: builds liblkl.a for x86_64/aarch64, skips if upstream lkl/linux HEAD unchanged, verifies required symbols, publishes to lkl-nightly on sysprog21/kbox.
    • CI for kbox: unit tests run in parallel with build; integration + stress tests run on artifacts; ASAN/UBSAN enabled with LSAN suppressions.
    • fetch-lkl.sh: pulls from sysprog21/kbox lkl-nightly, auto-detects host arch, optional SHA256 check.
    • Makefile: auto-installs git hooks via install-hooks (wired into all); keeps auto-fetch of LKL.
    • Docs: LKL API surface and threading modes added; ABI warning on manual struct lkl_disk.
  • Migration

    • CI runs on pushes to main/infrastructure and nightly at 03:00 UTC; no action needed.
    • Local builds unchanged; to refresh LKL: remove lkl-<arch> and run make fetch-lkl.
    • For local ASAN runs, set LSAN_OPTIONS=suppressions=scripts/lsan-suppressions.txt.
    • When upgrading LKL, verify struct lkl_disk layout against upstream.

Written for commit ae560ae. Summary will update on new commits.

The all target now depends on .git/hooks/pre-commit, which is
created by install-hooks. This ensures git hooks are active
after the first make invocation without manual setup.

Change-Id: Ia11781ed707d69ed70921580c93f0a65ff77d667
cubic-dev-ai[bot]

This comment was marked as resolved.

Nightly workflow (build-lkl.yml) builds liblkl.a for x86_64 and aarch64
in parallel, checks upstream lkl/linux HEAD to skip redundant rebuilds,
and publishes to the lkl-nightly release on sysprog21/kbox with
delete-then-create semantics.

Build-and-test workflow (build-kbox.yml) splits unit tests from
integration tests for parallelism: unit tests run immediately (no LKL
dependency) while the build job fetches LKL, compiles, and prepares the
rootfs.

fetch-lkl.sh now fetches from sysprog21/kbox lkl-nightly release instead
of querying lkl/linux releases. Auto-detects host arch.

Also adds LKL API surface doc, threading mode analysis, LSAN suppression
file for known LKL leaks, and ABI warning on manually-declared struct
lkl_disk.

The cache key derived from lkl-sha256.txt (currently comments-only) is
effectively static, and restore-keys can serve stale artifacts that
fetch-lkl.sh never validates. The nightly tarball is small enough that
fetching it each run is simpler and always correct.

Change-Id: Id36c47d6a304ea0c2bed3355e1d293a6c32542d4
@jserv jserv merged commit 61bd21e into main Mar 19, 2026
6 checks passed
@jserv jserv deleted the infrastructure branch March 19, 2026 07:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant