A minimal SystemRDL project that demonstrates and continuously tests the PeakRDL-check GitHub Action on a hosted runner.
- The released composite action can be consumed from another repository.
- A known register-address change is classified as breaking.
- The action exposes its breaking-change count and uploads its JSON and Markdown reports.
- Pull requests that change SystemRDL files receive the normal review gate.
The smoke test uses the immutable v0.2.0 release so a passing run proves
that exact published version works for consumers.
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: chrismcdev/PeakRDL-check/action@v0.2.0
with:
base-ref: ${{ github.event.pull_request.base.sha }}
head-ref: ${{ github.event.pull_request.head.sha }}
fail-on: breakingSee registers/design.rdl for the project entry point, registers/uart.rdl for the UART block, and the pull-request workflow for the complete configuration.
- Create a branch.
- Change
ctrl @ 0x0toctrl @ 0x40in registers/uart.rdl. - Open a pull request.
PeakRDL-check will annotate the address change, add a job summary, upload the review reports and fail the gate.
This repository can also deploy a register-map viewer for each pull request using Railway PR environments. The preview shows the new register map and its semantic changes; the GitHub Action above remains the CI gate.
To enable previews:
- Create a Railway project from this GitHub repository.
- Generate a Railway domain for the service.
- In Project Settings → Environments, enable PR Environments.
Railway detects the included Dockerfile, posts the preview URL
on each pull request, updates it after new commits, and removes it when the
pull request closes. The container builds registers/design.rdl, compares it
with main, and serves the result on Railway's generated URL. The
preview-entrypoint.sh script performs that one-time
build and then starts the viewer.
registers/design.rdl is the entry point for the complete register map. Add
new RDL source files with `include directives there so both the viewer
and semantic diff compile the whole design.