.. SPDX-FileCopyrightText: 2021 Open Networking Foundation <info@opennetworking.org>
.. SPDX-License-Identifier: Apache-2.0

Release Process
===============

Release artifacts
-----------------
There will be 4 major artifacts produced as the result of release process.

- **SD-Fabric Docker image** - This includes all control plane software
- **Stratum Docker image** - This includes Stratum switch OS
- **SD-Fabric Helm charts**
- **SD-Fabric documentation** - The website you are currently viewing

Prerequisite
------------
SD-Fabric releases are guarded by our system integration tests.
Before each release, we check the test result and make sure we have a "green light".
Visit :ref:`testing_guide` for more details.

Stratum Docker image
--------------------
Stratum has its own release process and release timeline.
We request Stratum TST to make a release when necessary.

SD-Fabric Docker Image
----------------------
We tag and release the following repositories in order:

- onos:
    - Run Jenkins release job: https://jenkins.onosproject.org/view/onos-release/job/onos-bazel-release-build/
    - Manually publish artifacts to Maven central: https://oss.sonatype.org/

- trellis-control:
    - Update ``pom.xml(s)``:

        - Update dependencies (use non-snapshot onos)
        - Update version
    - Push Gerrit change, merge
    - Wait for Jenkins job to publish artifacts (https://jenkins.onosproject.org/view/Trellis/job/maven-publish_trellis-control)
    - Manually release artifacts: https://oss.sonatype.org/

- fabric-tna:
    - Update ``pom.xml``:

        - Update dependencies (use non-snapshot ``onos`` and ``trellis-control``)
        - Update version
    - Tag repository

- up4:
    - Update ``pom.xml(s)``:

        - Update dependencies (use non-snapshot onos)
        - Update version
    - Tag repository

- SD-Fabric image:
    - Update Makefile.stable with git tags used above
    - Merge, wait for Jenkins to publish stable image
    - Manually tag image on harbor

SD-Fabric Helm charts
---------------------
The SD-Fabric umbrella chart includes 5 sub-charts:

  - ONOS classic
  - Stratum
  - PFCP agent
  - DBUF
  - INT host reporter

To update each sub-charts:
  - Update chart version and default image in each charts
  - Post-merge CI job will tag the repositories according to chart version

To update the umbrella charts:
  - Update chart version and dependencies in ``sdfabric-helm-charts/sdfabric/Chart.yaml``
  - Post-merge CI job will tag the repositories according to chart version


SD-Fabric documentation
-----------------------
- Complete release note
- Tag documentation repository for each release
- Branch documentation repository for each major releases
