Support:Releasing: Difference between revisions

Jump to navigation Jump to search
Content deleted Content added
imported>Hendrik Brummermann
started to convert into wiki formating
imported>Hendrik Brummermann
 
(109 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Likely Outdated}}

From /home/marauroa/doc/releasing.txt
From /home/marauroa/doc/releasing.txt


Line 10: Line 8:
* Ask testers to test everything new and everything old
* Ask testers to test everything new and everything old
* Ask developers to update doc/CHANGES.txt
* Ask developers to update doc/CHANGES.txt
* Ask testers to make nice screenshots of the changes
* Ask testers to make nice screenshots of the changes (to use later for the arianne.sf.net announcement)


=== Version numbers ===
=== Version numbers ===
Line 16: Line 14:


You edit the lines
You edit the lines
version.old = 0.95
version.old = 1.47
version = 0.96
version = 1.48
version.android = 1048000


A version of a.b.c is converted to abbbccc with leading 0 for the Android version code. For example 1.48 is 1048000 and 1.49.1 is 1049001.
I am sure I don't need to explain the numbers or names to you, it is self evident.


=== Branching procedure ===
=== Branching procedure ===
We develop code on HEAD and branch from HEAD for each release.


We develop code on <code>master</code> and branch from <code>master</code> for each release.
Eclipse is a good way to branch: from a HEAD checkout, right click and select Team -> Branch, Click details... to see the names of existing branches, like VERSION_00_RELEASE_XX, so that you are sure you're choosing a name for the new branch which sticks with conventions. Ensure your cvs timeout is sufficiently large that the branching prcoess can complete.


Eclipse is a good way to branch: from a <code>master</code> checkout, right click and select Team -> Switch to | New Branch... Please make sure, that you're choosing a name for the new branch which sticks with conventions. VERSION_0x_RELEASE_yy
Once branch is successfully created, one can can update their IDE to use that branch (follow your IDE instructions for this) or for command line cvs, run cvs update -rVERSION_00_RELEASE_XX -Pd
on your existing HEAD checkout to change it to be for the XX release.


Once a branch is successfully created, one can can update their IDE to use that branch [Team -> Switch to -> Other, Checkout} or for command line:
== Releasing ==
git pull
git checkout VERSION_01_RELEASE_XX

=== Prepare the release announcement ===

* Prepare a nice text about the changes in the new release, preferably from an in-game perspective
* Add two or three screenshots (250px width)
* Don't put it in the website, yet. Perhaps store it in the Support:-section on the wiki?

== Releasing Phase 1: Building and testing ==

=== git checkout ===

* In a shell go to directory /home/marauroa/branch_cvs
* Create subfolder with the version number based on the existing checkout:
* <code>cp -ax stendhal 1.xx</code>
* <code>cd 1.xx</code>
* <code>git pull</code>
* <code>git checkout VERSION_01_RELEASE_xx</code>


=== Building the release ===
=== Building the release ===


* copy the keystore.ks and build.ant-private.properties: <code>cp ../skeleton/* .</code>
Normally when you build the client or server, ant clean && build is enough. For release we need to build many things - not just the server and client but also the server source code, zipped up, the .jnlp file for webstart, and signed jars so that updates work correctly. A signed jar needs a 'key'. This is inside a file called keystore.ks which you can only get from people trusted by the Sun corporation. If you are a Stendhal project admin please ask Miguel for this file. It is placed in the same directory as build.xml etc - i.e. your root stendhal source directory. A keystore alias and password is expected. You can put these as parameters everytime you run ant dist (see below) or in a file called build.ant-private.properties (ask hendrik about this).
* download the last official release to build-archive: <code>cd build-archive; wget <nowiki>http://arianne.sourceforge.net/download/stendhal.zip</nowiki>; mv stendhal.zip stendhal-<oldversion>.zip; cd ..</code>
* run <code>~/bin/build</code>
* copy the output from the signupdated-step into an editor for later use


So, the download and release files are build now
<pre>
Now you are ready to run:


=== Preparing the updater ===
ant dist -Dkeystore.alias=miguelangelblanchlardin@hotmail.com -Dkeystore.password=qwerty


Note: 1.20 is the version of the update-base. (The last time the updater was broken).
You should now have the 4 files for the file release:
the server zip, at build/stendhal-server-0.XX.zip
the 2 client zips, build/stendhal-FULL-0.XX.zip and build/stendhal-0.XX.zip
the source gzip, at build/stendhal-0.XX-src.tar.gz


* download the file <nowiki>http://arianne.sourceforge.net/stendhal/updates/update-1.20.properties</nowiki> and save it as update-1.20.properties.xxx
</pre>
* edit update-1.20.properties.xxx. The file has lots of comments. Important: for the init.file-list and update.file-list parameters, stendhal or stendhal-diff must be the last entry in order to recover from a half-download.
* Use <code>ls -l</code> to learn the file size, the signature have been printed by the build script earlier (see above)
* You need at least stendhal-data-1.xx.jar and stendhal-1.xx.jar for the initial download and stendhal-data-diff-1.xx-1.xx.jar, stendhal-diff-1.xx-1.xx.jar for the update. If there had been changes, include marauroa, stendhal-sound-diff and/or stendhal-music-diff.
* Upload the files to arianne.sourceforge.net: <code>scp * nhnb,arianne@web.sf.net:/home/project-web/arianne/htdocs/stendhal/updates/</code>
* Upload the files to arianne-project.org: <code>cp * /var/www/arianne/stendhal/updates/</code>


=== Uploading the File Release ===
=== Testing the updater ===


* On your local computer find ~/.stendhal/jar/jar.properties and add this line <code>server.update-prop-1.20=<nowiki>http://arianne.sourceforge.net/stendhal/updates/update-1.20.properties.xxx</nowiki></code>
You need to get the folder ready for the files to go in. You can:
* Test a normal update for the download client
* Test a update for the webstart client.
* Test a fresh download for the webstart client.
* Test a webstart start with only diff-files (created by an update of a downloaded client) in the jar-folder


== Releasing Phase 2: Sourceforge Project ==
<pre>
Make a shell session using
ssh -t kymara,arianne@shell.sourceforge.net create
then
cd /home/frs/project/a/ar/arianne/stendhal/
mkdir (version number)


'''Important:''' This is the point of no return.
From your directory of files,
Copy these using for example
scp stendhal-*0.72.zip kymara@frs.sourceforge.net:/home/frs/project/a/ar/arianne/stendhal/0.72
Upload a text file to the same location with release notes.


Only do these next steps when you are sure that you are ready to restart server and make the release go live. get yourself a calming drink and take some deep breaths because the next 30 minutes is going to be hard work.
Or, you can use the UI from sourceforge at Develop -> Project Admin -> File Manager to create the folder and upload the files.


=== Uploading the File Release ===


* Login to the Sourceforge Shell server: <code>ssh -t nhnb,arianne@shell.sourceforge.net create</code>
Once files are uploaded,
* Go to the stendhal folder: <code>cd /home/frs/project/arianne/stendhal</code>
* Create the folder for the download: <code>mkdir 1.xx</code>
* Edit the version number in <code>vi stendhal-readme.markdown</code>
* Logout of the sourceforge shell
* From the build/lib directory of stendhalgame.org, upload the updater/webstart files: <code>scp stendhal-*.jar stendhal*-diff-*.jar nhnb@frs.sourceforge.net:/home/frs/project/arianne/z_old/stendhal-updates</code>
* Upload the distribution <code>scp * nhnb@frs.sourceforge.net:/home/frs/project/arianne/stendhal/1.xx</code>


Alternatively, you can use the Sourceforge webpages at Develop -> Project Admin -> File Manager to create the folder and upload the files.
Copy the server zip to the server machine


=== Release notes and default download ===
Next you need to make the diff files for the updater and sign them.
* Login to Sourceforge with an account that has admin rights for the arianne-project
Go back to your stendhal source directory. We need to know the differences between this version and the old one (as defined in build.ant.properties). So get a stendhal-oldversion.zip and copy it into the directory build-archive.
* Click in Develop -> Project Admin -> File Manager
* Find stendhal and the newly added folder
* Left click on the main download file (full zip) and select all platforms


=== Active the client updater ===
Now run:
ant -f release.xml -Dkeystore.alias=miguelangelblanchlardin@hotmail.com -Dkeystore.password=qwerty


* Update the single line /home/project-web/arianne/htdocs/stendhal.version to be 1.XX
From build/lib, copy stendhal-data-diff-0.67-0.68.jar, stendhal-diff-0.67-0.68.jar, stendhal-starter-0.68.jar to your home directory on sf.net.
* Rename update-1.20.properties.xxx to update-1.20.properties
Use for example scp /home/katie/72stendhal/build/lib/stendhal-diff-0.71-0.72.jar kymara@web.sourceforge.net:htdocs/stendhal/updates/
* Uncomment the announcement in /home/project-web/arianne/htdocs/xml/website_news.xml
* Edit /home/project-web/arianne/htdocs/xml/game_stendhal.xml - update the top part for version and release date, Update the changelog


== Releasing Phase 3: Update stendhalgame.org ==
The updater needs a correctly configured file at http://arianne.sourceforge.net/stendhal/updates/update.properties. We usually create one in that
place called update.properties.xxx and test that it works correctly by editing our ~/stendhal/jar/jar.properties file to have the line
server.update-prop=http\://arianne.sourceforge.net/stendhal/updates/update.properties.xxx


* Double check that the file release is visible, the default download points to the new version, that <nowiki>http://arianne.sourceforge.net/stendhal/updates/update-1.20.properties</nowiki> and <nowiki>http://arianne.sourceforge.net/stendhal.version</nowiki> are updated
There is now an example of update.properties in src/games/stendhal/client/update. File sizes are gotten with ls -l.
* Announce in game: /msg postman tellall Hi, please logout within the next five minutes and return in about ten minutes for a quick server update.
To login and change these files, do e.g. ssh -t kymara,arianne@shell.sourceforge.net create
or use scp as above.


=== Rebuild the server ===


* Rebuild the server because we want it to be unsigned (this makes live-bugfixing easier)
Sourceforge side things
* Go into the cvs checkout folder: <code>/home/marauroa/branch_cvs/1.xx</code>
1) Enter in Sourceforge
* delete the keystore.ks: <code>rm keystore.ks</code>
2) Click in Develop -> Project Admin -> File Manager
* rebuild: <code> ant clean dist</code>
3) Find stendhal and the newly added folder
4) Left click on the release notes text file you uploaded. Tick that it's a release note and save
5) left click on each other file and select the release note for it using teh drop down menu
6) left click on the main download file (full zip) and select all platforms
7) wait for them to show up


=== Update the server process ===
8) Finally email users (arianne-announce@..)
If not already done:
9) Copy diff files for updates and the properties file to /home/project-web/arianne/htdocs/stendhal/updates/
-9b) Copy stendhal-starter-0.XX.jar to /home/project-web/arianne/htdocs/jws/ - if needed
10) Test that updates work with update.properties.xxx. See above


* Go into the server directory: <code>cd /home/marauroa/server</code>
* Delete the old version: <code> rm *1.xx*</code>
* Update the version number in the shell script "stendhal"
* Unzip: <code>unzip ../branch_cvs/1.xx/build/stendhal-server-1.xx.zip</code>
* Announce in game that the server will go down now (so that it is one of the last lines in the chatlog for players)
* Restart the server as root <code>systemctl restart stendhal</code>
* Keep an eye on <code>less log/server.log</code> for errors, hit shift+f to follow, ctrl+c, q to exit


=== Watch the game ===
Only do these next steps when you are sure that you are ready to restart server and make the release go live. get yourself a calming drink and take some deep breaths because the next 10 minutes is going to be hard work.
*Announce to users that server is going down. Shut it down.
*Unzip your stendhal-server-XX.zip into the correct place
*Edit the version number server side in the script /home/marauroa/server/stendhal
*Wait for the person (you?) who is doing the client release to tell you when to restart server.


* Login with an admin char, become visible and wait in townhall.
Back to client release as fast as possible.
* Rent a sign pointing to the release announcement on <nowiki>http://arianne.sf.net</nowiki>
11) Update /home/project-web/arianne/htdocs/stendhal.version to be 0.XX
11b) NOT usually necessary as update takes care of it : Edit /home/project-web/arianne/htdocs/jws/stendhal.jnlp to
have a 0.XX at the line <jar
href="http://arianne.sourceforge.net/jws/stendhal-starter-0.YY.jar" ...
11c) Rename update.properties.xxx to update.properties


12) Finally you need to update the website.
=== Update the website ===
13) Edit /home/project-web/arianne/htdocs/xml/game_stendhal.xml - update the top part for version and release date.
*Tell the server admin they are ok to restart the server
*Login to stendhal just to check all is ok


* change to the parent folder of the cvs checkout: <code>cd /home/marauroa/branch_cvs</code>
13b) Update the changelog on /home/project-web/arianne/htdocs/xml/game_stendhal.xml if you want to.
* delete the old version: <code>rm -rf stendhal </code>
14) Finally write a news item at /home/project-web/arianne/htdocs/xml/website_news.xml
* activate the new version: <code>mv 1.xx stendhal</code> (/var/www/stendhal/data is a symlink pointing to this place)
Just copy an old news item and edit it. Use the blurb and some nice screenshots.
* update the version number in /var/www/stendhal/configuration.php
* update the version number in /var/www/stendhal/stendhal.version (I think this is not used anymore since 0.99)


=== Pointer to announcement ===
If at the same time as doing you're stendhal release, you're also having to do a marauroa release (and all alone) then I sympathise. However the marauroa release is a lot easier. There are no updates
to fiddle with. Just a simple file release, and rememeber to edit
/home/project-web/arianne/htdocs/xml/server_marauroa.xml.


* Login with an admin account to https://stendhalgame.org
For stendhal server website you need to edit /var/www/stendhal/configuration.php to show the new version. You can also make a news items there perhaps linking to the main news item at
* In the right hand side admin-menu, create a News-item
http://arianne.sf.net
* When you see the list of old news-items, scroll all the way down, to create a new one
To make new items, creatures and outfits show on the webpage you need to
* Use the same title as the one on arianne.sf.net, select "release" News type.
run a cvs update (to the new branch as detailed at top of this guide) in
* You can use this template, just adjust the link
the folder /home/marauroa/branch_cvs/stendhal/. The folder for the
<pre>
website /var/www/stendhal/data/ is sym linked to this so that's it
<p>There is a new release of Stendhal for you to enjoy. Please see <a href="LINK-TO-NEWS-DETAILS-PAGE-ON-arianne.sf.net">
updated then.
the announcement</a> for details. </p>


<p>Enjoy!</p>

<p>PS: Join us in <a href="/chat/">#arianne</a> to discuss the release and learn how you can contribute.</p>
</pre>
</pre>


=== After Release ===
== Releasing Phase 4: After Release ==

Calm down, the difficult and time critical tasks are done


* Update the important references when you have time
{{TODO|Notify arianne-announce email list, Sourceforge Project News Feed, Twitter, [[Support:Pages_covering_Stendhal]]}}
* Sourceforge project news item
* arianne-announces Mailinglist
* [http://happypenguin.altervista.org/gameshow.php?t=Stendhal Happy Penguin] (both "Submit an update about this game" and post a comment)
* http://www.lgdb.org/game/stendhal
* https://libregamewiki.org/Stendhal
* http://gaming.wikia.com/wiki/Stendhal
* https://stendhalgame.itch.io/stendhal
* Mastodon
* Facebook
* [[Support:Pages_covering_Stendhal]]