tektoncd / tektoncd/pipelines-as-code

feat: rework release pipeline to use draft-release model (no manual tag push)

Open
#2,560 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

priority/high tektoncd-migration
Dominant language
Go
Stars
214
Forks
144
Avg merge
2d 11h
Merged PRs (30d)
27

Description

Problem

PAC is moving to the tektoncd GitHub org, which enforces branch protection rules. The current release process requires pushing tags directly (git push refs/tags/v1.2.3), which is blocked under these rules.

Current Flow

  1. Engineer manually runs git tag v1.2.3 && git push refs/tags/v1.2.3
  2. .tekton/release-pipeline.yaml triggers on push to refs/tags/*
  3. Pipeline reads version from git tag --points-at HEAD
  4. GoReleaser runs with prerelease: true (.goreleaser.yml:52) — creates a pre-release; tag must already exist

Problems:

  • Direct tag push is incompatible with branch protection in the tektoncd org
  • prerelease: true creates a pre-release rather than a draft, requiring an already-existing tag
  • No way to trigger the pipeline without a pre-existing tag

Proposed Flow (tektoncd upstream pattern)

This mirrors the approach used by tektoncd/pipeline:

  1. Trigger release via workflow_dispatch (or PAC push to a special branch) with a version input parameter
  2. Pipeline builds binaries, generates manifests, and creates a GitHub draft release (no tag created yet)
  3. Engineer reviews the draft, edits release notes, then publishes → GitHub automatically creates the tag on publish
  4. Branch pushes (release-v1.2.x / stable) continue as today

Files to Change

File Change
.tekton/release-pipeline.yaml Change trigger from refs/tags/* push to workflow_dispatch; accept version as input parameter
.goreleaser.yml:52 Change prerelease: true to draft: true
docs/content/docs/dev/release-process.md Update documented process to reflect draft-release flow

References

  • tektoncd/pipeline release-cheat-sheet and tekton/README for the upstream pattern
  • GitHub docs: Automatically created releases — publishing a draft auto-creates the tag

Acceptance Criteria

  • Release pipeline triggers via workflow_dispatch with a version parameter (no manual tag push required)
  • GoReleaser creates a draft release (not a pre-release)
  • Publishing the draft on GitHub creates the tag automatically
  • Release process docs updated to reflect new flow
  • Works within tektoncd org branch protection rules

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with .tekton/release-pipeline.yaml and .goreleaser.yml at line 52, then compare the referenced tektoncd/pipeline release pattern. Update docs/content/docs/dev/release-process.md alongside the pipeline and GoReleaser changes. Done means workflow_dispatch accepts a version, creates a draft release without a manual tag push, publishing creates the tag, and branch-protection constraints are supported.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, go
Domain
ci-cd, devops, documentation, release
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.