Release or patch a CCF release¶
Patch an LTS release¶
CCF releases are cut from branches named release/N.x
where N
is the major release number.
Patching a release, ie. issuing a N.0.x+1
version when the current version is N.0.x
involves the following steps:
Apply commits to
release/N.0.x
, and/or cherry-pick them frommain
Tag head of
release/N.x
asccf-N.0.x+1
Tip
Alternatively, pull requests merged to main
with the auto-backport
and N.x-todo
GitHub label(s) will be automatically backported to the corresponding LTS branch(es). See Labelling LTS PRs section for more details.
Create an LTS release¶
Create a
release/N.x
branch from the head ofmain
Tag head of
release/N.x
asccf-N.0.0-rc0
If necessary, apply patch process outline above with
ccf-N.0.0-rc1
etcWhen ready, tag the head of
release/N.x
asccf-N.0.0
Create a dev release¶
Tag the head of
main
asccf-N+1.0.0-devX+1
, whereN
is the latest LTS, andX
the latest dev release.
Labelling LTS PRs¶
To keep track of which changes should be merged to LTS branches and then confirm them before cutting LTS releases, the following policy should be used:
A PR targetting
main
which contains changes that should also reach the N.x LTS should be labelled in GitHub withN.x-todo
andauto-backport
.auto-backport
label will trigger a github action to backport automatically.Where possible
N.x-todo
PRs should contain the minimal set of changes with no dependencies on earlier PRs, so they can be more easily cherry-pickedA PR targetting an LTS branch (
release/N.x
) should be labelled in Github withN.x-backport
, so it can be easily found with a filterA PR targetting an LTS branch which is constructed primarily of a cherry-pick from
main
should be named consistently asCherry-pick #<PR_ID> to N.x LTS
, so it can be easily correlated with the correspondingN.x-todo
PR. If an LTS PR contains commits from multiple PRs tomain
, each should be mentioned in the PR title, egPort <foo> to N.x LTS (#PR1_ID, #PR2_ID, ...)`
If the backport happened via the
auto-backport
github action,backported
label will be automatically added to the ticket. Otherwise, you will need to manually addbackported
label once it’s merged.
Before creating an LTS release, the releaser should do a scan of PRs and ensure that there are none with N.x-todo
label. If any exist, they should be merged to the LTS branch before releasing, and those candidate labels removed.