This document explains the process to release new versions.
NOTE: From v0.54.0, while plugin-arch piped (aka. pipedv1) reaches alpha status, the pipe-cd/pipecd release tab change from only PipeCD release to be multi modules releases. PipeCD and plugins releases are both available at the release tab.
Versions are expressed as vX.Y.Z;
Xis the major versionYis the minor versionZis the patch version
- Major releases: arbitrary timing
- Minor releases: roughly every 2 months
- Patch releases: roughly every 2-3 weeks
Note: The team can release Release candidates(vX.Y.Z-rcXYZ) for versions at any time for early access/testing.
This refers to the release of new features or breaking changes.
-
Run
make release.This example assumes that
vX.Y.Zwill be released:make release version=vX.Y.Z
The
RELEASEfile will be updated and docsvX.Y.xwill be generated. -
Push the above changes and create a pull request to confirm the changelog. You can confirm the changelog through the reviewing comment in the pull request by actions-gh-release.
-
Get reviews and merge.
-
Before cutting a new release, wait for all jobs in GitHub Actions to pass on the master branch.
-
Create a tagged release from the master branch. The release should start with "v" and be followed by the version number.
This refers to the release of new features (breaking change may be included).
Please refer to Major release for the processes.
This refers to the release of critical bug fixes.
A bugfix for a functional issue (not a data loss or security issue) that only affects an alpha feature does not qualify as a critical bug fix.
This may also contain some minor features, but ensure that it does NOT contain any breaking changes.
ghis needed to be installed and rangh auth login. Please refer to cli/cli.
-
Create a pull request to fix a bug on the
masterbranch. -
Get reviews and merge.
-
Run
make release/init.make release/init version=vX.Y.Z
The
RELEASEfile will be updated. -
(Optional) if the patch contains changes with docs update, also need to run
make release/docsmake release/docs version=vX.Y.Z
Note: You can use
make release version=vX.Y.Zcommand to perform both init and docs sync tasks. -
Push the above changes and create a pull request to
masterto confirm the changelog. -
Get a review and merge.
-
Put labels of
cherry-pickandvX.Y.Zto the PR of updating theRELEASEfile to prevent conflicts. -
Run
cherry_pickworkflow- Label the merged PR you want to cherry pick with
cherry-pick,vX.Y.Z(e.g. v0.48.6 https://github.com/pipe-cd/pipecd/pulls?q=is%3Apr+label%3Acherry-pick+is%3Aclosed+label%3Av0.48.6) - Execute the
cherry_pickGitHub workflow withrelease branchandrelease versionon master branch. (e.g. if you want to release v0.48.6,release branchisrelease-v0.48.xandrelease versionisv0.48.6)
- Label the merged PR you want to cherry pick with
-
If you have some trouble with the above, run release pick commits on local machine.
This example assumes that the name of a release branch is
release-vX.Y.xand the numbers of pull request are#1234and#5678:make release/pick branch=release-vX.Y.x pull_numbers="1234 5678" -
Get a review and merge.
-
Before cutting a new release, wait for all jobs in GitHub Actions to pass on the release branch.
-
Create a tagged release from the release branch
release-vX.Y.x. The release should start with "v" and be followed by the version number.
- Prepare: Ensure all changes you want to attach to the release are available in the release target branch (
masterfor the minor,release-vX.Y.xfor the patch). For the patch, please refer to Backport fixes and Release note - Move on to Releases > Draft a New Release.
- Set values as below:
Choose a tag: Create a new tagvX.Y.Z-rcNTarget(branch): usemasterfor the minor rc, userelease-vX.Y.xfor the patch rcRelease title:Release vX.Y.Z-rcN- Body area
- Copy from the previous rc-release note.
- Modify the version of
> Note: This is a candidate release of vX.Y.Z.if needed. - Modify the version of
## Changes since. - List Changes:
-
Extract commits to include by the below commands.
$ PREVIOUS_TAG=v0.46.0-rc1 # Set the previous release tag $ git log $PREVIOUS_TAG..HEAD --oneline | awk '{$1=""; print substr($0, 2)}'
output(from newer to older):
Add reference to the blog that shows how to install control plane on ECS (#4746) Update copyright (#4745) ... Add docs for SCRIPT_RUN stage (#4734) -
Classify the changes into 'Notable Changes' and 'Internal Changes'.
-
Write them to the body area.
-
- Select
Set as a pre-release, notSet as the latest release.
- Push
Publish Release.
Currently, pipedv1 is in experimental (aplha) status, so the release is done by maintainers team.
Pipedv1 releases is done by publish_pipedv1_exp github actions.
| Name | Description | Required | Example |
|---|---|---|---|
| version | The version of the pipedv1 to release. | yes | v1.0.0-rc0 |
Piped's plugins are versioned independently from PipeCD. This means that the plugin version is not related to the PipeCD version.
NOTE: Plugin releases mentioned in this document are only plugins maintained by the maintainers team. For community plugins, please refer to the community plugin's repository for release information.
Piped's plugins version follow semantic versioning (same as PipeCD).
There is no release cycle for plugins. Maintainers team will release new versions of plugins when there are new features or bug fixes.
Plugins releases is done by plugin_release github actions.
| Name | Description | Required | Example |
|---|---|---|---|
| version | The version of the plugin to release. | yes | v0.1.0 |
| path | The path of the plugin to release. | yes | pkg/app/pipedv1/plugin/kubernetes |
NOTE: Release for piped plugin SDK is available at piped-plugin-sdk-go repo.
The piped plugin SDK are versioned independently from PipeCD. This means that the plugin version is not related to the PipeCD version.
The piped plugin SDK version follow semantic versioning (same as PipeCD).
There is no release cycle for piped plugin SDK. Maintainers team will release new versions when there are new features or bug fixes.
Piped plugin SDK releases is done by release sdk github actions.
| Name | Description | Required | Example |
|---|---|---|---|
| version | The version of the piped plugin SDK to release. | yes | v0.1.0 |