Difference between revisions of "HOWTO-Release"

Jump to navigation Jump to search
2,501 bytes added ,  21:25, 19 March 2021
(→‎Preparing the source: -- added item about NEWS file)
(→‎During the release cycle: -- added section)
(18 intermediate revisions by 4 users not shown)
Line 7: Line 7:


=== Preparations ===
=== Preparations ===
* Making the release plan
* Make the release plan, normally 1-2 weeks before branching, 3-4 weeks for bug fixing, 2 weeks after tagging before the release
* Telling people about it, making sure everybody knows what is going on
** e-mail -devel with the proposed schedule, ask if someone would like to finish some functionality
** Look through all the open issues on the bugtracker and identify release blockers and nice-to-have-fixed bugs
* Update the lists of files below, adding new engine data files and such
* Update the lists of files below, adding new engine data files and such
* If some games must be fixed before the release, identify those and create a list at [[Release Testing]]
* Announce the testing period on the main website and copy to the forums and FB
=== During the release cycle ===
* E-mail the scummvm-devel list at least weekly with the list of release blockers and nice-to-have-fixed bugs
* Track daily testing progress and update Wiki if applicable. Normally, we collect playtests on the forums
* Watch for any potential blockers and pat developers who own the identified blockers
* Squash as many bugs as possible


=== Branching for major release ===
=== Branching for major release ===
* Create a branch for the 1.7.x releases from master, named branch-1-7
* Create a branch for the 2.2.x releases from master, named branch-2-2
** <code>git checkout -b branch-1-7 master</code>
** <code>git checkout -b branch-2-2 master</code>
* Increase version on branch-1-7 to 1.7.0pre (using <code>devtools/update-version.pl</code>; see below), and commit
* Increase version on branch-2-2 to 2.2.0pre (using <code>devtools/update-version.pl</code>; see below), and commit
** <code>devtools/update-version.pl 1 7 0 pre</code>
** <code>devtools/update-version.pl 2 2 0 pre</code>
** <code>git commit -m "RELEASE: This is 1.7.0pre" -a</code>
** <code>git commit -m "RELEASE: This is 2.2.0pre" -a</code>
* Create annotated tag desc/1.7.0pre on that commit and push
* Create annotated tag desc/2.2.0pre on that commit and push
** <code>git tag -m "Mark 1.7.0pre" desc/1.7.0pre</code>
** <code>git tag -m "Mark 2.2.0pre" desc/2.2.0pre</code>
** <code>git push origin tag desc/1.7.0pre branch-1-7:branch-1-7</code>
** <code>git push origin tag desc/2.2.0pre branch-2-2:branch-2-2</code>
* Increase version on master to 1.8.0git, and commit
* Increase version on master to 2.3.0git, and commit
** <code>git checkout master</code>
** <code>git checkout master</code>
** <code>devtools/update-version.pl 1 8 0 git</code>
** <code>devtools/update-version.pl 2 3 0 git</code>
** <code>git commit -m "RELEASE: This is 1.8.0git" -a</code>
** <code>git commit -m "RELEASE: This is 2.3.0git" -a</code>
* Create annotated tag desc/1.8.0git on that commit and push
* Create annotated tag desc/2.3.0git on that commit and push
** <code>git tag -m "Mark 1.8.0git" desc/1.8.0git</code>
** <code>git tag -m "Mark 2.3.0git" desc/2.3.0git</code>
** <code>git push origin tag desc/1.8.0git master</code>
** <code>git push origin tag desc/2.3.0git master</code>
* Update buildbot
** Set <code>scumm_branch_stable = "branch-2-2"</code> in master.cfg around [https://github.com/scummvm/scummvm-sites/blob/buildbot/config/master.cfg#L25 line 25].
** Restart the buildbot as described [[Buildbot#Administration|here]]
* Communication
** Update IRC and Discord channel description
** Write a mail to scummvm-devel


=== Testing ===
=== Testing ===
Line 45: Line 60:
** dists/scummvm.rc
** dists/scummvm.rc
* Review the following documentation files for version and copyright year updates:
* Review the following documentation files for version and copyright year updates:
** README
** README(.md)
** NEWS
** NEWS(.md)
** COPYRIGHT
** COPYRIGHT
* Review the following port specific files for version updates:
* Review the following port specific files for version updates:
Line 87: Line 102:
*** COPYING.FREEFONT
*** COPYING.FREEFONT
*** COPYING.LGPL
*** COPYING.LGPL
*** COPYING.OFL
*** COPYRIGHT
*** COPYRIGHT
*** NEWS
*** NEWS(.md)
*** README (generic ScummVM one)
*** README(.md) (generic ScummVM one)
*** localized NEWS and README files (from doc/) (optional)
*** localized NEWS and README files (from doc/) (optional)
*** scummmodern.zip (from gui/themes directory) (if your port uses new GUI)
*** scummmodern.zip (from gui/themes directory) (if your port uses new GUI)
*** scummclassic.zip (from gui/themes directory) (if your port uses new GUI)
*** scummclassic.zip (from gui/themes directory) (if your port uses new GUI)
*** scummremastered.zip (from gui/themes directory) (if your port uses new GUI)
*** translations.dat (from gui/themes directory)
*** translations.dat (from gui/themes directory)
*** pred.dic (from dists directory)
*** pred.dic (from dists directory)
*** access.dat (from dists/engine-data)
*** access.dat (from dists/engine-data)
*** access.dat (from dists/engine-data)
*** cryomni3d.dat (from dists/engine-data)
*** drascula.dat (from dists/engine-data)
*** drascula.dat (from dists/engine-data)
*** fonts.dat (from dists/engine-data)
*** hugo.dat (from dists/engine-data)
*** hugo.dat (from dists/engine-data)
*** kyra.dat (from dists/engine-data)
*** kyra.dat (from dists/engine-data)
Line 104: Line 124:
*** queen.tbl (from dists/engine-data)
*** queen.tbl (from dists/engine-data)
*** sky.cpt (from dists/engine-data)
*** sky.cpt (from dists/engine-data)
*** supernova.dat (from dists/engine-data)
*** teenagent.dat (from dists/engine-data)
*** teenagent.dat (from dists/engine-data)
*** titanic.dat (from dists/engine-data)
*** tony.dat (from dists/engine-data)
*** tony.dat (from dists/engine-data)
*** toon.dat (from dists/engine-data)
*** toon.dat (from dists/engine-data)
*** ultima.dat (from dists/engine-data)
*** wintermute.zip (from dists/engine-data)
*** wintermute.zip (from dists/engine-data)
*** xeen.ccs (from dists/engine-data)


*** your build binary
*** your build binary
Line 120: Line 144:
** Sparkle automatic updates
** Sparkle automatic updates
*** Create a ReleaseNotes file on FRS with the changes from this release (from NEWS file).
*** Create a ReleaseNotes file on FRS with the changes from this release (from NEWS file).
**** Translate it to ReleaseNotes.html with https://markdowntohtml.com/
*** Sign the macOS and Win32 binaries with our private key for Sparkle
*** Sign the macOS and Win32 binaries with our private key for Sparkle
*** Update the scummvm_appcast.xml file in scummvm/dist/macosx/.
*** Update the scummvm_appcast.xml file in scummvm/dist/macosx/.
Line 146: Line 171:
Then you need to create and upload the tarballs.
Then you need to create and upload the tarballs.


<source lang="bash">
<syntaxhighlight lang="bash">
devtools/dist-scummvm.sh scummvm 1.9.0
devtools/dist-scummvm.sh scummvm 1.9.0
devtools/dist-scummvm.sh scummvm-tools 1.9.0
devtools/dist-scummvm.sh scummvm-tools 1.9.0
</source>
</syntaxhighlight>


Then upload the resulting scummvm-1.9.0.tar.gz, scummvm-1.9.0.tar.bz2, scummvm-1.9.0.tar.xz and scummvm-1.9.0.tar.zip to the FRS.
Then upload the resulting scummvm-1.9.0.tar.gz, scummvm-1.9.0.tar.bz2, scummvm-1.9.0.tar.xz and scummvm-1.9.0.tar.zip to the FRS.
=== Signing binaries ===
Put tarballs into directory <tt>archives/</tt>, run:
<syntaxhighlight lang="bash">
bin/generate_appcast archives/
bin/old_dsa_scripts/sign_update archives/scummvm-2.1.1-win32.exe dsa_priv.pem
bin/old_dsa_scripts/sign_update archives/scummvm-2.1.1-macosx.dmg dsa_priv.pem
</syntaxhighlight>
The first line will generate file <tt>archives/release.xml</tt>. The following ones will just spit out DSA signatures.
Copy/paste signatures to <tt>dists/macosx/scummvm_appcast.xml</tt> in the main git repo.
Then run:
<syntaxhighlight lang="bash">
make publish-appcast
cd ../scummvm-web
git commit -m 'WEB: Sync appcast' -a
</syntaxhighlight>


=== News & Notification ===
=== News & Notification ===
Write a news blurb (or rather multiple to be used in the following). Usually, you want a bit longer one for the website, a list for Versiontracker, something with proper english sentences for Freshmeat, etc....
Write a news blurb (or rather multiple to be used in the following). Usually, you want a bit longer one for the website, a list for Versiontracker, something with proper english sentences for Freshmeat, etc....


* Write a news item for our website (also to be used as template for news items on other sites).
* Write a news item for our website (also to be used as a template for news items on other sites).
* Update / notify various sites:
** Create <tt>data/compatibility/compat-2.1.1.xml</tt>
** Create a SF.net news item
** Update <tt>data/downloads.xml</tt> file
** [http://freecode.com/ Freecode]  
** Change version constants in <tt>include/Constants.php</tt>
** Make sure Sparkle cast is updated (see [[#Signing binaries]])
* Update / notify various sites:
** Post about the release on our forums
** Post about the release on our forums
** ... more ?
** Post about the release on Facebook
* Put the updated web site online
* Put the updated web site online
* Update IRC channel topic
* Update IRC and Discord channel topics


=== Updating the wiki ===
=== Updating the wiki ===

Navigation menu