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