github-workflow-authoring

Create and debug GitHub Actions pipelines for Breenix OS kernel CI/CD.

7|Updated Nov 21, 2015
One-click install
npx skills add https://github.com/ryanbreen/breenix --skill github-workflow-authoring
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: github-workflow-authoring
Source: https://github.com/ryanbreen/breenix/tree/main/breenix-github-workflow-authoring
Command: npx skills add https://github.com/ryanbreen/breenix --skill github-workflow-authoring

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solves? Authoring effective GitHub Actions CI/CD workflows for OS kernels presents unique challenges, including custom Rust targets, QEMU virtualization, and complex build processes. This Skill provides patterns and best practices to create, optimize, and troubleshoot Breenix CI/CD pipelines, ensuring reliable and efficient automated testing.

Core Features & Use Cases

  • Custom Rust Toolchain Setup: Configure specific Rust nightly versions, targets (x86_64-unknown-none), and components (rust-src, llvm-tools-preview).
  • QEMU & System Dependencies: Ensure all necessary virtualization tools and system libraries are installed for kernel testing.
  • xtask Integration: Orchestrate complex kernel test workflows using the xtask pattern for consistent and robust CI runs.
  • Use Case: You need to add a new CI workflow for a critical kernel feature. Use this Skill to quickly set up the correct Rust toolchain, install QEMU, integrate your xtask test command, and configure artifact uploads, ensuring your feature is automatically tested on every push.

Quick Start

Example: Install Rust toolchain

  • name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: nightly-2025-06-24 override: true target: x86_64-unknown-none components: rust-src, llvm-tools-preview

Example: Build userspace tests (CRITICAL for kernel tests)

  • name: Build userspace tests run: | export PATH="$PATH:$(rustc --print sysroot)/lib/rustlib/x86_64-unknown-linux-gnu/bin" cd userspace/tests ./build.sh

Frequently Asked Questions about github-workflow-authoring

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I set up GitHub Actions for kernel CI/CD with custom Rust toolchains?

Configure GitHub Actions workflows using a pinned Rust nightly toolchain (like nightly-2025-06-24) with the x86_64-unknown-none target and components rust-src and llvm-tools-preview. This ensures consistent kernel builds across CI runs and local environments with reproducible compilation.

What system dependencies do I need to test OS kernels in CI with QEMU?

Install qemu-system-x86, qemu-utils, ovmf, mtools, dosfstools, xorriso, nasm, and lld in your GitHub Actions workflow. These tools enable kernel virtualization, disk image creation, and binary linking required for automated kernel testing pipelines.

How do I integrate xtask-based kernel tests into a GitHub Actions workflow?

Add a workflow step that runs your xtask test command after installing dependencies and the Rust toolchain. xtask orchestrates complex kernel test workflows, allowing you to define reproducible test sequences that run consistently in CI and locally.

Can I build and test userspace binaries alongside kernel CI workflows?

Yes. After installing the Rust toolchain, build userspace tests by setting PATH to include rustc's sysroot binaries, then run your userspace build script. Userspace binary testing validates kernel functionality end-to-end within automated CI pipelines.

What's the best way to handle timeouts and artifact uploads in kernel CI workflows?

Configure timeout strategies at the job and step level to prevent hung kernel builds, and use artifact uploads to persist logs and test outputs. This ensures CI pipelines fail fast on hung processes while preserving debugging information for analysis.

How do I cache dependencies across local and GitHub Actions CI environments for kernel builds?

Use GitHub Actions caching for Rust toolchain downloads and system dependencies to avoid reinstalling on every workflow run. Caching reduces CI execution time and synchronizes build environments between local development and continuous integration.