Jenkins jobs: Release branching for unit tests
==============================================

Intent
------

With each new VOLTHA LTS release (v2.12, v2.11, v2.8) jenkins unit testing and
sandbox tooling must be branched for release to protect testing from
future enhancements on master branch.

JJB configs used to generate pipeline jobs are maintained in a central
repository, test suites are not maintained on distinct branches within
revision control.  Instead versioning is implemented using naming conventions
within the job configs.

WIP:
----

Makefile target create-jobs-release will create a versioned hierarchy
for VOLTHA test jobs.  Refactoring is still needed to modularize job
definitions from the monolithic yaml job config that contains all
jobs and versions.

.. code-block:: shell-session
   :caption: Clone and branch VOLTHA testing for release.
   :linenos:
   :emphasize-lines: 5,8,14

   # Clone repo:ci-management
   % git clone ssh://gerrit.lfbroadband.org:29418/ci-management.git
   % cd ci-management

   % make help | grep release
     help-voltha-release Display voltha release targets

   % make help-voltha-release
   [RELEASE] - Create branch driven testing pipelines
     create-jobs-release
     create-jobs-release-nightly Nightly testing
     create-jobs-release-units   Unit testing

   % make create-jobs-release voltha-version=voltha-2.12

.. code-block:: shell-session
   :caption: Jenkins (JJB) branched job configs created

   % cd ci-management
   % find jjb -name '*2.12*'

   jjb/voltha-test/voltha-certification/voltha-2.12.yaml
   jjb/voltha-test/voltha-nightly-jobs/voltha-2.12.yaml

TODO
----

- Document the current testing setup and branching within monolithic yaml file.
