blob: 632dd7e579f837881f2a7725c98cf181b14d2f11 [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
15A branch named ``voltha-2.3`` is created on the voltha-helm-charts repo. Release
16candidates will be created of each chart for the ``2.3`` release. The action that
17indicates the creation of the ``2.3`` release is to changing the `voltha
18<https://gerrit.opencord.org/gitweb?p=voltha-helm-charts.git;a=tree;f=voltha>`_
19helm chart, and adapter charts with version: ``2.3.0`` specified in ``Chart.yaml``
20within the `voltha-helm-charts
21<https://gerrit.opencord.org/gitweb?p=voltha-helm-charts.git;a=summary>`_ repo.
22
23Accompanying tests for 2.3 are created by creating a branch created named
24``voltha-2.3`` on the `voltha-system-tests
25<https://gerrit.opencord.org/gitweb?p=voltha-system-tests.git;a=summary>`_
26repo. At release we create a tag ``2.3.0`` on that branch.
27
28These two repos are the only ones that receive a ``2.3.0`` tag. Other repos that
29contain individual components have their own versioning/release cadence, driven
30by SemVer.
31
32For all other repos that create components that go into the release, tags will
33be created and ``voltha-2.3`` branches are created starting from the tag.
34
35To allow for future patches to go into the repo in a way that does not conflict
36with the patch version, each component repo's ``VERSION`` file should have it's
37Minor version increased. (ex: ``1.1.x`` to ``1.2.0-dev``, so future ``1.1.x+1``
38component release can easily be created).
39
40Testing CI jobs will be created that check out the voltha-2.3 branch of the
41`voltha-system-tests
42<https://gerrit.opencord.org/gitweb?p=voltha-system-tests.git;a=summary>`_
43repo, 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
45that build containers will need to be changed to rebuild those containers and
46test with the ``voltha-2.3`` branch of helm charts.
47
48Creating point releases on a stable branch
49------------------------------------------
50
51If 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
65If a fix is needed to the components/containers that are included by the helm
66charts:
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
78What changes can be brought into a stable branch?
79-------------------------------------------------
80
81For 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
88Process to create a change on a stable branch
89
90- Add a Jira item, with the ``Affects Version: ``VOLTHA vX.X`` set
91- Discuss and get consensus on the issue via the Voltha mailing list, in the
92 all-Voltha meeting, or on Slack about whether this fix should be brought to a
93 stable branch
94- Create a fix, and go through the integration process to create a new point
95 release.
96
97What is a bug?
98""""""""""""""
99
100- Anything that causes a functional regression test (Robot tests) to fail
101- Not a new feature!
102- Severe issue (causes data loss or crash), or frequently occurring are
103 generally more likely to be accepted.
104- Issues that are merely annoying and don't cause data loss or a crash, or
105 happen very infrequently or can't be reproduced may not be.
106
107As a best practice, please add tests when bugs are found, if tests don't
108currently cover the particular bug. Examples:
109
110- Robot tests for integration-related issues
111- Unit tests for code-level issues
112
113
114Repos branched for each release
115-------------------------------
116
117Charts
118""""""
119
120- voltha-helm-charts
121
122Testing
123"""""""
124
125- voltha-system-tests
126
127Tools
128"""""
129
130- bbsim (also creates containers)
131- voltctl
132
133ONOS Apps
134"""""""""
135
136- aaa
137- dhcpl2relay
138- igmp
139- kafka
140- mcast
141- olt
142- sadis
143
144Libraries
145"""""""""
146
147- pyvoltha
148- voltha-lib-go
149- voltha-protos
150
151Components (which build containers)
152"""""""""""""""""""""""""""""""""""
153- ofagent-go
154- voltha-go (rw_core)
155- voltha-openolt-adapter
156- voltha-openonu-adapter
157- voltha-onos (includes ONOS Apps)
158