Difference between revisions of "Releasing Products"

From AlliedModders Wiki
Jump to: navigation, search
m
m (Add product.version to files needing bumpage)
 
(43 intermediate revisions by 4 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>For Metamod:Source, edit <tt>support/buildbot/bootstrap.pl</tt>. Change the file like [http://hg.alliedmods.net/releases/sourcemod-1.1/rev/4bfc362ba419 this changeset].</li>
+
** Update master.cfg in buildbot buildmaster. Don't forget to push the change to github
<li>For SourceMod:
+
** Force builds on the new dev and stable branches via pushbuild.txt
  <ol>
+
* Downloads
  <li>Edit <tt>tools/buildbot/build_type</tt>. Change the "dev" string to "rel".</li>
+
** Run <code>mount -orw /mnt/downloads</code> on web01
  <li>Edit <tt>product.version</tt> to remove the -dev tag.</li>
+
** Run <code>mkdir /mnt/downloads/smdrop/'''''1.11'''''</code>, chmod 775 it, fix ownership
  <li>Edit <tt>plugins/include/version.inc</tt> to remove the -dev tag.</li>
+
** Run <code>mount -oro /mnt/downloads</code>
  </ol>
+
** Fix sm_commit_log by updating last ~N master builds to be the new stable branch
<li>Commit the changes. Do not push.</li>
+
** Update <code>~sourcemod/public_html/downloads.php</code>
<li>For Metamod:Source, be at the top level of the tree, and run:
+
** Add an entry to <code>~sourcemod/web-commit-updater/updater.php</code> for the new version
<pre>
+
* Gamedata updater (run commands from inside <code>~sourcemod/update</code>)
support/versionchanger.pl
+
** Clone the new branch into <code>'''''1.11-dev'''''</code>
</pre>
+
** Create a <code>'''''update-1.11.sh'''''</code> script for the new version
Once you're done, use <tt>hg diff</tt> to verify that version numbers have been bumped.  Commit the change.</li>
+
** Run <code>php add_version.php --version '''''1.11.0''''' --path '''''1.11-dev'''''</code>
<li>Push.  Watch the waterfall page until builds are complete.</li>
+
** Run <code>php update/add_version.php --version '''''1.12.0''''' --path master</code>
</ol>
+
** Run <code>./'''''update-1.11.sh'''''</code>
 
+
** Run <code>./update-master.sh</code>
=Post-Build Work=
+
* Web compiler and forum
<ol>
+
** Create a <code>~sourcemod/'''''compiler-1.11'''''</code> directory, drop spcomp + includes there
<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>
+
** Change the <code>~sourcemod/compiler</code> symlink to the new version
<li>Install the packages on both Linux and Windows.  '''MAKE SURE THE VERSIONS ARE CORRECT.  THERE SHOULD BE NO -dev TAG.'''
+
** 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
<br><br>
+
** Update <code>~sourcemod/public_html/vbcompiler.php</code>
Metamod:Source checks:
+
** Update forum's newthread.php and editpost.php (search for ccversion). Do this on staging, create a production PR in bitbucket, then pull
<pre>
+
* SP docs
meta version
+
** Pull and rebuild <code>~sourcemod/scripts/sourcepawn/exp/tools/docparse</code> if needed
</pre>
+
** <code>git checkout</code> new branch into <code>~sourcemod/scripts/sourcemod</code>
SourceMod checks:
+
** From <code>~sourcemod/scripts/sourcepawn/exp/docgen/generate/</code>, run <code>python generate.py</code>
<pre>
 
sm plugins list
 
sm exts list
 
sm version
 
</pre></li>
 
<li>If the versions are not correct, do not release.</li>
 
<li>For SourceMod, you need to add the language translation packs.
 
<br><br>
 
  '''If this is a major release (1.X.0), there is no prior pack.  Make one:'''
 
  <ol>
 
  <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>Repackage thefolders 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 minor 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>Repackage thefolders 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 iroh 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.zip</tt> or <tt>mmsource-1.8.0.zip</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.7.0 release:
 
<pre>
 
./mirror.pl 4 1.7.0 mmsource-1.7.0.zip
 
./mirror.pl 4 1.7.0 mmsource-1.7.0.tar.gz
 
</pre>
 
These commands mirrored the last SourceMod release:
 
<pre>
 
./mirror.pl 2 1.1.1 sourcemod-1.1.1.tar.gz
 
./mirror.pl 2 1.1.1 sourcemod-1.1.1.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> contents back to "dev".</li>
 
<li>For SourceMod, bump the two minor versions in <tt>plugins/include/version.inc</tt> and re-add the -dev tag to the version string.</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 iroh as yourself:
 
<pre>
 
/scripts/amjump sourcemod
 
cd /home/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 sourcemm account by logging into iroh as yourself:
 
<pre>
 
/scripts/amjump sourcemm
 
cd /home/groups/sourcemm
 
</pre>
 
</li>
 
<li>Edit the <tt>public_html/templates/content_downloads.tpl</tt> file with your favorite text editor.  Edit all instances of the old version with the new one.  Update all Mercurial links with the tagged changeset ID for this release.</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 sourcemm account.</li>
 
</ol>
 

Latest revision as of 10: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