Skip to content

feat: Add automated release workflows with waybill SBOM generation - #107

Open
mfahlandt wants to merge 1 commit into
cncf:mainfrom
mfahlandt:release-automation
Open

feat: Add automated release workflows with waybill SBOM generation#107
mfahlandt wants to merge 1 commit into
cncf:mainfrom
mfahlandt:release-automation

Conversation

@mfahlandt

@mfahlandt mfahlandt commented Aug 26, 2026

Copy link
Copy Markdown
Member

Description

Automates the release process, which was previously fully manual (build dist/, tag, create the GitHub Release by hand).

This PR adds two GitHub Actions workflows and documentation:

  • .github/workflows/release.yml — triggered on v* tag push:
    1. Verify: npm ci, build, lint, test, and checks that the committed dist/ bundle matches a fresh ncc build (fails if npm run pack was forgotten before tagging)
    2. SBOM: generates an SPDX 2.3 SBOM with waybill (pinned version, SHA256-verified download)
    3. Signing: signs the SBOM with cosign (keyless via GitHub OIDC) and creates a SLSA build provenance attestation
    4. Release: publishes a GitHub Release with auto-generated notes and the SBOM + signature bundle + provenance attached. Tags containing -rc/-alpha/-beta are marked as pre-releases automatically.
  • .github/workflows/pre-release.yml — manual workflow_dispatch for release candidates: creates the tag from the chosen branch and publishes a pre-release using the same verification and SBOM pipeline. The tag pushed by this workflow does not re-trigger release.yml (GitHub suppresses recursive GITHUB_TOKEN triggers).
  • docs/releasing.md — describes the release process, including how to verify the SBOM signature (cosign verify-blob) and provenance (gh attestation verify); linked from README.md and docs/overview.md.

All third-party actions are pinned by commit SHA; the waybill binary download is verified against a pinned SHA256.

Fixes # (no issue)

Testing

  • Validated YAML syntax of both workflows
  • Tested waybill SBOM generation locally against this repository: valid SPDX 2.3 output with 648 packages including license enrichment (deps.dev / ClearlyDefined)
  • Verified the pinned waybill tarball SHA256 and archive layout used by the install step

Checklist:

  • I ran npm run all to lint and build my code (no source code changes — workflows and docs only)
  • Note any new dependencies these changes bring in: CI-only tools — waybill (SHA256-pinned binary), cosign, actions/attest-build-provenance, softprops/action-gh-release (all pinned by commit SHA). No npm dependencies added.
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation (docs/releasing.md, README.md, docs/overview.md)
  • My changes generates no new warnings

@mfahlandt
mfahlandt requested a review from jpmcb as a code owner August 26, 2026 22:21
Adds two GitHub Actions workflows to automate the release process:

- release.yml: triggered on v* tag push. Verifies build/lint/test and
  that the committed dist/ bundle is up to date, generates an SPDX 2.3
  SBOM with waybill, signs it with cosign (keyless) and attaches SLSA
  build provenance, then publishes a GitHub Release with the SBOM
  artifacts.
- pre-release.yml: manual workflow_dispatch for release candidates.
  Creates the tag and publishes a pre-release with the same
  verification and SBOM pipeline.

Also adds docs/releasing.md describing the release process.

Signed-off-by: Mario Fahlandt <mfahlandt@pixel-haufen.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant