Difference between revisions of "Releasing Products"

From AlliedModders Wiki
Jump to: navigation, search
(Post-Build Work)
 
(17 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 sourcemod/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 and push 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 and Mac).</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.tar.gz
 
./mirror.pl 4 1.8.7 mmsource-1.8.7-windows.zip
 
./mirror.pl 4 1.8.7 mmsource-1.8.7-mac.zip
 
</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>git tag</tt> on the last revision of the release.  Usually this is the changeset that bumped versions, and usually this is the branch <tt>tip</tt>. After you have tagged the changeset, push the tag upstream.  For example, Metamod:Source:
 
<pre>git tag -a mmsource-1.7.2 -m "Metamod:Source 1.7.2"
 
git push origin mmsource-1.7.2</pre>
 
SourceMod:
 
<pre>git tag -a sourcemod-1.1.2 -m "SourceMod 1.1.2"
 
git push origin 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>If a new major version, find someone with access to edit the forums if not yourself, and have the new compiler version added to editpost.php and newthread.php for the dropdown when editing plugin posts.</li>
 
<li>Find someone with access to the smdocs user if not yourself, and have the api docs updated by logging in as smdocs, navigating to ~/scripts/sync_api, replace the contents of the build directory with the new SM release, and run the run.sh script.</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
 
* git pull
 
* 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 07:59, 24 July 2022

Releasing SourceMod

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

  • General
    • Create a git branch
    • Bump sourcemod/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