| 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)! |