release-process.txt 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. openMSX Release Process
  2. =======================
  3. This is a kind of recipe for doing releases. Having it written down
  4. decreases the chance of forgetting a small but crucial step during the
  5. hectic work of getting a release out.
  6. Preparing for a release
  7. -----------------------
  8. - Tell all developers to commit only fixes.
  9. - Sync with most recent C-BIOS release.
  10. - Check that the "staticbindist" build still works, in particular on win32 and
  11. Mac OS X.
  12. - Verify the documentation is up-to-date.
  13. Currently most documentation is in "doc/manual".
  14. - Write release notes in "doc/release-notes.txt".
  15. - Add the change list to "doc/release-history.txt".
  16. Note: An alternative approach would be to create a branch dedicated to the
  17. release and continue accepting any kind of commit on "master".
  18. To put the development focus on bug fixing, we haven't done this,
  19. but it is an approach that might be useful at some point.
  20. Creating a release candidate
  21. ----------------------------
  22. - If you're creating the very first release candidate for this release, use a
  23. version number that ends with -rc1, so 1.2.3-rc1. Only the final release will
  24. be without the -rc suffix (in both tag and version numbers.)
  25. - Update the copyright year in src/resource/openmsx.rc
  26. - Edit the version number in build/version.py:
  27. packageVersionNumber = '1.2.3'
  28. And set releaseFlag to True.
  29. Additionally, increase the androidReleaseVersionCode with 1.
  30. - Update the release date in "doc/release-notes.txt" and
  31. "doc/release-history.txt".
  32. - Don't forget to commit and push all these last changes before tagging!
  33. - Tag the git archive:
  34. git tag -a RELEASE_1_2_3 -m "Tagging release 1.2.3."
  35. git push --tags
  36. - Create the distribution tar.gz file based on the new tag:
  37. build/gitdist.py RELEASE_1_2_3
  38. - Save the created file somewhere you can find it again:
  39. mv derived/dist/openmsx-1.2.3.tar.gz <some_dir>/
  40. This is the release candidate.
  41. - NOTE: for a Windows build, you also need a RC of Catapult!
  42. Sanity check on release candidate
  43. ---------------------------------
  44. This is a small check to be performed by the release coordinator.
  45. - Test build:
  46. * Compile and check for warnings:
  47. unset OPENMSX_FLAVOUR (and any other OPENMSX_ flags you have set)
  48. make
  49. * Test installation:
  50. su
  51. make install
  52. - Start openmsx with your usual config.
  53. - Verify the version number in the title bar.
  54. If the sanity check is passed, distribute tar.gz to fellow developers and
  55. testers.
  56. Full test of release candidate
  57. ------------------------------
  58. - Check behaviour with empty ~/.openMSX dir.
  59. - Check that the default config (C-BIOS_MSX2+) works.
  60. - Check random other configs.
  61. - Do extensive testing with things that are known to work and likely to give
  62. problems (like Unknown Reality, Metal Limit).
  63. - Do some valgrind runs to make sure there are no hidden problems.
  64. TODO: More standard tests?
  65. Repeat until release worthy
  66. ---------------------------
  67. Create and test release candidates until a satisfactory release candidate
  68. is made, which will become the release.
  69. If there are any last-minute patches, don't forget to set a new release tag,
  70. such that the released code is based on exactly the tagged code.
  71. Make the release public
  72. -----------------------
  73. Put the release on GitHub (refer to
  74. https://help.github.com/articles/creating-releases/):
  75. - Make sure you're logged in
  76. - Go to https://github.com/openMSX/openMSX/releases. Click "Draft a new release"
  77. - Select the tag version you made above: RELEASE_1_2_3
  78. - Type 'openMSX' and the release number of the new release at "Release title":
  79. openMSX 1.2.3
  80. - At the "Describe this release" box, describe the release, e.g. take the first
  81. few paragraphs of the release notes (before the list of changes starts).
  82. - At "Attach binaries" select the files to upload, including our own tarballs.
  83. In short: all the files we used to upload for an SF.net release.
  84. - Note: GitHub also generates a tarball and a zip file. Just ignore it for
  85. now. Do not use these in any links on our website or somewhere else. They
  86. contain a lot of unnecessary stuff.
  87. Announce:
  88. - Post change list to msx.org.
  89. - Post news item on web site.
  90. - Post news item on our Facebook page.
  91. - Post news and/or change list to openmsx-devel and openmsx-user mailinglists
  92. (at least one packager uses it to get a trigger)
  93. Finally:
  94. - Update web site to point to new downloads.
  95. - On the openMSX home page, update the lists "features of current release"
  96. and "features in development".
  97. - Set releaseFlag to False in build/version.py
  98. - Update libraries in the 3rd party build system to latest versions, so that
  99. next release will profit from this and you won't forget it. Just before the
  100. release is too late (unless it's some minor security fix)!