Release Types
PAC follows Semantic Versioning:- Major release (v2.0.0): Breaking changes, major new features
- Minor release (v0.24.0): New features, non-breaking changes
- Patch release (v0.23.1): Bug fixes, security patches
Prerequisites
Before starting a release:Check CI status
Ensure all CI checks are passing on Verify:
main branch:- Unit tests passing
- E2E tests passing for all providers
- Linting checks passing
- No failing workflows
Verify PAC CI cluster
The PAC CI cluster must be operational:The release pipeline runs on this cluster.
Clear pending PRs
Review and merge or defer any pending pull requests:Consider:
- Critical bug fixes to include
- Features ready for release
- Breaking changes requiring major version bump
Set up GPG signing
Choosing the Version Number
Determine the next version based on changes since the last release:- Patch Release
- Minor Release
- Major Release
When to use: Bug fixes only, no new featuresExample: v0.23.0 → v0.23.1Criteria:
- Only bug fixes merged
- No new features or APIs
- No breaking changes
- Security patches
Release Process
Create the release tag
Tag the release locally with GPG signing:
The tag name must start with
v (e.g., v0.24.0, not 0.24.0).Monitor the release pipeline
Watch the release pipeline execution on the PAC CI cluster:The pipeline:
- Builds binaries for all platforms
- Creates container images for amd64 and arm64
- Publishes to GitHub Container Registry
- Generates release artifacts
- Creates a draft GitHub release
Editing the Release Notes
The release is created as a draft with auto-generated notes. You need to edit it before publishing:Edit the release description
Add a human-written summary highlighting:
- Major features or improvements
- Important bug fixes
- Breaking changes (if any)
- Upgrade notes or migration steps
- Thank you to contributors
Categorize changes
Organize changes into logical categories:
- Features: New functionality
- Enhancements: Improvements to existing features
- Bug Fixes: Fixed issues
- Documentation: Docs improvements
- Dependencies: Dependency updates
- Internal: Refactoring, testing improvements
Publishing the Release
Publish the release
Once you’re satisfied with the release notes:This makes the release public and triggers:
- GitHub notifications to watchers
- Container image publication
- Documentation rebuild
Verify documentation update
The documentation site auto-rebuilds on CloudFlare Pages:
- Stable docs: https://pipelinesascode.com
- Version dropdown should include new version
Update Homebrew formula (if needed)
For major releases, the Homebrew formula may need updating.The formula is at:
https://github.com/openshift-pipelines/homebrew-pipelines-as-codeThe tap auto-updates, but verify:
Post-Release Tasks
Announce the release
Share the release on communication channels:Slack:
- Upstream: #pipelinesascode on TektonCD Slack
- Downstream: Red Hat internal channels (if applicable)
- Twitter/X (if applicable)
- Company blog
Monitor for issues
Watch for bug reports related to the new release:Be prepared to:
- Quickly fix critical bugs
- Create patch release if needed
- Update documentation if unclear
Handling Release Issues
Re-running a Failed Release
If the release pipeline fails:Identify the failure
Check the PipelineRun logs:Common issues:
- GitHub token expired
- Network connectivity issues
- Insufficient cluster resources
Fix the issue
Address the root cause:
- Rotate GitHub token if expired
- Check cluster resources
- Verify network connectivity
Fixing a Bad Release
If you discover issues after publishing: Option 1: Patch Release (Recommended)- Fix the issues
- Create a patch release (e.g., v0.24.1)
- Update release notes to reference the fix
- Mark the release as “Pre-release” in GitHub
- Add a warning in the release notes
- Immediately publish a fixed version
Release Checklist
Use this checklist to ensure all steps are completed:- All CI checks passing on
main - PAC CI cluster operational
- Pending PRs reviewed and merged/deferred
- GPG signing configured and tested
- Local repository up to date (
git fetch -a origin) - Version number chosen (major/minor/patch)
- Release tag created with GPG signature
- Tag pushed to repository
- Release pipeline completed successfully
- Release artifacts verified
- Release notes edited and reviewed
- Breaking changes documented
- Upgrade notes added (if needed)
- Release published (draft removed)
- Documentation site updated
- Release announced on Slack
- Release announced on social media
- GitHub milestone closed
- Next milestone created
Release Schedule
PAC doesn’t follow a fixed release schedule. Releases are created when:- Significant features are ready
- Critical bugs need to be fixed
- Security vulnerabilities are patched
- Community requests a release
Version History
View all releases:Next Steps
Contributing
Learn how to contribute to PAC
Development Setup
Set up your development environment
Testing Guide
Learn how to test changes
Architecture
Understand the PAC architecture