3.1 KiB
Releasing knative/pkg
We release the components of Knative every 6 weeks. All of these components must be moved to the latest "release" of the knative/pkg shared library prior to each release, but likely this should happen incrementally over each milestone.
Release Process.
Step #1: Monday the week prior to each release.
On Monday of the week prior to the Knative release, each of the downstream
repositories should stage a [WIP]
Pull Request that advances the knative/pkg
dependency to the latest commit.
At present, these downstream repositories include:
- knative/serving
- knative/eventing
- knative/eventing-contrib
- knative/sample-controller
- google/knative-gcp
The automation that auto-bumps these lives here.
Gopkg.toml
should look like:
[[override]]
name = "knative.dev/pkg"
branch = "master"
Then the following is run:
dep ensure -update knative.dev/pkg
./hack/update-codegen.sh
If problems are found, they are addressed and the update is merged, and this process repeats until knative/pkg can be cleanly updated without any changes.
If by mid-week, we do not have a clean PR in each repository, the person driving the update should escalate to avoid delaying the release.
Step #2: Friday the week prior to each release.
A release branch is snapped on knative/pkg with the form release-0.X
where X
reflects the forthcoming Knative release. The commit at which this branch is
snapped will be the version that has been staged into [WIP]
PRs in every
repository.
These staging PRs are then updated to:
[[override]]
name = "knative.dev/pkg"
# The 0.X release branch.
branch = "release-0.X"
The [WIP]
is removed, and the PRs are reviewed and merged.
Backporting Fixes
If a problem is found in knative/pkg in an older release and a fix must be backported then it should first be fixed at HEAD (if still relevant). It should be called out and likely discussed (with a lead) in the original PR whether the fix is desired and eligible for back-porting to a release branch. This may raise the review bar, or lead to trade-offs in design; it is better to front-load this consideration to avoid delaying a cherry-pick.
Once that PR has merged (if still relevant), the same commit should be
cherry-picked onto release-0.Y
and any merge problems fixed up.
Once the change is ready, a PR should be sent against release-0.Y
with the
prefix [RELEASE-0.Y] Your PR Title
to clearly designate this PR as targeting
the release branch. A lead will review and make a ruling on the PR, but if this
consideration was front-loaded, it should be a short review.
Picking up fixes
Downstream repositories should reference knative/pkg
release branches from
their own release branches, so to update the knative/pkg
dependency we run:
dep ensure -update knative.dev/pkg
./hack/update-deps.sh
Revert to Master
Post release, reverse the process. Gopkg.toml
should look like:
[[override]]
name = "knative.dev/pkg"
branch = "master"