blob: 6d090ab339554b2c569f6a9e21e7514a8df1c324 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>
<properties>
<title>Release Guide</title>
<author email="sebawagner@apache.org">
OpenMeetings Team
</author>
</properties>
<body>
<section name="How to Build a Release of OpenMeetings">
<subsection name="Required tools">
<div>
<p>To build a binary release of OpenMeetings you need: </p>
<ul>
<li>Sun JDK6</li>
<li>Apache ANT (minimum) 1.8.3</li>
<li>
SVN Command line client (Subversion 1.7 required!)
<a href="http://subversion.apache.org/packages.html" target="_BLANK"
rel="nofollow">http://subversion.apache.org/packages.html</a>
</li>
<li>A text editor</li>
<li>You need to be online! The build process actively downloads
needed libraries and dependencies.
</li>
</ul>
</div>
</subsection>
<subsection name="Prepare your Apache ID">
<div>
Every release package must be signed with a PGP/GPG key.
<br />
So if you want to release a package your Apache Id must be
connected with a PGP key!
<br />
<br />
You might follow:
<br />
<a
href="http://www.apache.org/dev/new-committers-guide.html#security-and-pgp"
target="_blank">http://www.apache.org/dev/new-committers-guide.html#security-and-pgp
</a>
<br />
<br />
In short:
<br />
Create PGP key pairs (private + public) (and I recommend creating a
Revoke Cert)
<br />
Upload the public key (either bei using the PGP Tool that you use
to create the key) or by using the web form to:
<a href="http://pgp.mit.edu/" target="_blank" rel="nofollow">http://pgp.mit.edu/
</a>
<br />
Add the fingerprint string (something like "BF13 CF11 F9C9 0CBE
4413 09AB 0055 16BF 93A3 0395") to your profile at
<a href="http://id.apche-org" target="_blank" rel="nofollow">id.apche-org
</a>
<br />
Wait for 6-8 hours, the server will search for a public key based
on your fingerprint, if success it will create a file with your
name at:
<br />
<a href="https://people.apache.org/keys/committer/">https://people.apache.org/keys/committer/</a>
<br />
<br />
If that is "success" then add your key to:
<br />
<a
href="https://svn.apache.org/repos/asf/openmeetings/project/KEYS">https://svn.apache.org/repos/asf/openmeetings/project/KEYS
</a>
<br />
and follow the instructions in the file.
<br />
</div>
</subsection>
<subsection name="Step1 - Prepare files">
<p>
Check that all files:
<br />
LICENSE, NOTICE, DISCLAIMER, CHANGELOG, README
<br />
are up to date and refer to the right version.
</p>
<p>
Create a TAG of the SVN tree that you would like to release<br/>
Example:
<div class="xmlcode">
svn copy -r1453158 https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp \<br/>
https://svn.apache.org/repos/asf/openmeetings/tags/2.1RC1 \<br/>
-m "Release candidate 1"
</div>
</p>
<p>Get the source from your TAG: </p>
<div class="xmlcode">
svn checkout https://svn.apache.org/repos/asf/openmeetings/tags/$BRANCHORTAG/<br />
$BRANCHORTAG should be replaced with your new TAG
</div>
<p>Edit the file build.properties change</p>
<div class="xmlcode">
project.status=SNAPSHOT
</div>
<p>to</p>
<div class="xmlcode">
project.status=RELEASE
</div>
<p>Run the command: </p>
<div class="xmlcode">
ant dist-release
</div>
<p>Test building the source on windows and OSx or Linux</p>
<p>Test running the binary's</p>
<p>Create MD5 checksums</p>
<div class="xmlcode">
#On OSX you might use this command to make a MD5 checksum and store it to a file<br />
md5 -r apache-openmeetings-XXX-src.zip >apache-openmeetings-XXX-src.zip.md5
</div>
<div class="xmlcode">
#To create MD5 hashes On Ubuntu:<br />
for f in `ls -1 *.tar.gz *.zip`; do md5sum $f > $f.md5; done<br/>
<br/>
#To check MD5 hashes On Ubuntu:<br />
for f in `ls -1 *.tar.gz *.zip`; do md5sum -c $f.md5; done
</div>
<p>
Create signatures with the your KEY for every file, the KEY must be available at:<br />
<a href="http://www.apache.org/dist/incubator/openmeetings/KEYS">
http://www.apache.org/dist/incubator/openmeetings/KEYS
</a>
</p>
<div class="xmlcode">
#To create signatures On Ubuntu:<br />
for f in `ls -1 *.tar.gz *.zip`; do gpg --armor --output $f.asc --detach-sig $f; done<br/>
<br/>
#To check signatures On Ubuntu:<br />
for f in `ls -1 *.tar.gz *.zip`; do gpg --verify $f.asc; done
</div>
<p>
Commit artifacts you have created with KEYS file to the
<tt>https://dist.apache.org/repos/dist/dev/openmeetings/</tt>
Proposed file structure for "Release Candidate 1" of 2.1 will be:
</p>
<div class="xmlcode">
2.1<br />
2.1/rc1<br />
2.1/rc1/src<br />
2.1/rc1/src/apache-openmeetings-2.1.0-src.zip<br />
2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz<br />
2.1/rc1/src/apache-openmeetings-2.1.0-src.zip.md5<br />
2.1/rc1/src/apache-openmeetings-2.1.0-src.zip.asc<br />
2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz.md5<br />
2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz.asc<br />
2.1/rc1/bin<br />
2.1/rc1/bin/apache-openmeetings-2.1.0.zip<br />
2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz<br />
2.1/rc1/bin/apache-openmeetings-2.1.0.zip.md5<br />
2.1/rc1/bin/apache-openmeetings-2.1.0.zip.asc<br />
2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz.md5<br />
2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz.asc<br />
2.1/rc1/KEYS
</div>
</subsection>
<subsection name="Step2 - VOTE and RESULT emails">
<p>
Send a "VOTE" to the developer mailing list including links to release artefacts.<br />
A VOTE always contains two parts:<br />
Send an email to the developer mailing list with the subject line:<br />
[VOTE] Apache OpenMeetings x.xx release<br />
An example for such an email:
<a href="http://s.apache.org/vote-2.1.0RC1">example Vote email</a>
<a href="http://s.apache.org/vote-2.0.0RC4">example Vote email (Incubator)</a>
<br />
Forward (Not CC) this Vote email to: private@openmeetings.apache.org<br />
<br />
After the vote is over, send a "RESULT" email to the list with the subject line:<br />
[RESULT][VOTE] Apache OpenMeetings x.xx release<br />
An example for such an email:
<a
href="http://mail-archives.apache.org/mod_mbox/incubator-openmeetings-dev/201207.mbox/%3CCACeMiA-ibo6fGCbnLjJX9H5H2kFGDVJRMfxPyMtzWzCWNi%2BpOg%40mail.gmail.com%3E">example Result email</a>
<br />
Forward (Not CC) this RESULT VOTE email to: private@openmeetings.apache.org<br />
<br />
Votes on whether a package is ready to be released use majority approval -- i.e., at
least three PMC members must vote affirmatively for release, and there must be more
positive than negative votes. Releases may not be vetoed. Before voting +1 PMC members
are required to download the signed source code package, compile it as provided, and
test the resulting executable on their own platform, along with also verifying that
the package meets the requirements of the ASF policy on releases.
</p>
</subsection>
<subsection name="Step3 - Distribute and announce">
<p>If VOTEs positive: Upload the release </p>
<div class="xmlcode">
svn mv https://dist.apache.org/repos/dist/dev/openmeetings/2.1/rc3 \<br/>
https://dist.apache.org/repos/dist/release/openmeetings/2.1 \<br/>
-m "RC3 is released as 2.1"
</div>
<p>
Wait 24 hours (until all Apache mirrors have synced the packages)
and send an announcement to the mailing list + blog and any other
channel.
</p>
<p>
Email announcements should have the subject line:
<br />
[ANNOUNCE] Apache OpenMeetings x.xx released
</p>
<p>
Add a section to <a href="downloads.html">downloads</a> website.<br />
Make sure that the binary packages are linked using the mirror URL as base path (
<b>not</b>http://www.apache.org/dist):<br />
Mirror URL:
<a href="http://www.apache.org/dyn/closer.cgi/openmeetings/">http://www.apache.org/dyn/closer.cgi/openmeetings/</a>
</p>
</subsection>
</section>
</body>
</document>