This skill should be used when creating or improving GitHub Actions CI/CD workflows for Breenix kernel development. Use for authoring new test workflows, optimizing existing CI pipelines, adding new test types, fixing workflow configuration issues, or adapting workflows for new kernel features.
This skill should be used when creating or improving GitHub Actions CI/CD workflows for Breenix kernel development. Use for authoring new test workflows, optimizing existing CI pipelines, adding new test types, fixing workflow configuration issues, or adapting workflows for new kernel features.
GitHub Workflow Authoring for Breenix
Create and improve GitHub Actions workflows for Breenix OS kernel development and testing.
Purpose
This skill provides patterns, templates, and best practices for authoring GitHub Actions workflows specifically for Breenix kernel development. It addresses the unique challenges of OS kernel CI/CD: QEMU virtualization, custom Rust targets, userspace binary building, timeout management, and kernel-specific test patterns.
When to Use This Skill
Use this skill when:
Creating new test workflows: Adding CI for new kernel features or test suites
Optimizing CI performance: Reducing build times, improving caching, tuning timeouts
Fixing CI failures: Workflow configuration issues, missing dependencies, wrong environment
Adapting workflows: Modifying workflows for new kernel capabilities or test requirements
Debugging CI issues: Understanding why workflows fail, reproducing issues locally
Adding test coverage: Expanding CI to cover more kernel subsystems or scenarios
Key Breenix CI Patterns
Rust Toolchain Requirements
Breenix requires specific Rust configuration:
-name:InstallRustuses:actions-rs/toolchain@v1
with:
toolchain:
nightly-2025-06-24
# Pinned for consistency
override:
true
target:
x86_64-unknown-none
# Custom kernel target
components:
rust-src,
llvm-tools-preview
Critical: The Rust nightly version is pinned to avoid unexpected breakage from compiler changes.
System Dependencies
All kernel tests require QEMU and supporting tools:
jobs:quick-test:timeout-minutes:20# Build + simple smoke testfull-integration:timeout-minutes:45# Complete test suite with shared QEMUcode-quality:timeout-minutes:15# Clippy and static analysis
Rule of thumb: CI environments are 2-3x slower than local development machines. Budget accordingly.
Caching for Performance
Proper caching reduces build times from ~10 minutes to ~2 minutes:
Cache invalidates when Cargo.lock changes, ensuring fresh builds for dependency updates.
Log Artifact Upload
Always upload logs, especially on failure:
-name:Uploadlogsif:always()# Run even if previous steps faileduses:actions/upload-artifact@v4with:name:breenix-logspath:|
logs/*.log
target/xtask_ring3_smoke_output.txt
target/xtask_ring3_enosys_output.txt
if-no-files-found:ignoreretention-days:7
This enables post-mortem analysis of failed runs.
Workflow Patterns
Pattern 1: Smoke Test (Fast Feedback)
Runs on every push to provide quick feedback:
name:Ring-3SmokeTeston:push:branches: [ "**" ]
pull_request:jobs:ring3-smoke:runs-on:ubuntu-latesttimeout-minutes:20steps:-uses:actions/checkout@v4-name:InstallRust# ... (see above)-name:Cachecargo# ... (see above)-name:Installsystemdependencies# ... (see above)-name:Builduserspacetests# ... (see above)-name:Runsmoketestrun:cargorun-pxtask--ring3-smoke-name:Uploadlogsif:always()# ... (see above)