Summary
Move the release process (hack/release.sh) to run in-cluster (e.g. as a GitHub Actions workflow or Tekton Pipeline) so that the signing key doesn't need to be stored locally.
Current state
Today, releases are done locally:
./hack/release.sh v1.5.0 --llm
This requires the developer to run the script locally. For task signing (TEP-0091 / tekton.dev/signature), this would also require an ECDSA private key on the developer's machine.
The script:
- Bumps versions and changelog
- Commits, tags, and pushes
- The tag triggers the release workflow which publishes bundles to ghcr.io, signs them with cosign, and builds the git-init image with goreleaser
Goal
Move the full release process (including Tekton Trusted Resources signing) to CI so that:
- No developer needs the private key locally
- Signing is automated and auditable
- The release is fully reproducible
Options
Option A: GitHub Actions release workflow
- Store the signing key as a GitHub secret (
SIGNING_KEY)
- A workflow triggered by a tag (or manual dispatch with version input) runs the full release:
version bump → tkn task sign → commit → bundle push → cosign sign → goreleaser
- Requires
tkn CLI in the workflow (already have setup-tektoncd-cli action)
Option B: Tekton Pipeline (dogfooding)
- Run the release as a Tekton PipelineRun on a cluster
- Signing key stored as a Kubernetes Secret
- Uses
tkn CLI task for signing
- True dogfooding of the catalog
Option C: KMS-based signing
- Use a cloud KMS (GCP, AWS, Azure, Vault) instead of a file-based key
tkn task sign supports KMS via the -m flag:
tkn task sign task.yaml -m=gcpkms://projects/PROJECT/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY
- Most secure, no key material to manage
Recommendation
Start with Option A (simplest, already have the workflow infrastructure), with a path to Option C for production use.
Related
Checklist
Summary
Move the release process (
hack/release.sh) to run in-cluster (e.g. as a GitHub Actions workflow or Tekton Pipeline) so that the signing key doesn't need to be stored locally.Current state
Today, releases are done locally:
This requires the developer to run the script locally. For task signing (TEP-0091 /
tekton.dev/signature), this would also require an ECDSA private key on the developer's machine.The script:
Goal
Move the full release process (including Tekton Trusted Resources signing) to CI so that:
Options
Option A: GitHub Actions release workflow
SIGNING_KEY)version bump →
tkn task sign→ commit → bundle push → cosign sign → goreleasertknCLI in the workflow (already havesetup-tektoncd-cliaction)Option B: Tekton Pipeline (dogfooding)
tknCLI task for signingOption C: KMS-based signing
tkn task signsupports KMS via the-mflag:Recommendation
Start with Option A (simplest, already have the workflow infrastructure), with a path to Option C for production use.
Related
Checklist
tkn task signto the release process