VOL-4840 - Tracing ticket for release documentation.

release_notes/voltha_2.11.rst
-----------------------------
  o Version string updates for a few released components.

howto/release/index.rst
howto/release/components/index.rst
----------------------------------

howto/release/preparation.rst
howto/release/components/onos_dependencies.rst
----------------------------------------------
  o Begin documenting the variant release process for onos components.
  o ONOS publishes builds through maven central -vs- github and tags.

Misc text edits within documents to improve clarity.

Change-Id: Ib1179a1a9ea7c9c6e02f40644ab29fbbd7a83443
diff --git a/howto/code/linting.rst b/howto/code/linting.rst
index 1dcce7a..76f19ca 100644
--- a/howto/code/linting.rst
+++ b/howto/code/linting.rst
@@ -39,7 +39,7 @@
 Makefile help
 ~~~~~~~~~~~~~
 
-Individual Makefiles support a help targe that will display a list of
+Individual Makefiles support a help target that will display a list of
 targets and functionality supported.
 
 .. code:: bash
@@ -140,9 +140,9 @@
 
 Notes:
 
-- pylint --py3k options is no longer supported by v3.10+
+- pylint the --py3k option is no longer supported by v3.10+
 - lint-python target dependency will create a `python virtual env <https://wiki.opennetworking.org/display/JOEY/PythonVenv>`_
-- python 3.10+ requires `virtual env patching <https://gerrit.opencord.org/plugins/gitiles/voltha-docs/+/refs/heads/master/patches/>`_
+- python 3.10+ requires `virtual env patching <https://gerrit.opencord.org/plugins/gitiles/voltha-docs/+/refs/heads/master/patches/>`_ (dynamic, applied when needed).
 
 |
 
diff --git a/howto/release/charts/index.rst b/howto/release/charts/index.rst
new file mode 100644
index 0000000..8e79243
--- /dev/null
+++ b/howto/release/charts/index.rst
@@ -0,0 +1,15 @@
+RELEASE: voltha-helm-charts
+===========================
+
+- Repository `voltha-helm-charts <https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts/+/refs/heads/master>`_.
+- Modify `VERSION file <https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts/+/refs/heads/master/VERSION>`_.
+
+  - For release remove all version decorations: -dev, -SNAPSHOT
+
+- Release job will `publish to <https://gerrit.opencord.org/plugins/gitiles/cord-charts-repo/+/refs/heads/master>`_.
+
+- lint/syntax checking
+
+  - make test
+    - make lint-chart
+    - make lint-helm
diff --git a/howto/release/components/index.rst b/howto/release/components/index.rst
index a63e5dc..f13b276 100644
--- a/howto/release/components/index.rst
+++ b/howto/release/components/index.rst
@@ -1,17 +1,71 @@
-VOLTHA Components (wip)
-=======================
+VOLTHA Components
+=================
+
+ONOS
+----
+A few different processes exist for releasing the VOLTHA project and componets.
+Some are released through github using branches/tags/downloads.
+Others are released as packages on maven central.
+
+A jenkins job exists for releasing ONOS app
+- Maven central based release
+- Release process requires some manual steps.
 
 - `Jenkins Release Job <https://jenkins.opencord.org/job/onos-app-release/>`_
 
-    - Initiate a build for the target component, specify appVersion & apiVersion.
-    - Job will modify pom.xml and create pull requests based on version strings.
-    - Approve and merge the pom.xml changes.
-    - Next a jenkins job will publish changes to maven central.
+  - Initiate a build with parameters for the target component.
 
-       - A user login is required.
-       - `Wait until artifacts are published <https://search.maven.org/search?q=g:org.opencord>`_
-       - Verify status then manually initiate.
-    - `Visit <https://oss.sonatype.org>`_
-       - Select app to release.
-       - Click Show all versions.
-       - TODO: Girish to provide remaining steps.
+    - Use repository name not name of the app itself.
+    - Specify appVersion and apiVersion stored in the pom.xml file.
+
+  - Job will modify pom.xml and create pull requests based on version strings.
+
+    - NOTE: Two pull requests are created to modify pom.xml
+      - One for release (x.y.z)
+      - The second to revert to non-release version (x.(y+1).z-SNAPSHOT)
+      - Approve and merge the release version while performing the release.
+      - Once published approve the 2nd version change to re-attach the -SNAPSHOT suffix.
+
+    - Version x.y.z-SNAPSHOT is the default non-release version.
+    - Jenkins job will morph x.y.z-SNAPSHOT into x.y.z for the release.
+    - A gerrit pull request will be created under the release requestor(s) name.
+
+  - Approve the pom.xml pull request and merge.
+  - Merge will trigger (https://jenkins.opencord.org/job/maven-publish_sadis/ for sadis app, similar link for olt and other apps) that publish the artifact in the staging repo on oss.sonatype.org, you need to release it.
+  - Wait for build to complete
+  - Merge the patches here https://gerrit.opencord.org/q/owner:do-not-reply%2540opennetworking.org
+
+- Publish sonatype staging to maven central:
+
+  - Visit `https://oss.sonatype.org <https://oss.sonatype.org>`_
+  - Login with ONF credentials
+
+    - Search for org.opencord
+    - Click on "Staging repositories" (in the left side navigation)
+    - In the top right search for last part of the app name (eg: olt)
+    - Click release (top left bar, small button)
+    - `Wait until artifacts are published <https://search.maven.org/search?q=g:org.opencord>`_
+
+- Release all other apps/components (dependency hierarch):
+
+  - Iterate over individual components in order of increasing dependency volume.
+
+    - For ex olt depends on sadis
+    - Begin by releasing sadis first
+    - Once publishing has completed then olt can be released.
+
+  - Verify expected dependent version has been released.
+  - Modify pom.xml, update dep version(s) from x.z.y-SNAPSHOT to x.y.z
+  - Commit and submit.
+
+
+See Also
+========
+.. toctree::
+
+   onos_dependencies
+
+   voltctl/index
+   voltctl/install
+   voltctl/release
+   voltctl/see_also
diff --git a/howto/release/components/onos_dependencies.rst b/howto/release/components/onos_dependencies.rst
new file mode 100644
index 0000000..2b005a6
--- /dev/null
+++ b/howto/release/components/onos_dependencies.rst
@@ -0,0 +1,103 @@
+VOLTHA Components: ONOS Dependencies
+====================================
+
+ONOS components are maintained by a series of maven projects.
+Releasing individual components will require:
+
+- Build and release dependencies:
+
+  - Three jenkins jobs
+
+    - modify version in pom.xml for release (remove -SNAPSHOT)
+    - publish artifact to maven central.
+    - modify version in pom.xml for release (append -SNAPSHOT)
+
+  - Three manual operations:
+
+    - Review and approve pull request to create a pom.xml release version.
+    - Release artifact to maven central.
+    - Review and approve pull request to create a pom.xml non-release version.
+
+  - Long idle window(s)
+
+First submit nop jobs to verify the packages can build and test cleanly.
+Bulk update copyright notice dates or modify comments within sources and submit.
+
+Search pom.xml for package version string
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+component sadis
+
+Package version strings should contain the suffix -SNAPSHOT.
+
+.. code:: bash
+
+   aaa/pom.xml
+   aaa/api/pom.xml
+   aaa/app/pom.xml
+
+.. code:: XML
+
+   <artifactId>sadis</artifactId>
+   <version>5.9.0-SNAPSHOT</version>
+   <packaging>pom</packaging>
+
+   <properties>
+      <sadis.api.version>5.9.0-SNAPSHOT</sadis.api.version>
+   </properties>
+
+
+Next search pom.xml for dependent packages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+component: aaa
+
+Dependent package version strings will be a released (non-SNAPSHOT) version.
+
+.. code:: XML
+
+   <properties>
+      <sadis.api.version>5.9.0</sadis.api.version>
+      <aaa.api.version>2.8.0-SNAPSHOT</aaa.api.version>
+   </properties>
+
+
+Dependency Hierarchy
+--------------------
+
+Components are built and released in version hiearchy order.
+
+sadis
+^^^^^
+
+- Verify -SNAPSHOT version string is present.
+- Dependent components: none
+- Scan pom.xml for version dependencies:
+
+.. code:: XML
+
+   <sadis.api.version>5.9.0-SNAPSHOT</sadis.api.version>
+
+
+aaa
+^^^
+
+- Verify -SNAPSHOT version string is present.
+- Dependent components: sadis
+- Modify pom.xml, update released version strings
+
+.. code:: XML
+
+   <sadis.api.version>5.9.0</sadis.api.version>
+
+
+igmpproxy
+^^^^^^^^^
+
+- Verify -SNAPSHOT version string is present.
+- Dependent components: aaa, bng, dhcpl2relay igmp, mcast, olt, sadis
+- Modify pom.xml, update released version strings
+
+.. code:: XML
+
+   <sadis.api.version>5.9.0</sadis.api.version>
diff --git a/howto/release/index.rst b/howto/release/index.rst
index d98e421..da347a5 100644
--- a/howto/release/index.rst
+++ b/howto/release/index.rst
@@ -3,6 +3,8 @@
 .. toctree::
    :maxdepth: 2
 
+   components/index
+
    voltctl/index
    voltctl/install
    voltctl/release
diff --git a/howto/release/preparation.rst b/howto/release/preparation.rst
new file mode 100644
index 0000000..0fcae23
--- /dev/null
+++ b/howto/release/preparation.rst
@@ -0,0 +1,7 @@
+Release Preparation
+===================
+
+As release date approaches and development slows visit the `jira versions dashboard <https://jira.opencord.org/projects/VOL?selectedItem=com.atlassian.jira.jira-projects-plugin%3Arelease-page&status=unreleased>`.
+- Create a new dashboard for the future release candidate.
+- Visit the current release candidate and move all unresolved tickets into the future desktop.
+- On release day click the [Release] button to close out the desktop.