You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/sphinx-guides/source/developers/making-releases.rst
+63-12Lines changed: 63 additions & 12 deletions
Original file line number
Diff line number
Diff line change
@@ -30,7 +30,24 @@ Early on, make sure it's clear what type of release this is. The steps below des
30
30
Ensure Issues Have Been Created
31
31
-------------------------------
32
32
33
-
In advance of a release, GitHub issues should have been created already that capture certain steps. See https://github.com/IQSS/dataverse-pm/issues/335 for examples.
33
+
Some of the steps in this document are well-served by having their own dedicated GitHub issue. You'll see a label like this on them:
34
+
35
+
|dedicated|
36
+
37
+
There are a variety of reasons why a step might deserve its own dedicated issue:
38
+
39
+
- The step can be done by a team member other than the person doing the release.
40
+
- Stakeholders might be interested in the status of a step (e.g. has the released been deployed to the demo site).
41
+
42
+
Steps don't get their own dedicated issue if it would be confusing to have multiple people involved. Too many cooks in the kitchen, as they say. Also, some steps are so small the overhead of an issue isn't worth it.
43
+
44
+
Before the release even begins you can coordinate with the project manager about the creation of these issues.
45
+
46
+
.. |dedicated| raw:: html
47
+
48
+
<span class="label label-success pull-left">
49
+
Dedicated Issue
50
+
</span>
34
51
35
52
Declare a Code Freeze
36
53
---------------------
@@ -40,18 +57,25 @@ The following steps are made more difficult if code is changing in the "develop"
40
57
Conduct Performance Testing
41
58
---------------------------
42
59
60
+
|dedicated|
61
+
43
62
See :doc:`/qa/performance-tests` for details.
44
63
45
-
Conduct Smoke Testing
46
-
---------------------
64
+
Conduct Regression Testing
65
+
---------------------------
66
+
67
+
|dedicated|
47
68
48
69
See :doc:`/qa/testing-approach` for details.
70
+
Refer to the provided regression checklist for the list of items to verify during the testing process: `Regression Checklist <https://docs.google.com/document/d/1OsGJV0sMLDSmfkU9-ee8h_ozbQcUDJ1EOwNPm4dC63Q/edit?usp=sharing>`_.
49
71
50
72
.. _write-release-notes:
51
73
52
74
Write Release Notes
53
75
-------------------
54
76
77
+
|dedicated|
78
+
55
79
Developers express the need for an addition to release notes by creating a "release note snippet" in ``/doc/release-notes`` containing the name of the issue they're working on. The name of the branch could be used for the filename with ".md" appended (release notes are written in Markdown) such as ``5053-apis-custom-homepage.md``. See :ref:`writing-release-note-snippets` for how this is described for contributors.
56
80
57
81
The task at or near release time is to collect these snippets into a single file.
@@ -62,17 +86,22 @@ The task at or near release time is to collect these snippets into a single file
62
86
- Include instructions describing the steps required to upgrade the application from the previous version. These must be customized for release numbers and special circumstances such as changes to metadata blocks and infrastructure.
63
87
- Take the release notes .md through the regular Code Review and QA process. That is, make a pull request. Here's an example: https://github.com/IQSS/dataverse/pull/10866
64
88
65
-
Upgrade Instructions for Internal
66
-
---------------------------------
89
+
Deploy Release Candidate to Internal
90
+
------------------------------------
91
+
92
+
|dedicated|
67
93
68
94
To upgrade internal, go to /doc/release-notes, open the release-notes.md file for the current release and perform all the steps under "Upgrade Instructions".
69
95
70
96
Deploy Release Candidate to Demo
71
97
--------------------------------
72
98
99
+
|dedicated|
100
+
73
101
First, build the release candidate.
74
102
75
103
ssh into the dataverse-internal server and undeploy the current war file.
104
+
Go to /doc/release-notes, open the release-notes.md file for the current release, and perform all the steps under "Upgrade Instructions".
76
105
77
106
Go to https://jenkins.dataverse.org/job/IQSS_Dataverse_Internal/ and make the following adjustments to the config:
78
107
@@ -91,6 +120,8 @@ ssh into the demo server and follow the upgrade instructions in the release note
91
120
Prepare Release Branch
92
121
----------------------
93
122
123
+
|dedicated|
124
+
94
125
The release branch will have the final changes such as bumping the version number.
95
126
96
127
Usually we branch from the "develop" branch to create the release branch. If we are creating a hotfix for a particular version (5.11, for example), we branch from the tag (e.g. ``v5.11``).
@@ -116,18 +147,20 @@ Return to the parent pom and make the following change, which is necessary for p
116
147
117
148
(Before you make this change the value should be ``${parsedVersion.majorVersion}.${parsedVersion.nextMinorVersion}``. Later on, after cutting a release, we'll change it back to that value.)
118
149
119
-
For a regular release, make the changes above in the release branch you created, make a pull request, and merge it into the "develop" branch. Like usual, you can safely delete the branch after the merge is complete.
150
+
For a regular release, make the changes above in the release branch you created, but hold off for a moment on making a pull requests because Jenkins will fail because it will be testing the previous release.
120
151
121
-
If you are making a hotfix release, make the pull request against the "master" branch. Do not delete the branch after merging because we will later merge it into the "develop" branch to pick up the hotfix. More on this later.
152
+
In the dataverse-ansible repo make bump the version in `jenkins.yml <https://github.com/gdcc/dataverse-ansible/blob/develop/tests/group_vars/jenkins.yml>`_ and make a pull request such as https://github.com/gdcc/dataverse-ansible/pull/386. Wait for it to be merged. Note that bumping on the Jenkins side like this will mean that all pull requests will show failures in Jenkins until they are updated to the version we are releasing.
122
153
123
-
Either way, as usual, you should ensure that all tests are passing. Please note that you will need to bump the version in `jenkins.yml <https://github.com/gdcc/dataverse-ansible/blob/develop/tests/group_vars/jenkins.yml>`_ in dataverse-ansible to get the tests to pass. Consider doing this before making the pull request. Alternatively, you can bump jenkins.yml after making the pull request and re-run the Jenkins job to make sure tests pass.
154
+
Once dataverse-ansible has been merged, return to the branch you created above ("10852-bump-to-6.4" or whatever) and make a pull request. Ensure that all tests are passing and then put the PR through the normal review and QA process.
155
+
156
+
If you are making a hotfix release, make the pull request against the "master" branch. Do not delete the branch after merging because we will later merge it into the "develop" branch to pick up the hotfix. More on this later.
124
157
125
158
Merge "develop" into "master"
126
159
-----------------------------
127
160
128
161
If this is a regular (non-hotfix) release, create a pull request to merge the "develop" branch into the "master" branch using this "compare" link: https://github.com/IQSS/dataverse/compare/master...develop
129
162
130
-
Once important tests have passed (compile, unit tests, etc.), merge the pull request. Don't worry about style tests failing such as for shell scripts.
163
+
Once important tests have passed (compile, unit tests, etc.), merge the pull request (skipping code review is ok). Don't worry about style tests failing such as for shell scripts.
131
164
132
165
If this is a hotfix release, skip this whole "merge develop to master" step (the "develop" branch is not involved until later).
133
166
@@ -160,7 +193,7 @@ Go to https://jenkins.dataverse.org/job/guides.dataverse.org/ and make the follo
- ``VERSION`` (under "Build Steps"): bump to the next release. Don't prepend a "v". Use ``5.10.1`` (for example)
164
197
165
198
Click "Save" then "Build Now".
166
199
@@ -265,24 +298,37 @@ Close Milestone on GitHub and Create a New One
265
298
266
299
You can find our milestones at https://github.com/IQSS/dataverse/milestones
267
300
268
-
Now that we've published the release, close the milestone and create a new one.
301
+
Now that we've published the release, close the milestone and create a new one for the **next** release, the release **after** the one we're working on, that is.
269
302
270
303
Note that for milestones we use just the number without the "v" (e.g. "5.10.1").
271
304
305
+
On the project board at https://github.com/orgs/IQSS/projects/34 edit the tab (view) that shows the milestone to show the next milestone.
306
+
272
307
Update the Container Base Image Version Property
273
308
------------------------------------------------
274
309
310
+
|dedicated|
311
+
275
312
Create a new branch (any name is fine but ``prepare-next-iteration`` is suggested) and update the following files to prepare for the next development cycle:
276
313
277
314
- modules/dataverse-parent/pom.xml -> ``<profiles>`` -> profile "ct" -> ``<properties>`` -> Set ``<base.image.version>`` to ``${parsedVersion.majorVersion}.${parsedVersion.nextMinorVersion}``
278
315
279
-
Now create a pull request and merge it.
316
+
Create a pull request and put it through code review, like usual. Give it a milestone of the next release, the one **after** the one we're working on. Once the pull request has been approved, merge it. It should the the first PR merged of the next release.
280
317
281
318
For more background, see :ref:`base-supported-image-tags`. For an example, see https://github.com/IQSS/dataverse/pull/10896
282
319
320
+
Lift the Code Freeze and Encourage Developers to Update Their Branches
It's now safe to lift the code freeze. We can start merging pull requests into the "develop" branch for the next release.
324
+
325
+
Let developers know that they should merge the latest from the "develop" branch into any branches they are working on.
326
+
283
327
Deploy Final Release on Demo
284
328
----------------------------
285
329
330
+
|dedicated|
331
+
286
332
Above you already did the hard work of deploying a release candidate to https://demo.dataverse.org. It should be relatively straightforward to undeploy the release candidate and deploy the final release.
287
333
288
334
Update SchemaSpy
@@ -316,6 +362,11 @@ Announce the Release on the Mailing List
316
362
317
363
Post a message at https://groups.google.com/g/dataverse-community
318
364
365
+
Announce the Release on Zulip
366
+
-----------------------------
367
+
368
+
Post a message under #community at https://dataverse.zulipchat.com
369
+
319
370
For Hotfixes, Merge Hotfix Branch into "develop" and Rename SQL Scripts
0 commit comments