Skip to content

Conversation

@martinemde
Copy link
Contributor

Summary

This PR modernizes the PKS release process with:

  • cargo-dist: Automated binary distribution for multiple platforms (Linux x64/ARM, macOS x64/ARM, Windows)
  • cosign signing: Cryptographic signatures for release artifacts
  • cargo-audit: Security vulnerability scanning as a release gate
  • release-plz: Automated changelog generation and version management

Changes

File Purpose
.github/workflows/release.yml cargo-dist release workflow
.github/workflows/audit.yml cargo-audit security scanning
.github/workflows/release-plz.yml Automated changelog/version PRs
.github/workflows/release-binaries.yml Binary release signing
.github/workflows/ci.yml CI integration for signing and audit
dist-workspace.toml cargo-dist configuration
release-plz.toml release-plz configuration
Cargo.toml Build metadata for cargo-dist

Test plan

  • Review workflow YAML files for correctness
  • Verify cargo-dist configuration matches project structure
  • Test release-plz changelog generation on merge
  • Validate cosign signing works with GitHub OIDC
  • Run cargo-audit to verify no blocking vulnerabilities

Phase 1 of PKS Release Process Modernization

This completes the "Modern Release Tools Setup" and "Security Foundation" epics. Phase 2 (Release Automation Migration) will migrate from custom release logic to cargo-dist automation.

Uses sigstore/cosign-installer@v3 with keyless signing via GitHub OIDC.
Both upload-mac-universal-bin and upload-linux-bin jobs now:
- Install cosign
- Sign release artifacts with cosign sign-blob
- Upload .sig signature files alongside tarballs

Artifacts signed:
- pks-mac.tar.gz (macOS universal)
- x86_64-unknown-linux-gnu.tar.gz
- aarch64-unknown-linux-gnu.tar.gz
Integrates cargo-audit into the CI workflow as a required check that
must pass before releases can proceed. Also updates the standalone
audit.yml to use modern cargo-audit tooling instead of the deprecated
actions-rs/audit-check action.

- Add security-audit job to ci.yml
- Make release job depend on security-audit passing
- Update audit.yml to use cargo-audit directly with actions/checkout@v4
- Add release-plz.yml workflow that creates release PRs with version
  bumps and changelog updates from conventional commits
- Add release-binaries.yml workflow triggered on release publish to
  build and upload macOS/Linux binaries and DotSlash files
- Update ci.yml to remove manual release logic (now handled by
  release-plz) and upgrade checkout actions to v4
- Add release-plz.toml config for changelog generation without
  crates.io publishing
Configure cross-platform release builds targeting x86_64/aarch64 for
Linux and macOS, with shell and PowerShell installers. GitHub Actions
workflow will trigger on version tags.
* polecat/slit-mk4fwcm9:
  Initialize cargo-dist for automated binary distribution
* polecat/furiosa-mk4fvdy1:
  Add cosign binary signing to GitHub Actions release workflow
* polecat/nux-mk4fvufs:
  Add cargo-audit security scanning as release gate
@martinemde
Copy link
Contributor Author

Too big, broken into other PRs.

@martinemde martinemde closed this Jan 7, 2026
@github-project-automation github-project-automation bot moved this from Triage to Done in Modularity Jan 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants