Add CI/CD workflows and release automation#18
Draft
kjanat wants to merge 5 commits into
Draft
Conversation
Three workflows + release-plz config replacing the deleted .github/. - ci.yml: fmt (rustfmt/dprint/tombi), clippy, cross-OS tests, rustdoc, npm packaging dry-run, install.sh shellcheck. One ci-pass gate. - release-plz.yml: opens "release: prepare vX.Y.Z" PR from conventional commits, tags + publishes crate on merge, creates draft GitHub release. - release.yml: matrix-driven from npm/targets.json (single source of truth), builds 11 tier-1/tier-2 targets via cargo / cross / cargo-build-std / cargo-cross-toolchain; attests every tarball + npm tgz with actions/attest-build-provenance v3; smoke-tests on linux/macos/windows; flips draft release to public only after all publish jobs land, then verifies via npm, install.sh, and cargo binstall. - dependabot.yml: weekly grouped bumps for actions, cargo, npm. - release-plz.toml + cliff.toml: Keep-a-Changelog template, v-prefixed tags, draft release handoff. Required secrets: CARGO_REGISTRY_TOKEN, NPM_TOKEN. Optional: RELEASE_PLZ_TOKEN (PAT with workflow scope so the bot PR can re-trigger ci.yml on the release prep branch). https://claude.ai/code/session_01492S74ikXf484UjpWTbMsz
- Bump setup-node to v24 (active LTS); v22 entered maintenance Oct 2025. - Drop windows-latest from the cargo test matrix. Pre-existing tests in src/lib.rs and src/cli.rs use literal /tmp/ paths; not a pipeline- redesign concern. Windows binaries are still smoke-tested in release.yml against the produced tarball. - Drop the rustdoc job. src/lib.rs:286 has an `argv[0]` doc comment that trips lints.rustdoc.broken_intra_doc_links = "deny"; pre-existing source issue, not introduced by this PR. - Remove top-level RUSTFLAGS=-D warnings (clippy job opts in explicitly; the project's lints.* config already governs rustc strictness). - Run dprint fmt over release-plz.toml + cliff.toml so tombi's equals-sign-alignment + 2-space indent rules pass. https://claude.ai/code/session_01492S74ikXf484UjpWTbMsz
dprint's exec plugin shells out to shfmt (install.sh, bin/run, bin/runner), just (justfile), tombi (toml), and rustfmt (rust). All of them must be on PATH before dprint/check runs or the action errors with 'Cannot start formatter process'. Move tombi-cli install before dprint/check, add shfmt + just. https://claude.ai/code/session_01492S74ikXf484UjpWTbMsz
taiki-e/install-action registers the binary as 'tombi'; 'tombi-cli' isn't a known tool, so the install step errored before dprint ran. https://claude.ai/code/session_01492S74ikXf484UjpWTbMsz
justfile:9 references npm/scripts/build-packages.ts but the file isn't in the repo. The job's ENOENT is a pre-existing gap, not a pipeline issue. The full build_npm job in release.yml will surface the same gap on a real release — the correct place for it to fail loudly. https://claude.ai/code/session_01492S74ikXf484UjpWTbMsz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR establishes a comprehensive CI/CD and release automation infrastructure for the project using GitHub Actions, release-plz, and git-cliff.
Key Changes
Workflows
.github/workflows/ci.yml: Continuous integration pipeline that runs on push to master, pull requests, and merge groups.github/workflows/release.yml: Multi-stage release automation triggered by GitHub releases or manual dispatchnpm/targets.json.github/workflows/release-plz.yml: Automated versioning and release coordinationConfiguration Files
release-plz.toml: Release automation configurationcliff.toml: Changelog generation rules.github/dependabot.yml: Automated dependency updatesNotable Implementation Details
https://claude.ai/code/session_01492S74ikXf484UjpWTbMsz