Joey Armstrong | 2a68795 | 2023-02-01 13:10:12 -0500 | [diff] [blame] | 1 | .. |voltha-latest| replace:: voltha_2.11 |
| 2 | |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 3 | Release Process |
| 4 | =============== |
| 5 | |
| 6 | This document describes the technical steps to create a new release of VOLTHA. |
| 7 | |
| 8 | Creating the initial release |
| 9 | ---------------------------- |
| 10 | |
| 11 | A release branch name is decided on, where all tagged releases will be created |
| 12 | in each repo. Historically this has been ``voltha`` followed by the Major and |
Joey Armstrong | 2a68795 | 2023-02-01 13:10:12 -0500 | [diff] [blame] | 13 | Minor `Semver <https://semver.org/>`_ version, such as ``voltha-2.3``, |
| 14 | etc. The rest of this section will use the ``voltha-2.3`` release as an |
| 15 | example: |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 16 | |
Joey Armstrong | ed6cedd | 2022-08-31 12:39:33 -0400 | [diff] [blame] | 17 | A branch named ``voltha-2.3`` is created on the voltha-helm-charts repo. |
| 18 | Release candidates will be created of each chart for the ``2.3`` release. |
| 19 | The action that indicates the creation of the ``2.3`` release is to changing |
| 20 | the `voltha |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 21 | <https://gerrit.opencord.org/gitweb?p=voltha-helm-charts.git;a=tree;f=voltha>`_ |
Joey Armstrong | ed6cedd | 2022-08-31 12:39:33 -0400 | [diff] [blame] | 22 | helm chart, and adapter charts with version: ``2.3.0`` specified in |
| 23 | ``Chart.yaml`` within the `voltha-helm-charts |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 24 | <https://gerrit.opencord.org/gitweb?p=voltha-helm-charts.git;a=summary>`_ repo. |
| 25 | |
Joey Armstrong | 45fe805 | 2023-06-23 09:51:02 -0400 | [diff] [blame] | 26 | A testing branch for ``2.3`` named ``voltha-2.3`` is created on repository `voltha-system-tests <https://gerrit.opencord.org/gitweb?p=voltha-system-tests.git;a=summary>`_. At release we create a tag ``2.3.0`` on that branch. |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 27 | |
Joey Armstrong | ed6cedd | 2022-08-31 12:39:33 -0400 | [diff] [blame] | 28 | These two repos are the only ones receiving a ``2.3.0`` tag. Other repos that |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 29 | contain individual components have their own versioning/release cadence, driven |
| 30 | by SemVer. |
| 31 | |
Joey Armstrong | 45fe805 | 2023-06-23 09:51:02 -0400 | [diff] [blame] | 32 | For all other repos that create components that go into the release, a tag will |
| 33 | be created and branch ``voltha-2.3`` will be created from the release tag. |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 34 | |
| 35 | To allow for future patches to go into the repo in a way that does not conflict |
Joey Armstrong | 45fe805 | 2023-06-23 09:51:02 -0400 | [diff] [blame] | 36 | with the patch version, each component repository ``VERSION`` file should |
| 37 | have the Minor version increased. (ex: ``1.1.x`` to ``1.2.0-dev``, so future |
| 38 | ``1.1.x+1`` component release can easily be created). |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 39 | |
Joey Armstrong | 45fe805 | 2023-06-23 09:51:02 -0400 | [diff] [blame] | 40 | Testing CI jobs will be created that check out the ``voltha-2.3`` branch of the |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 41 | `voltha-system-tests |
| 42 | <https://gerrit.opencord.org/gitweb?p=voltha-system-tests.git;a=summary>`_ |
| 43 | repo, testing the charts as checked out with the ``voltha-2.3`` branch of |
| 44 | ``voltha-helm-charts``. Patches on the ``voltha-2.3`` branch of components |
| 45 | that build containers will need to be changed to rebuild those containers and |
| 46 | test with the ``voltha-2.3`` branch of helm charts. |
| 47 | |
| 48 | Creating point releases on a stable branch |
| 49 | ------------------------------------------ |
| 50 | |
| 51 | If a fix is only needed to the helm charts: |
| 52 | |
| 53 | - Make the fix on the master branch of voltha-helm-charts (assuming that it is |
| 54 | required in both places). |
| 55 | |
| 56 | - After the master tests pass, manually cherry-pick the fix to the voltha-2.3 |
| 57 | branch (the Chart.yaml version would be different, requiring the manual |
| 58 | step). |
| 59 | |
| 60 | - Cherry-picked patchsets on that branch will be checked by the voltha-2.3 |
| 61 | branch of tests. |
| 62 | |
| 63 | - When it passes, submitting the change will make a new 2.3.x release |
| 64 | |
| 65 | If a fix is needed to the components/containers that are included by the helm |
| 66 | charts: |
| 67 | |
| 68 | - Develop a fix to the issue on the master branch, get it approved after |
| 69 | passing master tests. |
| 70 | |
| 71 | - Manually cherry-pick to the voltha-2.3 branch of the component, incrementing |
| 72 | the patch version, and test with the voltha-2.3 version of |
| 73 | voltha-system-tests and helm charts. |
| 74 | |
| 75 | - Update helm charts and go through the helm chart update process above. |
| 76 | |
| 77 | |
| 78 | What changes can be brought into a stable branch? |
| 79 | ------------------------------------------------- |
| 80 | |
| 81 | For a change to be suitable for a stable branch, it has to be either a: |
| 82 | |
| 83 | - Bug |
| 84 | - Non-code fix (documentation, build process) |
| 85 | - Security or compatibility updates (problem found in a dependency, upstream |
| 86 | software EOL, etc.) |
| 87 | |
| 88 | Process to create a change on a stable branch |
| 89 | |
Joey Armstrong | ed6cedd | 2022-08-31 12:39:33 -0400 | [diff] [blame] | 90 | - Create a jira ticket for the problem and document the ``Affects Version/s:`` |
| 91 | - field with affected version(s) ``VOLTHA vX.X``. |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 92 | - Discuss and get consensus on the issue via the Voltha mailing list, in the |
| 93 | all-Voltha meeting, or on Slack about whether this fix should be brought to a |
| 94 | stable branch |
| 95 | - Create a fix, and go through the integration process to create a new point |
| 96 | release. |
| 97 | |
| 98 | What is a bug? |
| 99 | """""""""""""" |
| 100 | |
| 101 | - Anything that causes a functional regression test (Robot tests) to fail |
| 102 | - Not a new feature! |
| 103 | - Severe issue (causes data loss or crash), or frequently occurring are |
| 104 | generally more likely to be accepted. |
| 105 | - Issues that are merely annoying and don't cause data loss or a crash, or |
| 106 | happen very infrequently or can't be reproduced may not be. |
| 107 | |
| 108 | As a best practice, please add tests when bugs are found, if tests don't |
| 109 | currently cover the particular bug. Examples: |
| 110 | |
| 111 | - Robot tests for integration-related issues |
| 112 | - Unit tests for code-level issues |
| 113 | |
Andrea Campanella | 542291b | 2021-10-27 16:18:46 +0200 | [diff] [blame] | 114 | API Deprecation policy |
| 115 | ---------------------- |
Joey Armstrong | ed6cedd | 2022-08-31 12:39:33 -0400 | [diff] [blame] | 116 | VOLTHA supports 2 release deprecation policy. Starting from ``voltha-2.9`` |
| 117 | the APIs that are marked as deprecated are automatically removed. |
| 118 | For example an API marked as deprecated in ``voltha-2.9`` will be removed after |
| 119 | the ``voltha-2.10`` release and will not be present anymore in ``voltha-2.11``. |
Andrea Campanella | 542291b | 2021-10-27 16:18:46 +0200 | [diff] [blame] | 120 | |
| 121 | The removal process is intended to happen automatically, meaning no further notice of removal needs to be sent out. |
| 122 | The deprecated objects and APIs are marked in the `voltha-protos <https://github.com/opencord/voltha-protos>`_ using the |
| 123 | ``deprecated`` construct from protobuf, as per `specification <https://developers.google.com/protocol-buffers/docs/proto3>`_. |
| 124 | An example is ``int32 old_field = 6 [deprecated = true];`` |
| 125 | |
| 126 | |
| 127 | Repos (lazily) branched for each release |
| 128 | ---------------------------------------- |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 129 | |
| 130 | Charts |
| 131 | """""" |
| 132 | |
| 133 | - voltha-helm-charts |
| 134 | |
| 135 | Testing |
| 136 | """"""" |
| 137 | |
| 138 | - voltha-system-tests |
Andrea Campanella | 542291b | 2021-10-27 16:18:46 +0200 | [diff] [blame] | 139 | - pod-configs |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 140 | |
| 141 | Tools |
| 142 | """"" |
| 143 | |
| 144 | - bbsim (also creates containers) |
| 145 | - voltctl |
| 146 | |
| 147 | ONOS Apps |
| 148 | """"""""" |
| 149 | |
| 150 | - aaa |
| 151 | - dhcpl2relay |
Andrea Campanella | 542291b | 2021-10-27 16:18:46 +0200 | [diff] [blame] | 152 | - igmpproxy |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 153 | - kafka |
| 154 | - mcast |
| 155 | - olt |
| 156 | - sadis |
Andrea Campanella | 542291b | 2021-10-27 16:18:46 +0200 | [diff] [blame] | 157 | - mac-learning |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 158 | |
| 159 | Libraries |
| 160 | """"""""" |
| 161 | |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 162 | - voltha-lib-go |
| 163 | - voltha-protos |
| 164 | |
| 165 | Components (which build containers) |
| 166 | """"""""""""""""""""""""""""""""""" |
| 167 | - ofagent-go |
| 168 | - voltha-go (rw_core) |
| 169 | - voltha-openolt-adapter |
Andrea Campanella | c18d118 | 2021-09-10 12:01:38 +0200 | [diff] [blame] | 170 | - voltha-openonu-adapter-go |
Zack Williams | 16042b6 | 2020-03-29 22:03:16 -0700 | [diff] [blame] | 171 | - voltha-onos (includes ONOS Apps) |