Difference between revisions of "HOWTO-Release"

Jump to navigation Jump to search
2,935 bytes added ,  18:19, 20 September 2022
m
Clarify major vs. minor release
(Update Buildbot instructions)
m (Clarify major vs. minor release)
(24 intermediate revisions by 5 users not shown)
Line 3: Line 3:
''This is work in progress and needs to be completed!''
''This is work in progress and needs to be completed!''


All examples are based on 1.7 and 1.7.0 version. Don't forget to adapt with the adequate version.
All examples are based on the 2.6 and 2.6.0 version. Don't forget to adapt with the adequate version number.


=== Definitions ===
* Major release: A major release marks the leap from e.g. ScummVM 2.6.x to 2.7.x
* Minor release: A minor release marks the exact version we release, e.g. ScummVM 2.6.0 or 2.6.1.


=== Preparations ===
=== Preparations ===
Line 21: Line 25:


=== Branching for major release ===
=== Branching for major release ===
* Create a branch for the 2.2.x releases from master, named branch-2-2
* Before creating the branch make sure there is no pending changes on weblate
** <code>git checkout -b branch-2-2 master</code>
** Go to repository maintenance for the ScummVM/scummvm component on the translations website: https://translations.scummvm.org/projects/scummvm/scummvm/#repository
* Increase version on branch-2-2 to 2.2.0pre (using <code>devtools/update-version.pl</code>; see below), and commit
*** Lock the component
** <code>devtools/update-version.pl 2 2 0 pre</code>
*** Commit pending changes, and push.
** <code>git commit -m "RELEASE: This is 2.2.0pre" -a</code>
* Create a branch for the 2.6.x releases from master, named branch-2-6
* Create annotated tag desc/2.2.0pre on that commit and push
** <code>git checkout -b branch-2-6 master</code>
** <code>git tag -m "Mark 2.2.0pre" desc/2.2.0pre</code>
* Increase version on branch-2-6 to 2.6.0pre (using <code>devtools/update-version.pl</code>; see below), and commit
** <code>git push origin tag desc/2.2.0pre branch-2-2:branch-2-2</code>
** <code>devtools/update-version.pl 2 6 0 pre</code>
* Increase version on master to 2.3.0git, and commit
** <code>git commit -m "RELEASE: This is 2.6.0pre" -a</code>
* Create annotated tag desc/2.6.0pre on that commit and push
** <code>git tag -a -m "Mark 2.6.0pre" desc/2.6.0pre</code>
** <code>git push origin tag desc/2.6.0pre branch-2-6:branch-2-6</code>
* Update doc/docportal/other_platforms/ios.rst to clone the new branch
** Change <code>git clone <nowiki>https://github.com/scummvm/scummvm.git</nowiki></code> to <code>git clone --depth 1 -b branch-2-6 <nowiki>https://github.com/scummvm/scummvm.git</nowiki></code>
** <code>git add doc/docportal/other_platforms/ios.rst</code>
** <code>git commit -m 'DOC: Update iOS clone command for 2.6 branch'</code>
** <code>git push</code>
* Increase version on master to 2.7.0git, and commit
** <code>git checkout master</code>
** <code>git checkout master</code>
** <code>devtools/update-version.pl 2 3 0 git</code>
** <code>devtools/update-version.pl 2 7 0 git</code>
** <code>git commit -m "RELEASE: This is 2.3.0git" -a</code>
** <code>git commit -m "RELEASE: This is 2.7.0git" -a</code>
* Create annotated tag desc/2.3.0git on that commit and push
* Create annotated tag desc/2.7.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.7.0git" desc/2.7.0git</code>
** <code>git push origin tag desc/2.3.0git master</code>
** <code>git push origin tag desc/2.7.0git master</code>
* Switch Weblate to the new branch
** Go to the component Version control Settings: https://translations.scummvm.org/settings/scummvm/scummvm/#vcs
*** Change the Repository branch setting from master to the new branch
** Go to repository maintenance for the ScummVM/scummvm component on the translations website: https://translations.scummvm.org/projects/scummvm/scummvm/#repository
*** Unlock the component
* Update buildbot
* Update buildbot
** 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>.
** 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>.
Line 41: Line 59:
** 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>
** 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]]
** Update the code on the server and reload the buildbot as described [[Buildbot#Administration_on_server|here]]
** Login on Buildbot, force a build of fetch-stable with cleaning to make sure latest Git is downloaded.
** Remove the old snapshots: <code> rm /home/buildbot/dockerized-bb/buildbot-data/packages/snapshots/stable/*</code>
* User Manual
** Login on Buildbot, force a build of fetch-stable with cleaning and packaging to create packages for the new stable.
** Add new version in ReadTheDocs
** Edit <code>_manualversion</code> in <code>configure</code> in the branch to use that version by default, and commit.
* Communication
* Communication
** Update IRC and Discord channel description
** Update IRC and Discord channel description
Line 59: Line 75:
=== Preparing the source ===
=== Preparing the source ===
* Browse 'git log' since the previous release and add all significant changes to the NEWS file
* Browse 'git log' since the previous release and add all significant changes to the NEWS file
* Make sure the translations.dat file is up to date. This file is automatically generated once per week (on Monday morning) and may need to be updated manually if changes to the translations occurred since the last Monday. Use ''make translations-dat'' to update the file (and then commit it if it was changed).
* For a major release, make sure the translations.dat file is up to date.
** Go to repository maintenance for the ScummVM/scummvm component on the translations website: https://translations.scummvm.org/projects/scummvm/scummvm/#repository
*** Lock the component
*** Commit and push pending changes
** Use ''make translations-dat'' to update the translations data file (and then commit it if it was changed).
** At this point Weblate can be switched back to master:
*** Copy all po/*po file from the release branch
*** In master branch run <code>make updatepot ; make po/*.po</code>
*** Commit and push: <code>git add po/scummvm.pot po/*.po ; git commit -m "I18N: Merge translations from branch-2-6" ; git push</code>
*** On https://translations.scummvm.org/settings/scummvm/scummvm/#vcs switch the repository branch setting back to master
*** On https://translations.scummvm.org/projects/scummvm/scummvm/#repository unlock the component
* You have to update the versions in all relevant files. There is a script, <code>devtools/update-version.pl</code> meant to help you with this.  It will generate/update the following files:
* You have to update the versions in all relevant files. There is a script, <code>devtools/update-version.pl</code> meant to help you with this.  It will generate/update the following files:
** base/internal_version.h
** base/internal_version.h
Line 71: Line 97:
*Make sure ADGF_TESTING flag is cleared on all games.
*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 88: Line 110:
** 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 106: Line 128:
*** 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)
*** scummremastered.zip (from gui/themes directory) (if your port uses new GUI)
**** 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)
*** ultima.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
* Add a news item.
*** Create a ReleaseNotes file on FRS with the changes from this release (from NEWS file).
* 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
**** Translate it to ReleaseNotes.html with https://markdowntohtml.com/
* Copy over the release files to FRS
*** Sign the macOS and Win32 binaries with our private key for Sparkle
** Set the OS for the newly uploaded binaries (click on the (i) next to each binary).
*** Update the scummvm_appcast.xml file in scummvm/dist/macosx/.
*** -win32.exe as Windows binary
*** Copy the app cast file on the website as appcasts/macosx/release.xml
*** -macosx.dmg as Mac binary
** Copy over the release files to FRS
*** .tar.bz2 as Linux, FreeBSD and Other binary
*** Set the OS for the newly uploaded binaries (click on the (i) next to each binary).
*** -solaris-x86.tar.gz as Solaris binary
**** -win32.exe as Windows binary
* On [https://docs.google.com/spreadsheets/d/1QzwFleEKXOsE59cYMOcQB7C2f0Np48uAQOCG8kicX_s/edit#gid=854570757 the ScummVM Data spreadsheet]
**** -macosx.dmg as Mac binary
** On the <code>versions</code> tab, add the new release to the bottom of the list
**** .tar.bz2 as Linux, FreeBSD and Other binary
** 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. Verify that all ports that don't have the new version (yet) are set to "old", so they appear in the right section of our website.
**** -solaris-x86.tar.gz as Solaris binary
**'''WARNING:''' The website update script keeps track of the different sheets in the spreadsheet file based on an internal ID. You '''must''' use the exact same sheet for every release. This means that you have to temporarily duplicate the downloads sheet and constantly update it while the porters submit their builds - you don't want to all builds at once right before the release. As soon as the release is about to get published, '''copy over all content of the temporary scummvm_downloads sheet to the productive one.''' '''You must not rename the old sheet under any circumstances, it will break the website!'''


=== 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 172: Line 180:
** <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.
** Open [https://readthedocs.org/dashboard/ Read The Docs Portal]
**# Click on '''ScummVM'''
**# Click on '''Versions'''
**# Find the relevant tag like 'v2.6.0'
**# Press '''Activate'''


=== Creating source tarballs ===
=== Creating source tarballs ===
Line 209: Line 223:


* Write a news item for our website (also to be used as a 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).
** Create <tt>data/compatibility/compat-2.1.1.xml</tt>
** Update <tt>data/downloads.xml</tt> file
** Change version constants in <tt>include/Constants.php</tt>
** Change version constants in <tt>include/Constants.php</tt>
** Make sure Sparkle cast is updated (see [[#Signing binaries]])
** 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.
**Make sure to update the Release information in the datasheet
** Make sure Sparkle appcast is updated (see [[#Signing binaries]])
* Update / notify various sites:  
* Update / notify various sites:  
** Post about the release on our forums
** Post about the release on our forums
** Post about the release on Facebook
** 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 and Discord channel topics
* 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 ===
329

edits

Navigation menu