Difference between revisions of "Releasing Products"

From AlliedModders Wiki
Jump to: navigation, search
m (Cleaning up the Tree)
m
(38 intermediate revisions by 4 users not shown)
Line 1: Line 1:
This is an internal page for doing AlliedModders product releases.
+
=Releasing SourceMod=
 
+
<li>Create a git branch.</li>
=Making Builds=
+
<li>Update master.cfg in buildbot buildmaster. Don't forget to push the change to github.</li>
<ol>
+
<li>mount -orw /mnt/downloads on web01.</li>
<li>Once you are '''absolutely sure''' the product is ready for a release...</li>
+
<li>mkdir /mnt/downloads/smdrop/<new release folder>, chmod 775 it, fix ownership.</li>
<li>Jump to a Linux system, check out the source tree.</li>
+
<li>mount -oro /mnt/downloads.</li>
<li>Update the changelog (<tt>changelog.txt</tt> for SourceMod, <tt>support/changelog.txt</tt> for Metamod:Source).</li>
+
<li>Fix sm_commit_log by updating last ~N master builds to be the new stable branch.</li>
<li>For Metamod:Source, edit <tt>support/buildbot/bootstrap.pl</tt>.  For SourceMod, edit <tt>tools/buildbot/bootstrap.pl</tt>.  Change the file like [http://hg.alliedmods.net/sourcemod-1.1/rev/4bfc362ba419 this changeset].  In both files this is the last line.  It must be commented so BuildBot does not run the <tt>versionchanger.pl</tt> script.</li>
+
<li>Update ~sourcemod downloads.php.</li>
<li>Once <tt>bootstrap.pl</tt> has been edited, commit the change.  Do not push.</li>
+
<li>Update ~sourcemod vbcompiler.php.</li>
<li>For Metamod:Source, be at the top level of the tree, and run:
+
<li>Update forums newpost.php and editpost.php (search for ccversion). Do this on staging, create a production PR in bitbucket, then pull.</li>
<pre>
+
<li>Create a ~sourcemod/compiler-1.<version> folder, drop spcomp + includes there.</li>
support/versionchanger.pl
+
<li>Add an entry to web-commit-updater/updater.php for the new version.</li>
</pre>
+
<li>Force builds on the new dev and stable branches via pushbuild.txt.</li>
For SourceMod, be at the top level of the tree, and run:
+
<li>Add a script for the new version in ~sourcemod/update.</li>
<pre>
+
<li>Change the ~sourcemod/compiler symlink to the new version.</li>
tools/versionchanger.pl
+
<li>Update hardcoded verison in ~sourcemod compiler.php.</li>
</pre>
+
<li>git checkout new branch in ~sourcemod/sourcemod, then generate.py in /scripts/sourcepawn/exp/docgen/generate</li>
Once you're done, use <tt>hg diff</tt> to verify that version numbers have been bumped.  Commit the change.</li>
 
<li>Push.  Watch the waterfall page until builds are complete.</li>
 
</ol>
 
 
 
=Post-Build Work=
 
<ol>
 
<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>
 
<li>Install the packages on both Linux and Windows.  '''MAKE SURE THE VERSIONS ARE CORRECT. THERE SHOULD BE NO -dev TAG.'''
 
<br><br>
 
Metamod:Source checks:
 
<pre>
 
meta version
 
</pre>
 
SourceMod checks:
 
<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> and <tt>modules.version</tt> at the root of the tree.</li>
 
<li>Run <tt>versionchanger.pl</tt> again, from the root of the tree (see section 1, step 6). This time, however, add <tt>--buildstring=-dev</tt> to the command line so that the -dev tag is added on any manual builds.</li>
 
<li>Back out the <tt>bootstrap.pl</tt> change, so <tt>versionchanger.pl</tt> runs with the -dev tag again.
 
<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>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>
 
<li>Exit out of the sourcemod account.</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>
 

Revision as of 19:49, 19 October 2019

Releasing SourceMod

  • Create a git branch.
  • Update master.cfg in buildbot buildmaster. Don't forget to push the change to github.
  • mount -orw /mnt/downloads on web01.
  • mkdir /mnt/downloads/smdrop/<new release folder>, chmod 775 it, fix ownership.
  • mount -oro /mnt/downloads.
  • Fix sm_commit_log by updating last ~N master builds to be the new stable branch.
  • Update ~sourcemod downloads.php.
  • Update ~sourcemod vbcompiler.php.
  • Update forums newpost.php and editpost.php (search for ccversion). Do this on staging, create a production PR in bitbucket, then pull.
  • Create a ~sourcemod/compiler-1.<version> folder, drop spcomp + includes there.
  • Add an entry to web-commit-updater/updater.php for the new version.
  • Force builds on the new dev and stable branches via pushbuild.txt.
  • Add a script for the new version in ~sourcemod/update.
  • Change the ~sourcemod/compiler symlink to the new version.
  • Update hardcoded verison in ~sourcemod compiler.php.
  • git checkout new branch in ~sourcemod/sourcemod, then generate.py in /scripts/sourcepawn/exp/docgen/generate