Merge "Update odlparent docs for Karaf 3"
[docs.git] / docs / release-process / branch-cutting.rst
index 1c8d2baf6fe8d11a1f8de776d53a6e77633370c3..d4b76bf5149ec8fad206c9370f7024c8d9483f98 100644 (file)
@@ -12,33 +12,125 @@ M5 Offset 2
 JJB
 ---
 
-- Change JJB stream:boron branch pointer from master -> stable/boron
+- Export ${NEXT_RELEASE} and ${CURR_RELEASE} with new and current release names.
   **(releng/builder committers)**
-- Create new stream:carbon branch pointer to branch master
+
+  .. code-block:: bash
+
+     export NEXT_RELEASE="Nitrogen"
+     export CURR_RELEASE="Carbon"
+
+- Change JJB yaml files from `stream:carbon` branch pointer from `master -> stable/${CURR_RELEASE,,}`
+  and create new `stream: ${NEXT_RELEASE,,}` branch pointer to branch master. This
+  requires handling two different file formats interspersed with in autorelease projects.
   **(releng/builder committers)**
 
-Process
--------
+  .. code-block:: yaml
+
+      stream:
+        - Nitrogen:
+            branch: master
+        - Carbon:
+            branch: stable/carbon
+
+  .. code-block:: yaml
+
+      - project:
+          name: aaa-carbon
+          jobs:
+            - '{project-name}-verify-{stream}-{maven}-{jdks}'
+          stream: nitrogen
+          branch: master
+
+  - The above manual process of updating individual files is automated with the script.
+    **(releng/builder committers)**
+
+  .. code-block:: bash
+
+      cd builder/scripts/branch_cut
+      ./branch_cutter.sh -n $NEXT_RELEASE -c $CURR_RELEASE
+
+- Review and submit the changes to releng/builder project. **(releng/builder committers)**
+
+Autorelease
+-----------
 
-- Disable Submit permission on master branch
+- Block submit permissions for registered users and elevate RE's committer rights on gerrit.
   **(Helpdesk)**
-- Create stable/boron branches based on HEAD master
-  **(Release Engineering Team)**
-- Contribute .gitreview updates to stable/boron
+
+  .. figure:: images/gerrit-update-committer-rights.png
+
+  .. note::
+
+     Enable **Exclusive** checkbox for the submit button to override any existing persmissions.
+
+- Setup releng/autorelease repository.
   **(Release Engineering Team)**
 
   .. code-block:: bash
 
-      git submodule foreach sed -i -e 's#defaultbranch=master#defaultbranch=stable/boron#' .gitreview
-      git submodule foreach git commit -asm "Update .gitreview to stable/boron"
+      git review -s
+      git submodule foreach 'git review -s'
+      git checkout master
+      git submodule foreach 'git checkout master'
+      git pull --rebase
+      git submodule foreach 'git pull --rebase'
 
-- Version bump master by 0.1.0
+- Create stable/${CURR_RELEASE} branches based on HEAD master.
   **(Release Engineering Team)**
 
   .. code-block:: bash
 
-      git submodule foreach version.sh bump Boron
-      git submodule foreach git commit -asm "Bump versions by 0.1.0 for next dev cycle"
+      git submodule foreach 'git checkout -b stable/${CURR_RELEASE,,} origin/master'
+      git push gerrit stable/${CURR_RELEASE,,}
+      git submodule foreach 'git push gerrit stable/${CURR_RELEASE,,}'
 
-- Re-enable Submit permission on master branch
+- Enable create reference permissions on gerrit for RE's to submit .gitreview patches.
   **(Helpdesk)**
+
+  .. figure:: images/gerrit-update-create-reference.png
+
+  .. note::
+
+     Enable Exclusive checkbox override any existing persmissions.
+
+- Contribute .gitreview updates to stable/${CURR_RELEASE,,}.
+  **(Release Engineering Team)**
+
+  .. code-block:: bash
+
+      git submodule foreach sed -i -e "s#defaultbranch=master#defaultbranch=stable/${CURR_RELEASE,,}#" .gitreview
+      git submodule foreach git commit -asm "Update .gitreview to stable/${CURR_RELEASE,,}"
+      git submodule foreach 'git review -t nitrogen-br-cut'
+      sed -i -e "s#defaultbranch=master#defaultbranch=stable/${CURR_RELEASE,,}#" .gitreview
+      git add .gitreview
+      git commit -s -v -m "Update .gitreview to stable/${CURR_RELEASE,,}"
+      git review -t  ${NEXT_RELEASE,,}-branch-cut
+
+- Merge all .gitreview patches submitted in the above step. **(Release Engineering Team)**
+- Remove create reference permissions set on gerrit for RE's. **(Helpdesk)**
+- Version bump master by x.(y+1).z. **(Release Engineering Team)**
+
+  .. code-block:: bash
+
+      git checkout master
+      git submodule foreach 'git checkout master'
+      pip install lftools
+      lftools version bump ${CURR_RELEASE}
+
+- Exclude version bump changes to release notes. **(Release Engineering Team)**
+
+  .. code-block:: bash
+
+      git checkout pom.xml scripts/
+
+- Push version bump master changes to gerrit. **(Release Engineering Team)**
+
+  .. code-block:: bash
+
+      git submodule foreach 'git commit -asm "Bump versions by x.(y+1).z for next dev cycle"'
+      git submodule foreach 'git review -t nitrogen-br-cut'
+
+- Merge all version bump patches in the order of dependencies. **(Release Engineering Team)**
+- Re-enable submit permissions for registered users and disable elevated RE committer rights on gerrit. **(Helpdesk)**
+- Notify release list on branch cutting work completion. **(Release Engineering Team)**