|
|
(23 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 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).</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>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>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.
| |