Difference between revisions of "Releasing Products"

From AlliedModders Wiki
Jump to: navigation, search
m (Clarify where translation directory is)
m (Add product.version to files needing bumpage)
 
(26 intermediate revisions by 3 users not shown)
Line 1: Line 1:
This is an internal page for doing AlliedModders product releases.
+
== Releasing SourceMod ==
  
=Making Builds=
+
'''''Bold italic''''' values should be replaced as appropriate for the release.
<ol>
+
* General
<li>Once you are '''absolutely sure''' the product is ready for a release...</li>
+
** Create a git branch
<li>Jump to a Linux system, check out the source tree.</li>
+
** Bump product.version and plugins/include/version.inc numbers for manual builds
<li>Update the changelog (<tt>changelog.txt</tt> for SourceMod, <tt>support/changelog.txt</tt> for Metamod:Source).</li>
+
* Buildbot
<li>Edit the build_type file and change the "dev" string to "rel" (<tt>tools/buildbot/build_type</tt> for SourceMod, <tt>support/buildbot/build_type</tt> for Metamod:Source).
+
** Update master.cfg in buildbot buildmaster. Don't forget to push the change to github
<li>Edit <tt>product.version</tt> to remove the -dev tag.</li>
+
** Force builds on the new dev and stable branches via pushbuild.txt
<li>Commit the changes.</li>
+
* Downloads
<li>Push.  Watch the waterfall page until builds are complete.</li>
+
** Run <code>mount -orw /mnt/downloads</code> on web01
</ol>
+
** Run <code>mkdir /mnt/downloads/smdrop/'''''1.11'''''</code>, chmod 775 it, fix ownership
 
+
** Run <code>mount -oro /mnt/downloads</code>
=Post-Build Work=
+
** Fix sm_commit_log by updating last ~N master builds to be the new stable branch
<ol>
+
** Update <code>~sourcemod/public_html/downloads.php</code>
<li>Grab the binaries from the drop site ([http://metamodsource.net/mmsdrop/ MM:S drop site], [http://sourcemod.net/smdrop/ SourceMod drop site]).  It will be the latest package.</li>
+
** Add an entry to <code>~sourcemod/web-commit-updater/updater.php</code> for the new version
<li>Install the packages on both Linux and Windows.  '''MAKE SURE THE VERSIONS ARE CORRECT.  THERE SHOULD BE NO -dev TAG.'''
+
* Gamedata updater (run commands from inside <code>~sourcemod/update</code>)
<br><br>
+
** Clone the new branch into <code>'''''1.11-dev'''''</code>
Metamod:Source checks:
+
** Create a <code>'''''update-1.11.sh'''''</code> script for the new version
<pre>
+
** Run <code>php add_version.php --version '''''1.11.0''''' --path '''''1.11-dev'''''</code>
meta version
+
** Run <code>php update/add_version.php --version '''''1.12.0''''' --path master</code>
</pre>
+
** Run <code>./'''''update-1.11.sh'''''</code>
SourceMod checks:
+
** Run <code>./update-master.sh</code>
<pre>
+
* Web compiler and forum
sm plugins list
+
** Create a <code>~sourcemod/'''''compiler-1.11'''''</code> directory, drop spcomp + includes there
sm exts list
+
** Change the <code>~sourcemod/compiler</code> symlink to the new version
sm version
+
** Update hardcoded version in <code>~sourcemod/public_html/compiler.php</code> and change the "you can use this to compile plugins for SourceMod '''''1.11''''' or higher" text if necessary
</pre></li>
+
** Update <code>~sourcemod/public_html/vbcompiler.php</code>
<li>If the versions are not correct, do not release.</li>
+
** Update forum's newthread.php and editpost.php (search for ccversion). Do this on staging, create a production PR in bitbucket, then pull
<li>For SourceMod, you need to add the language translation packs and update the GeoLite Country data file. 
+
* SP docs
<br><br>
+
** Pull and rebuild <code>~sourcemod/scripts/sourcepawn/exp/tools/docparse</code> if needed
  '''If this is a major release (1.X.0), there is no prior pack.  Make one:'''
+
** <code>git checkout</code> new branch into <code>~sourcemod/scripts/sourcemod</code>
  <ol>
+
** From <code>~sourcemod/scripts/sourcepawn/exp/docgen/generate/</code>, run <code>python generate.py</code>
  <li>Extract both the tar.gz and zip files to separate folders.</li>
 
  <li>Visit the [http://www.sourcemod.net/translator/?go=translate&op=status translator status page].</li>
 
  <li>Click "export languages.cfg" - save the new version to <tt>addons/sourcemod/configs/</tt>, overwriting the old one.</li>
 
  <li>Click "export" next to each language that is finished.  Extract the folder to <tt>addons/sourcemod/translations/</tt>.  For example, if you extract Spanish, you should have <tt>addons/sourcemod/translations/es/</tt> complete with ML files.</li>
 
  <li>Download the latest GeoLite Country binary file from http://dev.maxmind.com/geoip/geolite</li>
 
  <li>Extract the GeoIP.dat and replace the existing copy in addons/sourcemod/configs/geoip</li>
 
  <li>Repackage the folders using the correct compression types (.tar.gz for Linux, .zip for Windows).</li>
 
  </ol>
 
<b>If this is a minor release (1.X.Y where Y != 0), there is already a prior pack.  Add it in:</b>
 
  <ol>
 
  <li>Extract both the tar.gz and zip files to separate folders.</li>
 
  <li>Download the last major release from the same branch as this release.</li>
 
  <li>Copy the <tt>addons/sourcemod/configs/languages.cfg</tt> file from the old release over the new one.</li>
 
  <li>Copy the <tt>addons/sourcemod/translations/</tt> sub-folders from the old release over to the new one.</li>
 
  <li>Download the latest GeoLite Country binary file from http://dev.maxmind.com/geoip/geolite</li>
 
  <li>Extract the GeoIP.dat and replace the existing copy in addons/sourcemod/configs/geoip</li>
 
  <li>Repackage the folders using the correct compression types (.tar.gz for Linux, .zip for Windows).</li>
 
  </ol>
 
<li>The build is done!</li>
 
</ol>
 
 
 
=Releasing to Mirrors=
 
<ol>
 
<li>Log into web01 as yourself.  Upload your final builds to your home directory.</li>
 
<li>Run:
 
<pre>
 
/scripts/amjump mirror
 
cd /scripts/mirror
 
</pre>
 
</li>
 
<li>Copy your final builds from your home directory into the mirror folder.  Rename them to release names, for example: <tt>sourcemod-1.1.2-windows.zip</tt> or <tt>mmsource-1.8.0-linux-tar.gz</tt>.</li>
 
<li>Mirror distribution is done with the following command:
 
<pre>
 
./mirror.pl <projectID> <releaseName> <file>
 
</pre>
 
Metamod:Source's ID is 4, SourceMod's ID is 2.  For example, these commands mirrored the Metamod:Source 1.8.7 release:
 
<pre>
 
./mirror.pl 4 1.8.7 mmsource-1.8.7-linux.zip
 
./mirror.pl 4 1.8.7 mmsource-1.8.7-windows.tar.gz
 
./mirror.pl 4 1.8.7 mmsource-1.8.7-mac.tar.gz
 
</pre>
 
These commands mirrored the SourceMod 1.4.0 release:
 
<pre>
 
./mirror.pl 2 1.4.0 sourcemod-1.4.0-linux.tar.gz
 
./mirror.pl 2 1.4.0 sourcemod-1.4.0-windows.zip
 
./mirror.pl 2 1.4.0 sourcemod-1.4.0-mac.zip
 
</pre>
 
</li>
 
<li>Type <tt>exit</tt> to get back to your user account. You're done!</li>
 
</ol>
 
 
 
=Cleaning up the Tree=
 
It's time to make sure the tree is set for future development.
 
 
 
<ol>
 
<li>Run <tt>hg tag</tt> on the last revision of the release. Usually this is the changeset that bumped versions, and usually this is <tt>tip</tt>.  For example, Metamod:Source:
 
<pre>hg tag mmsource-1.7.2</pre>
 
SourceMod:
 
<pre>hg tag sourcemod-1.1.2</pre>
 
</li>
 
<li>Bump the minor version in <tt>product.version</tt>. Don't forget to add -dev.</li>
 
<li>Change the <tt>tools/buildbot/build_type</tt> (SourceMod) or <tt>support/buildbot/build_type</tt> (Metamod:Source) contents back to "dev".</li>
 
<li>Commit and push.</li>
 
</ol>
 
 
 
=Updating the SourceMod Site=
 
<ol>
 
<li>Visit a [http://wiki.alliedmods.net/SourceMod_Release_Notes Release Notes] page.  Copy the contents, make a new one for your specific release.  Update the changelog, relnote anything big and important.  Link back to it from the "main" relnotes page.</li>
 
<li>Jump to the sourcemod account by logging into web01 as yourself:
 
<pre>
 
/scripts/amjump sourcemod
 
cd /groups/sourcemod
 
</pre>
 
</li>
 
<li>Edit the <tt>public_html/downloads.php</tt> file with your favorite text editor.  Edit all instances of the old version with the new one.  Make sure to get every link, including relnotes.</li>
 
<li>Update ~/compiler-1.x to the latest minor version, where x is the major version number.</li>
 
<li>Run <tt>~/scripts/purge_old_builds.pl</tt>, then edit its entry for 1.x.y, where x = this major release, and y = the new minor version.</li>
 
<li>Exit out of the sourcemod account.</li>
 
<li>Post news.  If you deviate from normal style, don't forget links for downloads, upgrading, and relnotes.  It also helps to say "this is backwards compatible" because users will always ask.</li>
 
</ol>
 
 
 
=Updating the Metamod:Source Site=
 
<ol>
 
<li>Jump to the alliedmodders account by logging into web01 as yourself:
 
<pre>
 
/scripts/amjump alliedmodders
 
cd /groups/alliedmodders/hub/amhub
 
</pre>
 
</li>
 
<li>Edit the <tt>mmsource.py</tt> file with your favorite text editor. Update the <tt>latest</tt> version number in the <tt>downloads</tt> function.  If this is a new major release (1.X.0), update the <tt>stable</tt> and <tt>devel</tt> version numbers in the <tt>downloads</tt> and <tt>snapshots</tt> functions.</li>
 
<li>Edit the <tt>templates/mmsource/navbar.html</tt> file and replace all instances of the old version with the new one.
 
<li>Run the following command:
 
<pre>
 
touch ../run/apache.wsgi
 
</pre>
 
</li>
 
<li>Post news.  Do this by making a post in [https://forums.alliedmods.net/forumdisplay.php?f=124 this forum], which is private.  LOOK AT OLDER POSTS - you need to write valid XHTML!</li>
 
<li>Exit out of the alliedmodders account.</li>
 
</ol>
 
 
 
=Updating Translations=
 
This section applies to SourceMod major releases. In order to update the translator tool, shell in as the "sourcemod" user. Find the /scripts/translation folder in the sourcemod group homedir. Run the following steps:
 
* cd sourcemod
 
* hg pull -u
 
* cd ..
 
* ./sync_lang_files.pl sourcemod/translations
 
 
 
Any languages with a non-green status will not be exported, so a few weeks before a release it is a good idea to post news asking for translators.
 

Latest revision as of 11:58, 20 October 2024

Releasing SourceMod

Bold italic values should be replaced as appropriate for the release.

  • General
    • Create a git branch
    • Bump product.version and plugins/include/version.inc numbers for manual builds
  • Buildbot
    • Update master.cfg in buildbot buildmaster. Don't forget to push the change to github
    • Force builds on the new dev and stable branches via pushbuild.txt
  • Downloads
    • Run mount -orw /mnt/downloads on web01
    • Run mkdir /mnt/downloads/smdrop/1.11, chmod 775 it, fix ownership
    • Run mount -oro /mnt/downloads
    • Fix sm_commit_log by updating last ~N master builds to be the new stable branch
    • Update ~sourcemod/public_html/downloads.php
    • Add an entry to ~sourcemod/web-commit-updater/updater.php for the new version
  • Gamedata updater (run commands from inside ~sourcemod/update)
    • Clone the new branch into 1.11-dev
    • Create a update-1.11.sh script for the new version
    • Run php add_version.php --version 1.11.0 --path 1.11-dev
    • Run php update/add_version.php --version 1.12.0 --path master
    • Run ./update-1.11.sh
    • Run ./update-master.sh
  • Web compiler and forum
    • Create a ~sourcemod/compiler-1.11 directory, drop spcomp + includes there
    • Change the ~sourcemod/compiler symlink to the new version
    • Update hardcoded version in ~sourcemod/public_html/compiler.php and change the "you can use this to compile plugins for SourceMod 1.11 or higher" text if necessary
    • Update ~sourcemod/public_html/vbcompiler.php
    • Update forum's newthread.php and editpost.php (search for ccversion). Do this on staging, create a production PR in bitbucket, then pull
  • SP docs
    • Pull and rebuild ~sourcemod/scripts/sourcepawn/exp/tools/docparse if needed
    • git checkout new branch into ~sourcemod/scripts/sourcemod
    • From ~sourcemod/scripts/sourcepawn/exp/docgen/generate/, run python generate.py