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 frommainTag head of
release/N.xasccf-N.0.x+1
Create an LTS release¶
Create a
release/N.xbranch from the head ofmainTag head of
release/N.xasccf-N.0.0-rc0If necessary, apply patch process outline above with
ccf-N.0.0-rc1etcWhen ready, tag the head of
release/N.xasccf-N.0.0
Create a dev release¶
Tag the head of
mainasccf-N+1.0.0-devX+1, whereNis the latest LTS, andXthe 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
mainwhich contains changes that should also reach the N.x LTS should be labelled in GitHub withN.x-todoWhere possible
N.x-todoPRs 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
mainshould be named consistently asCherry-pick #<PR_ID> to N.x LTS, so it can be easily correlated with the correspondingN.x-todoPR. 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, ...)`
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.