CacheKit Docs

High-performance cache policies and supporting data structures.

View the Project on GitHub OxidizeLabs/cachekit

CI/CD release cycle

This document explains how CacheKit’s release cycle works in practice: what runs in CI, what makes main “releasable”, and how a version becomes a GitHub Release and (optionally) a crates.io publish.

For the hands-on, step-by-step release procedure, see Releasing CacheKit.

Mental model

What runs when

Pull requests and pushes to main (.github/workflows/ci.yml)

CI runs on:

What it does (project-specific):

Local equivalents (useful before opening a PR):

cargo fmt
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-features --all-targets
RUSTDOCFLAGS='-Dwarnings' cargo doc --no-deps --all-features

Release automation on tags (.github/workflows/release.yml)

The release workflow runs on:

Important:

What the workflow does:

  1. Verifies the tag commit is reachable from origin/main.
  2. Re-runs full validation: fmt, clippy, tests, docs.
  3. Verifies the crate packages cleanly: cargo package and cargo publish --dry-run.
  4. Creates a GitHub Release (currently using auto-generated release notes).
  5. Optionally publishes to crates.io.

crates.io publishing:

Scheduled maintenance (.github/workflows/maintenance.yml)

Maintenance runs on a schedule and manually (workflow_dispatch) to catch:

Docs site publishing (.github/workflows/jekyll-gh-pages.yml)

On each push to main (or manually), GitHub Pages builds the site from docs/ via Jekyll. This is for the documentation site under the repo’s Pages URL (not cargo doc output).

How a release happens (end-to-end)

1) Prepare a release PR

In a PR that targets main:

2) Merge to main

Merge once CI is green. This keeps main always in a releasable state.

3) Tag the release

Tag the exact commit on main you want to release.

4) Watch the automation

For stable tags, GitHub Actions validates, creates the GitHub Release, and optionally publishes to crates.io if configured.

5) After the release

Troubleshooting