Difference between revisions of "HOWTO-Release"

Jump to navigation Jump to search
2,741 bytes added ,  18:54, 13 January 2022
Creating an "Updating the Website" section
(Creating an "Updating the Website" section)
(29 intermediate revisions by 6 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 ===
Line 18: Line 27:
** <code>git commit -m "RELEASE: This is 2.2.0pre" -a</code>
** <code>git commit -m "RELEASE: This is 2.2.0pre" -a</code>
* Create annotated tag desc/2.2.0pre on that commit and push
* Create annotated tag desc/2.2.0pre on that commit and push
** <code>git tag -m "Mark 2.2.0pre" desc/2.2.0pre</code>
** <code>git tag -a -m "Mark 2.2.0pre" desc/2.2.0pre</code>
** <code>git push origin tag desc/2.2.0pre branch-2-2:branch-2-2</code>
** <code>git push origin tag desc/2.2.0pre branch-2-2:branch-2-2</code>
* Increase version on master to 2.3.0git, and commit
* Increase version on master to 2.3.0git, and commit
Line 25: Line 34:
** <code>git commit -m "RELEASE: This is 2.3.0git" -a</code>
** <code>git commit -m "RELEASE: This is 2.3.0git" -a</code>
* Create annotated tag desc/2.3.0git on that commit and push
* Create annotated tag desc/2.3.0git on that commit and push
** <code>git tag -m "Mark 2.3.0git" desc/2.3.0git</code>
** <code>git tag -a -m "Mark 2.3.0git" desc/2.3.0git</code>
** <code>git push origin tag desc/2.3.0git master</code>
** <code>git push origin tag desc/2.3.0git master</code>
* Update buildbot
* 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].
** Edit at the end of [https://github.com/scummvm/dockerized-bb/blob/master/buildbot-config/builds.py builds.py] the line starting with <code>builds.append(ScummVMStableBuild("stable",</code>.
** Restart the buildbot as described [[Buildbot#Administration|here]]
** Remove the customizations in <code>class ScummVMStableBuild</code> if there were any to make the code inherit from ScummVMBuild without any difference.
** Edit the file [https://github.com/scummvm/dockerized-bb/blob/master/buildbot-config/platforms.py platforms.py] and remove all specific rules mentioning <code>ScummVMStableBuild</code>
** Update the code on the server and reload the buildbot as described [[Buildbot#Administration_on_server|here]]
** Remove the old snapshots: <code> rm /home/buildbot/dockerized-bb/buildbot-data/packages/snapshots/stable/*</code>
** Login on Buildbot, force a build of fetch-stable with cleaning and packaging to create packages for the new stable.
* Communication
* Communication
** Update IRC and Discord channel description
** Update IRC and Discord channel description
Line 54: Line 67:
** NEWS(.md)
** NEWS(.md)
** COPYRIGHT
** COPYRIGHT
*Make sure ADGF_TESTING flag is cleared on all games.
* Review the following port specific files for version updates:
* Review the following port specific files for version updates:
** backends/platform/ps2/README.PS2
** backends/platform/psp/README.PSP
** backends/platform/psp/README.PSP
** backends/platform/symbian/README
** backends/platform/symbian/README
** backends/platform/wince/README-WinCE.txt
** backends/platform/ds/arm9/dist/readme_ds.txt
** dists/win32/ScummVM.iss (AppVerName)
* Review the release dates in the following port specific files:
* Review the release dates in the following port specific files:
** dists/win32/scummvm.gdf.xml
** dists/win32/scummvm.gdf.xml
Line 72: Line 82:
** There is a script <code>devtools/dist-scummvm.sh</code>, which creates them automatically.
** There is a script <code>devtools/dist-scummvm.sh</code>, which creates them automatically.
** Make sure that porters have write access to the release folder on FRS: <code>chmod 775 <folder></code>
** Make sure that porters have write access to the release folder on FRS: <code>chmod 775 <folder></code>
* Add version to dists/macosx/scummvm_appcast.xml
* Follow the instructions at [[HOWTO-Release#Signing binaries]] in order to enable updates via (Win)Sparkle


=== Branching for minor releases ===
=== Branching for minor releases ===
Line 90: Line 100:
*** AUTHORS
*** AUTHORS
*** COPYING
*** COPYING
*** COPYING.BSD
*** LICENSES/* (all additional licenses)
*** COPYING.FREEFONT
*** COPYING.LGPL
*** COPYING.OFL
*** COPYRIGHT
*** COPYRIGHT
*** NEWS(.md)
*** NEWS(.md)
*** README(.md) (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)
*** if your port uses new GUI:
*** scummclassic.zip (from gui/themes directory) (if your port uses new GUI)
**** scummmodern.zip (from gui/themes directory)
**** scummclassic.zip (from gui/themes directory)
**** scummremastered.zip (from gui/themes directory)
**** residualvm.zip (from gui/themes directory)
*** translations.dat (from gui/themes directory)
*** translations.dat (from gui/themes directory)
*** pred.dic (from dists directory)
*** engine data from dists/engine-data
*** access.dat (from dists/engine-data)
**** *.dat
*** access.dat (from dists/engine-data)
**** grim-patch.lab
*** cryomni3d.dat (from dists/engine-data)
**** monkey4-patch.m4b
*** drascula.dat (from dists/engine-data)
**** pred.dic
*** fonts.dat (from dists/engine-data)
**** queen.tbl
*** hugo.dat (from dists/engine-data)
**** sky.cpt
*** kyra.dat (from dists/engine-data)
**** wintermute.zip
*** lure.dat (from dists/engine-data)
**** xeen.ccs
*** mort.dat (from dists/engine-data)
*** neverhood.dat (from dists/engine-data)
*** queen.tbl (from dists/engine-data)
*** sky.cpt (from dists/engine-data)
*** supernova.dat (from dists/engine-data)
*** teenagent.dat (from dists/engine-data)
*** titanic.dat (from dists/engine-data)
*** tony.dat (from dists/engine-data)
*** toon.dat (from dists/engine-data)
*** wintermute.zip (from dists/engine-data)
*** xeen.ccs (from dists/engine-data)
 
*** your build binary
*** your build binary
*** your build-specific README (optional)
*** your build-specific README (optional)
*** ...
*** ...
* Porters need to upload binaries at some service and then send the link to the team member managing the release (this should be detailed in the email sent to porters with the links to the tarballs).
* Porters need to upload binaries at some service and then send the link to the team member managing the release (this should be detailed in the email sent to porters with the links to the tarballs).
* Update the website internally (i.e. update the version in the repository), but do not yet put these changes online.
 
** Edit <code>include/config.inc.php</code> to update the global version.
=== Updating the Website ===
** Create a new XML file for the new version in <code>data/compatibility/</code>.
Update the website internally (i.e. update the version in the repository), but do not yet put these changes online.
** Update <code>data/downloads.xml</code>.
 
** Add a news item.
* Edit <code>include/config.inc.php</code> to update the global version.
** Sparkle automatic updates
* Create a new XML file for the new version in <code>data/compatibility/</code>.
*** Create a ReleaseNotes file on FRS with the changes from this release (from NEWS file).
* Update <code>data/downloads.xml</code>.
*** Sign the macOS and Win32 binaries with our private key for Sparkle
* Add a news item.
*** Update the scummvm_appcast.xml file in scummvm/dist/macosx/.
* Follow the instructions at [https://wiki.scummvm.org/index.php?title=HOWTO-Release#Signing_binaries HOWTO-Release#Signing binaries] in order to enable updates via (Win)Sparkle
*** Copy the app cast file on the website as appcasts/macosx/release.xml
* Copy over the release files to FRS
** Copy over the release files to FRS
** Set the OS for the newly uploaded binaries (click on the (i) next to each binary).
*** Set the OS for the newly uploaded binaries (click on the (i) next to each binary).
*** -win32.exe as Windows binary
**** -win32.exe as Windows binary
*** -macosx.dmg as Mac binary
**** -macosx.dmg as Mac binary
*** .tar.bz2 as Linux, FreeBSD and Other binary
**** .tar.bz2 as Linux, FreeBSD and Other binary
*** -solaris-x86.tar.gz as Solaris binary
**** -solaris-x86.tar.gz as Solaris binary
* On [https://docs.google.com/spreadsheets/d/1QzwFleEKXOsE59cYMOcQB7C2f0Np48uAQOCG8kicX_s/edit#gid=854570757 the ScummVM Data spreadsheet]
** On the <code>versions</code> tab, add the new release to the bottom of the list
** On the <code>scummvm_downloads</code> tab, for any releases that have been uploaded to FRS, change the <code>version</code> column to match the latest version


=== Tagging a version ===
=== Tagging a version ===
* When 1.7.0 is ready to be announced, make a permanent v1.7.0 tag in git to mark the release
* When 1.7.0 is ready to be announced, make a permanent v1.7.0 tag in git to mark the release
** <code>git checkout branch-1-7-0</code>
** <code>git checkout branch-1-7-0</code>
** <code>git tag -m "Tag v1.7.0" v1.7.0</code>
** <code>git tag -a -m "Tag v1.7.0" v1.7.0</code>
** <code>git push origin tag v1.7.0</code>
** <code>git push origin tag v1.7.0</code>
* Also increase the version number on the 1.7.x branch to 1.7.1pre
* Also increase the version number on the 1.7.x branch to 1.7.1pre
Line 153: Line 153:
** <code>git commit -m "RELEASE: This is 1.7.1pre" -a</code>
** <code>git commit -m "RELEASE: This is 1.7.1pre" -a</code>
* Create annotated tag desc/1.7.1pre on that commit and push
* Create annotated tag desc/1.7.1pre on that commit and push
** <code>git tag -m "Mark 1.7.1pre" desc/1.7.1pre</code>
** <code>git tag -a -m "Mark 1.7.1pre" desc/1.7.1pre</code>
** <code>git push origin tag desc/1.7.1pre branch-1-7:branch-1-7</code>
** <code>git push origin tag desc/1.7.1pre branch-1-7:branch-1-7</code>
*Add this doc to the Read The Doc admin settings to generate the documentation for this version.


=== Creating source tarballs ===
=== Creating source tarballs ===
Line 165: Line 166:


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:
** Change version constants in <tt>include/Constants.php</tt>
** Create a SF.net news item
** Put Release Notes into two files in the release directory, one is plain text, named "ReleaseNotes", another one is HTML, use [https://markdownhtml.com/ markdownhtml.com] service but copy the HTML body tags from the previous release.
** [http://freecode.com/ Freecode]  
**Make sure to update the Release information in the datasheet
** Make sure Sparkle appcast 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
** Post link to the news item to Twitter
* Put the updated web site online
* Put the updated web site online
* Update IRC channel topic
* Update IRC and Discord channel topics
 
=== GitHub release ===
Use https://github.com/scummvm/scummvm/releases/new for creating a new GitHub release:
* Use the current tag as "base" for the release
* Use the current version number as "Release title" (format: 1.2.3, no leading "v")
* Use the current ReleaseNotes in Markdown format for the "Describe this release" field
* GitHub automatically attaches the matching source tarball in .zip and .tar.gz format, so no need to upload it on your own


=== Updating the wiki ===
=== Updating the wiki ===
TrustedUser
567

edits

Navigation menu