Release overview (WIP)
======================

For a VOLTHA release several actions and patches are applied to each repository.
Release also happens in a hierarchial manner due to dependencies.

- Version string differs between branch=master and branch=voltha-2.12.
- For ex repo:voltha-protos currently has:

  - master=5.5.0
  - voltha-2.12=5.4.11

- For release create an initial baseline build to verify no pre-existing corruption or test failures are present.

  - Baseline builds contain bulk cosmetic changes which may include:

    - Copyright notice ending date change.
    - Cosmetic comemnt changes in source.
    - Syntax formatting (gofmt -s -e -w)

  - Baseline builds may also remove suffixes like -dev from the VERSION file.

- Now tag-branch or branch-tag the repo (depending on repository) for release.
  A few things will need to happen:

  - A few distinct sets of patches for each branch are created:

    - Update VERSION string so master and voltha-2.12 patches cannot collide.

      - branch=voltha-2.12 : VERSION = {max}.{min}+1.0
      - branch=master      : VERSION = {max+1}.{min}.0

    - Update release branch .gitreview file:

      - defaultbranch=voltha-2.12
      - This will rebase/merge against the release branch rather than master.

  - Update go.mod version strings to be appropriate for branch={voltha-2.12, master}

NOTE

::

   One item that may be confusing.  Baseline builds for release are independent
   of tagging & branching so may be initiated in parallel.  Generally release
   tasks for a repository are performed in hierarchial order, release
   repositories and obtain the final version string.  Next continue onto
   releasing repositories that depend on ones released earlier.

   For ex, the release sequence for repo:voltha-go would be
   1) Release repo:votlha-protos
   2) Release repo:votlha-lib-go  # Depends on voltha-protos
   3) Release repo:votlha-go      # Depends on both.

Todo
----

- Add document references to existing release pages.
- Link to repo dependencies in howto/release/repositories
