OXYGENHUB
◆ main openmsx / doc / release-process.txt
5.8 KiB · Plain Text · last changed chore(): initial commit 1 month ago source blame history raw
1
openMSX Release Process
2
=======================
3
4
This is a kind of recipe for doing releases. Having it written down
5
decreases the chance of forgetting a small but crucial step during the
6
hectic work of getting a release out.
7
8
Preparing for a release
9
-----------------------
10
11
- Tell all developers to commit only fixes.
12
- Sync with most recent C-BIOS release.
13
- Check that the "staticbindist" build still works, in particular on
14
  win32 and Mac OS X. This should be clear from the GitHub Actions at
15
  https://github.com/openMSX/openMSX/actions
16
- Verify the documentation is up-to-date.
17
  Currently most documentation is in "doc/manual".
18
- Write release notes in "doc/release-notes.txt".
19
- Add the change list to "doc/release-history.txt".
20
21
Note: An alternative approach would be to create a branch dedicated to the
22
      release and continue accepting any kind of commit on "master".
23
      To put the development focus on bug fixing, we haven't done this,
24
      but it is an approach that might be useful at some point.
25
26
Creating a release candidate
27
----------------------------
28
29
- If you're creating the very first release candidate for this release,
30
  use a version number that ends with -rc1, so 1.2.3-rc1. Only the final
31
  release will be without the -rc suffix (in both tag and version
32
  numbers.)
33
- Edit the version number in build/version.py:
34
    packageVersionNumber = '1.2.3'
35
  And set releaseFlag to True.
36
  Additionally, increase the androidReleaseVersionCode with 1.
37
  And update the copyright year in build/version.py
38
- Update the release date in "doc/release-notes.txt" and
39
  "doc/release-history.txt".
40
- Don't forget to commit and push all these last changes before tagging!
41
- Tag the git archive:
42
    git tag -a RELEASE_1_2_3 -m "Tagging release 1.2.3."
43
    git push --tags
44
- Create the distribution tar.gz file based on the new tag:
45
    build/gitdist.py RELEASE_1_2_3
46
- Save the created file somewhere you can find it again:
47
    mv derived/dist/openmsx-1.2.3.tar.gz <some_dir>/
48
  This is the release candidate.
49
- On GitHub Actions do a build based on the tagged code for platforms
50
  that can be built there: (note that the Windows build will NOT include
51
  Catapult!):
52
  https://github.com/openMSX/openMSX/actions/workflows/build_release_from_tag_via_tarball.yml
53
  click open "Run workflow" at the top right and for "Release tag to
54
  build" fill in "RELEASE_1_2_3" and click "Run workflow".
55
- NOTE: for a Windows build, you also need a RC of Catapult!
56
57
Sanity check on release candidate
58
---------------------------------
59
60
This is a small check to be performed by the release coordinator.
61
62
- Test build:
63
  * Compile and check for warnings:
64
      unset OPENMSX_FLAVOUR   (and any other OPENMSX_ flags you have set)
65
      make
66
  * Test installation:
67
      su
68
      make install
69
- Start openmsx with your usual config.
70
- Verify the version number in the title bar.
71
72
If the sanity check is passed, distribute tar.gz to fellow developers and
73
testers.
74
75
Full test of release candidate
76
------------------------------
77
78
- Check behaviour with empty ~/.openMSX dir.
79
- Check that the default config (C-BIOS_MSX2+) works.
80
- Check random other configs.
81
- Do extensive testing with things that are known to work and likely to
82
  give problems (like Unknown Reality, Metal Limit).
83
- Do some valgrind runs to make sure there are no hidden problems.
84
TODO: More standard tests?
85
86
Repeat until release worthy
87
---------------------------
88
89
Create and test release candidates until a satisfactory release candidate
90
is made, which will become the release.
91
92
If there are any last-minute patches, don't forget to set a new release
93
tag, such that the released code is based on exactly the tagged code.
94
95
Make the release public
96
-----------------------
97
98
Put the release on GitHub (refer to
99
https://help.github.com/articles/creating-releases/):
100
- Make sure you're logged in
101
- Go to https://github.com/openMSX/openMSX/releases. Click "Draft a new
102
  release"
103
- Select the tag version you made above: RELEASE_1_2_3
104
- Type 'openMSX' and the release number of the new release at "Release
105
  title":
106
  openMSX 1.2.3
107
- At the "Describe this release" box, describe the release, e.g. take the
108
  first few paragraphs of the release notes (before the list of changes
109
  starts).
110
- At "Attach binaries" select the files to upload, including our own
111
  tarballs.
112
  In short: all the files we used to upload for an SF.net release.
113
  Upload the relevant binaries that came out of the GitHub Actions build done
114
  based on the tarball, as described above. For some reason, these results are
115
  zipped or get an extra zip extension. Make sure to unzip (e.g. the dmg files)
116
  or strip the extra .zip file extension (e.g. the Linux build).
117
- Note: GitHub also generates a tarball and a zip file. Just ignore it for
118
  now. Do not use these in any links on our website or somewhere else.
119
  They contain a lot of unnecessary stuff.
120
121
Announce:
122
- Post change list to msx.org.
123
- Post news item on web site.
124
- Post news item on our Facebook page.
125
- Post news and/or change list to openmsx-devel and openmsx-user
126
  mailinglists (at least one packager uses it to get a trigger)
127
128
Finally:
129
- Update the web site:
130
  - in the htdocs repo:
131
    - Point to new downloads.
132
    - Update the list "features of current release"
133
    - When done, commit and push
134
  - Make sure you have a clone of the openMSX.github.io repo as well, and go to
135
    it. This repo contains the web site as it is live (so not the sources)
136
  - Run the update.sh script, which will update the files based on the
137
    htdocs/openMSX and wxcatapult repos and converts the php to html
138
  - Review the changes and commit and push to publish them immediately on the
139
    site.
140
- Set releaseFlag to False in build/version.py
141
- Update libraries in the 3rd party build system to latest versions, so
142
  that next release will profit from this and you won't forget it. Just
143
  before the release is too late (unless it's some minor security fix)!