Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Continuous integration

Note

Project policy: draft. This page is the only home of Shiin’s CI rules.

Workflows

WorkflowWhen it runsWhat it does
ci.ymlPull requests and pushes to mainFormatting, lints, and tests on each platform tier; release latency measurements on Linux and macOS; isolated engine WebAssembly check; the minimum supported Rust version; cargo deny; and a check that every action is pinned by commit
docs.ymlPull requests, pushes to main, and manual dispatchDocumentation checks, stale-specification warnings, intent measurements, dependency checks, and book publication from main
robustness.ymlPull requests and pushes to mainNative key-store lifecycle checks on Linux, macOS, and Windows; bounded parser fuzzing and pure wire-type tests under Miri on a dated nightly
release.ymlPull requests and a version tagBuilds and qualifies five Unix targets, generates SBOMs and dependency metadata, attests archives, and publishes tagged releases; generated by dist and repaired by cargo xtask release-ci-fix
sbom.ymlManual dispatchProduces an additional JSON CycloneDX diagnostic as a build artifact
link-health.ymlWeekly and manual dispatchChecks public links with bounded concurrency and updates one bot-owned issue when links fail

Tests run on Tier 1 platforms as a blocking check, and on Tier 2 without blocking; see platform support.

Permissions

The docs workflow has read-only contents permission and does not persist checkout credentials.

Regenerating the release workflow

release.yml is generated by dist generate and repaired by the repository’s Rust automation:

$ dist generate
$ cargo xtask release-ci-fix
$ cargo xtask release-ci-fix --check

The ci.yml pin and generated-template checks fail if regeneration leaves a tag reference or omits the expected archive/SBOM qualification.

Third-party actions

Third-party actions are pinned by commit SHA, with the release tag in a comment.

Nightly jobs

Nightly jobs use a dated nightly named in the workflow, updated by pull request.