Documentation
Onboarding
Getting Started
Power & Battery
Hardware & Components
Build & Assembly
Radio & RF Design
Frequencies & Regulations
Firmware & Software
USB & Connectivity
GPS & Navigation
Morse & Communication
Modes & Operation
Field Operations & Rescue
Building Effectively
Build Variants
Project & Reference

The automated checks that gate every change: what CI runs, what CD does, and how to read a failure.

CI/CD

Continuous integration runs the project’s checks automatically on every push and pull request. Continuous deployment publishes the website. Both live in the repository’s GitHub Actions workflows.

The CI checks

CheckWhat it verifies
Firmware buildThe firmware compiles for the ESP32
Firmware testsThe host unit tests pass (see Unit Testing)
Website buildThe Astro site builds, all pages included
Type checkTypeScript passes
Wiki coverageEvery wiki page is registered in the navigation
Link checkNo broken internal links
Content rulesNo emojis or em-dashes in UI source, no AI authorship strings
Documentation setREADME, DATASHEET and CONTRIBUTING exist; the frequency database and technology stack stay merged inside DATASHEET.md

The workflow files

WorkflowFileScope
Website CIwebsite-ci.ymlType check, content gates, build, output verification, security audit, documentation set
Firmware CIfirmware-ci.ymlPlatformIO build, size report, static source checks
PR Quality Checkspr-checks.ymlTitle and commit validation, sensitive-file scan, reviewer assignment
Benchmarksbenchmarks.ymlCompiles the firmware on four runner architectures and times the website build, publishing results

See CONTRIBUTING.md for the full contribution workflow.

The CD step

On main, a successful build deploys the website to the hosting platform automatically. The Deployment page has the details.

Reading a failure

  1. Open the workflow run; the failing job is marked red.
  2. Read the step that failed; the error is usually the last few lines.
  3. Fix locally, push, and the checks re-run on the new commit.

The two golden rules

  1. main stays green: a red CI on main is an incident, not a state.
  2. Checks gate merges: a PR with failing checks does not merge, whatever the code looks like.