blob: 2c6ff511cef0cc40c2f4093a09b069505692b94a [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="Apache Forrest" name="Generator">
<meta name="Forrest-version" content="0.9-dev">
<meta name="Forrest-skin-name" content="pelt">
<title>Release Management</title>
<link type="text/css" href="../skin/basic.css" rel="stylesheet">
<link media="screen" type="text/css" href="../skin/screen.css" rel="stylesheet">
<link media="print" type="text/css" href="../skin/print.css" rel="stylesheet">
<link type="text/css" href="../skin/profile.css" rel="stylesheet">
<script src="../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../skin/fontsize.js" language="javascript" type="text/javascript"></script>
<link rel="shortcut icon" href="../favicon.ico">
</head>
<body onload="init()">
<script type="text/javascript">ndeSetTextSize();</script>
<div id="top">
<!--+
|breadtrail
+-->
<div class="breadtrail">
<a href="http://www.apache.org/">apache</a> &gt; <a href="http://lenya.apache.org/">lenya</a><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
</div>
<!--+
|header
+-->
<div class="header">
<!--+
|start group logo
+-->
<div class="grouplogo">
<a href=""><img class="logoImage" alt="Lenya" src="../images/apache-lenya-light.png" title=""></a>
</div>
<!--+
|end group logo
+-->
<!--+
|start Project Logo
+-->
<div class="projectlogo">
<a href=""></a>
</div>
<!--+
|end Project Logo
+-->
<!--+
|start Search
+-->
<div class="searchbox">
<form action="http://www.google.com/search" method="get" class="roundtopsmall">
<input value="lenya.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with ');" size="25" name="q" id="query" type="text" value="Search the site with ">&nbsp;
<input name="Search" value="Search" type="submit">
</form>
</div>
<!--+
|end search
+-->
<!--+
|start Tabs
+-->
<ul id="tabs">
<li>
<a class="unselected" href="../index.html">Project</a>
</li>
<li class="current">
<a class="selected" href="../docs/index.html">Developer</a>
</li>
<li>
<a class="unselected" href="../community/index.html">Community</a>
</li>
<li>
<a class="unselected" href="../docs/2_0_x/index.html">Version 2.0</a>
</li>
<li>
<a class="unselected" href="../docs/1_2_x/index.html">Version 1.2</a>
</li>
</ul>
<!--+
|end Tabs
+-->
</div>
</div>
<div id="main">
<div id="publishedStrip">
<!--+
|start Subtabs
+-->
<div id="level2tabs"></div>
<!--+
|end Endtabs
+-->
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
// --></script>
</div>
<!--+
|breadtrail
+-->
<div class="breadtrail">
&nbsp;
</div>
<!--+
|start Menu, mainarea
+-->
<!--+
|start Menu
+-->
<div id="menu">
<div onclick="SwitchMenu('menu_selected_1.1', '../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../skin/images/chapter_open.gif');">Developer</div>
<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="../docs/index.html">Index</a>
</div>
<div class="menuitem">
<a href="http://svn.apache.org/viewcvs.cgi/lenya/#dirlist">SVN Web</a>
</div>
<div class="menuitem">
<a href="../docs/coding-guidelines.html">Coding Guidelines</a>
</div>
<div class="menuitem">
<a href="../docs/website-update.html">Website Update</a>
</div>
<div class="menupage">
<div class="menupagetitle">Release Management</div>
</div>
<div class="menuitem">
<a href="../docs/zone.html">Zone notes</a>
</div>
<div class="menuitem">
<a href="../docs/resolution.html">Resolution</a>
</div>
<div class="menuitem">
<a href="../docs/charter.html">Charter</a>
</div>
<div class="menuitem">
<a href="../docs/guidelines.html">Project guidelines</a>
</div>
</div>
<div id="credit"></div>
<div id="roundbottom">
<img style="display: none" class="corner" height="15" width="15" alt="" src="../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
<!--+
|alternative credits
+-->
<div id="credit2">
<a href="http://wiki.apache.org/lenya/MeetingFreiburg2008"><img border="0" title="Meeting Freiburg 2008" alt="Meeting Freiburg 2008 - logo" src="../images/apache-lenya-meeting-freiburg-2008.png" style="width: 160px;height: 40px;"></a>
</div>
</div>
<!--+
|end Menu
+-->
<!--+
|start content
+-->
<div id="content">
<div title="Portable Document Format" class="pdflink">
<a class="dida" href="release.pdf"><img alt="PDF -icon" src="../skin/images/pdfdoc.gif" class="skin"><br>
PDF</a>
</div>
<h1>Release Management</h1>
<div id="front-matter">
<div id="minitoc-area">
<ul class="minitoc">
<li>
<a href="#Process+Overview">Process Overview</a>
<ul class="minitoc">
<li>
<a href="#Preparation">Preparation</a>
</li>
<li>
<a href="#Code+Freeze+Announcement">Code Freeze Announcement</a>
</li>
<li>
<a href="#Start+the+Code+Freeze">Start the Code Freeze</a>
</li>
<li>
<a href="#Create+a+Tagged+Version">Create a Tagged Version</a>
</li>
<li>
<a href="#Update+the+svn%3Aexternals+properties">Update the svn:externals properties</a>
</li>
<li>
<a href="#Testing">Testing</a>
</li>
<li>
<a href="#%28If+necessary%3A%29+Cancelling+the+Freeze">(If necessary:) Cancelling the Freeze</a>
</li>
<li>
<a href="#Add+the+Release+Notes">Add the Release Notes</a>
</li>
<li>
<a href="#Lock+the+Tagged+Version+%28Optional%29">Lock the Tagged Version (Optional)</a>
</li>
<li>
<a href="#Release+the+Tarballs">Release the Tarballs</a>
</li>
<li>
<a href="#Create+the+Binary+Packages">Create the Binary Packages</a>
</li>
<li>
<a href="#Publish+a+Release+Announcement">Publish a Release Announcement</a>
</li>
<li>
<a href="#Update+the+DOAP+file">Update the DOAP file</a>
</li>
</ul>
</li>
<li>
<a href="#Signing">Signing</a>
<ul class="minitoc">
<li>
<a href="#PGP%2FGPG+signatures+on+releases">PGP/GPG signatures on releases</a>
</li>
<li>
<a href="#ASF+signing+Resources">ASF signing Resources</a>
</li>
</ul>
</li>
<li>
<a href="#Release+Announcement">Release Announcement</a>
</li>
</ul>
</div>
</div>
<a name="N1000D"></a><a name="Process+Overview"></a>
<h2 class="h3">Process Overview</h2>
<div class="section">
<a name="N10013"></a><a name="Preparation"></a>
<h3 class="h4">Preparation</h3>
<ul>
<li>A vote is necessary to determine if a release shall be done.</li>
<li>Send email to <em>dev@lenya.apache.org</em> with Subject: <span class="codefrag">[VOTE] Release $VERSION</span>.</li>
<li>Determine the official Cocoon release which the Lenya release will be based on.</li>
</ul>
<a name="N1002C"></a><a name="Code+Freeze+Announcement"></a>
<h3 class="h4">Code Freeze Announcement</h3>
<p>
Announce the freeze 7 days ahead of the actual freeze.<br>
Send email to <em>dev@lenya.apache.org</em> with subject: <span class="codefrag">[FREEZE-ANNOUNCEMENT] Release $VERSION</span>.
</p>
<a name="N1003E"></a><a name="Start+the+Code+Freeze"></a>
<h3 class="h4">Start the Code Freeze</h3>
<p>
Start the actual freeze:<br>
Send email to <em>dev@lenya.apache.org</em> with subject: <span class="codefrag">[FREEZE-START] Release $VERSION</span>.
</p>
<p>
During the freeze, the developers watch commits mailing list for commits to freezed branch, and inspect diffs to determine risk level. Risky changes are alerted on the developer list and rolled back, unless a vote passes to keep the risky change.
</p>
<a name="N10053"></a><a name="Create+a+Tagged+Version"></a>
<h3 class="h4">Create a Tagged Version</h3>
<p>There are many ways to create a new tag, we will show the quick one and a more detailed one. The quick way is:</p>
<pre class="code">svn copy https://svn.apache.org/repos/asf/lenya/trunk\
https://svn.apache.org/repos/asf/lenya/tags/RELEASE_2_0_RC_2/\
-m "Tagging the 2.0 RC2."</pre>
<p>
Alternatively browse to <a href="http://svn.apache.org/repos/asf/lenya/trunk/">http://svn.apache.org/repos/asf/lenya/trunk/</a>
</p>
<pre class="code">
svn co -r $REVISION https://svn.apache.org/repos/asf/lenya/branches/BRANCH_1_2_X
cd branches/BRANCH_1_2_X
svn copy branches/BRANCH_1_2_X tags/RELEASE_1_2_5
svn ci -m "Release 1_2_5 added" tags/RELEASE_1_2_5
</pre>
<p>
More info: <a href="http://svnbook.red-bean.com/en/1.1/ch04s06.html">http://svnbook.red-bean.com/en/1.1/ch04s06.html</a>.
</p>
<a name="N10073"></a><a name="Update+the+svn%3Aexternals+properties"></a>
<h3 class="h4">Update the svn:externals properties</h3>
<p>
Set the <span class="codefrag">svn:externals</span> properties for Cocoon and all other included repositories to the respective release tags.
</p>
<pre class="code">
cd externals
svn propdel cocoon_2_1_x .
svn propset cocoon_2_1_10 https://svn.apache.org/repos/asf/cocoon/tags/cocoon-2.1/RELEASE_2_1_10 .
</pre>
<p>
Update the path to Cocoon in build.properties.
</p>
<pre class="code">
cocoon.src.dir=externals/cocoon_2_1_10
</pre>
<p>
If it has been decided that a development version of Cocoon shall be used, add the revision
number to the <span class="codefrag">svn:externals</span> declaration:
</p>
<pre class="code">
svn propset cocoon_2_1_x -r 608663 https://svn.apache.org/repos/asf/cocoon/branches/BRANCH_2_1_X .
</pre>
<a name="N10095"></a><a name="Testing"></a>
<h3 class="h4">Testing</h3>
<ul>
<li>Start testing the tagged version (based on the specified Cocoon version, e.g. 2.1.8).</li>
<li>Use the test suite: <a href="http://wiki.apache.org/lenya/TestCases">TestCases (Wiki)</a> (FIXME: Move normative set of test cases to official docs?)</li>
<li>Maybe do a sprint over IRC (server irc.freenode.org, channel lenya). Try to find a day where lots of devs are present.</li>
<li>New bugs must be recorded in the issue tracker.</li>
<li>If all tests are successful (i.e., no <em>critical</em> or <em>blocker</em> bugs have been found), proceed with step <em>Create a Tagged Version</em>.</li>
<li>If <em>critical</em> or <em>blocker</em> bugs have been found, the release process is canceled.</li>
</ul>
<a name="N100C4"></a><a name="%28If+necessary%3A%29+Cancelling+the+Freeze"></a>
<h3 class="h4">(If necessary:) Cancelling the Freeze</h3>
<p>
The freeze can be canceled via a vote on the <em>dev@lenya.apache.org</em> mailing list under certain circumstance (very rare):
</p>
<ul>
<li>New blocker bugs that need bigger changes</li>
<li>Critical architectural changes</li>
</ul>
<a name="N100DA"></a><a name="Add+the+Release+Notes"></a>
<h3 class="h4">Add the Release Notes</h3>
<p>
Add the release notes (SVN URL, SVN Revision, What's new, Cocoon version 2.1.8, etc.) to the tagged version:
</p>
<pre class="code">
svn add RELEASE-NOTES.txt
svn ci -m "release notes added" RELEASE-NOTES.txt
</pre>
<a name="N100E8"></a><a name="Lock+the+Tagged+Version+%28Optional%29"></a>
<h3 class="h4">Lock the Tagged Version (Optional)</h3>
<pre class="code">
svn lock tags/RELEASE_1_2_5
</pre>
<a name="N100F3"></a><a name="Release+the+Tarballs"></a>
<h3 class="h4">Release the Tarballs</h3>
<ul>
<li>Upload the tarballs. (FIXME: Instructions?)</li>
<li>Edit the <em>Downloads</em> links on the web site with links to the new release files. Currently that's <a href="http://svn.apache.org/repos/asf/lenya/docu/src/documentation/content/xdocs/index.xml"> index.xml</a> and <a href="http://svn.apache.org/repos/asf/lenya/docu/src/documentation/content/xdocs/docs/2_0_x/installation/index.xml">docs/2_0_x/installation/index.xml</a>.</li>
</ul>
<a name="N1010E"></a><a name="Create+the+Binary+Packages"></a>
<h3 class="h4">Create the Binary Packages</h3>
<ul>
<li>
Compile a pristine Cocoon with the local properties from Lenya.
</li>
<li>
Set the property <em>version</em> in file <span class="codefrag">src/targets/properties-build.xml</span>
to the appropriate Lenya version.
</li>
<li>
Re-generate <span class="codefrag">INSTALL-src.txt</span> and <span class="codefrag">INSTALL-bin.txt</span> with the
XSLT stylesheet <span class="codefrag">https://svn.apache.org/repos/asf/lenya/docu/tools/document2txt.xsl</span>.
</li>
<li>
Build all distribution archives, except the windows installer .exe, with
<span class="codefrag">./build.sh|build dist</span> in the Lenya source root directory.
You will find the distribution archives under <em>dist/</em>. The <em>dist</em> target
will also build and package the editors BXE and Kupu.
</li>
<li>
To create a Windows installer, edit <span class="codefrag">lenya.nsi</span> and replace all version
numbers appropriately, then compile <span class="codefrag">lenya.nsi</span> with the
<a href="http://nsis.sourceforge.net/home/">NSIS compiler</a>
(use the LZMA compressor for the smallest binaries)
</li>
<li>
Sign the release archives/installers with your PGP/GPG key (see instructions below).
</li>
<li>
Upload the release to <span class="codefrag">minotaur.apache.org:/x1/www/www.apache.org/dist/lenya</span>.
</li>
</ul>
<a name="N10152"></a><a name="Publish+a+Release+Announcement"></a>
<h3 class="h4">Publish a Release Announcement</h3>
<p>
Publish a <em>Project Release Announcement</em> to appropriate places (see section <em>Release Announcement</em> below).
</p>
<a name="N10162"></a><a name="Update+the+DOAP+file"></a>
<h3 class="h4">Update the DOAP file</h3>
<p>
Update the Lenya DOAP file (<a href="http://svn.apache.org/repos/asf/lenya/site/doap_Lenya.rdf">http://svn.apache.org/repos/asf/lenya/site/doap_Lenya.rdf</a>) with the version and date of this new release.
</p>
</div>
<a name="N10171"></a><a name="Signing"></a>
<h2 class="h3">Signing</h2>
<div class="section">
<a name="N10177"></a><a name="PGP%2FGPG+signatures+on+releases"></a>
<h3 class="h4">PGP/GPG signatures on releases</h3>
<ul>
<li>
If not yet done add your key to the <a href="http://svn.apache.org/repos/asf/lenya/trunk/KEYS">KEYS</a> file. Follow the instruction at the top of that file.
</li>
<li>
Export you public key with <span class="codefrag">gpg -a -export [[apache account]] &gt; .pgpkey</span> and place the file <span class="codefrag">.pgpkey</span> on <span class="codefrag">minotaur.apache.org</span> in your home directory. You also would sign up at <a href="https://www.biglumber.com/">Big Lumber; Key management made easy</a> to easily coordinate and manage signatures for your key.
</li>
<li>
Update the KEYS file at <span class="codefrag">minotaur.apache.org:/x1/www/www.apache.org/dist/lenya/KEYS</span> from Lenya SVN.
</li>
</ul>
<a name="N1019E"></a><a name="ASF+signing+Resources"></a>
<h3 class="h4">ASF signing Resources</h3>
<ul>
<li>
<a href="http://wiki.apache.org/incubator/SigningReleases">Signing Releases How-To</a>
</li>
<li>
<a href="http://www.apache.org/~henkp/sig/#cant-lenya">State of signed Apache software releases</a>
</li>
<li>
<a href="http://www.apache.org/~henkp/trust/apache.html">ASF web of trust</a>
</li>
<li>
<a href="http://www.apache.org/~henkp/cgi-bin/md5.cgi"> ASF MD5 checksum veryfier</a>
</li>
<li>
<a href="https://www.biglumber.com/"> Big Lumber; Key management made easy</a>
</li>
</ul>
</div>
<a name="N101C2"></a><a name="Release+Announcement"></a>
<h2 class="h3">Release Announcement</h2>
<div class="section">
<p>
The release announcement can be published at the following places:
</p>
<ul>
<li>Lenya website </li>
<li>user@lenya.apache.org</li>
<li>users@cocoon.apache.org</li>
<li>announce@apache.org</li>
<li>lwn@lwn.net</li>
<li>general@oscom.org</li>
<li>http://mailman.skybuilders.com/mailman/listinfo/cms-pr (subcribe if needed) </li>
<li>http://www.cmsmatrix.org/matrix?func=editSubmission&amp;sid=new&amp;wid=5</li>
<li>http://www.contentmanager.net (via contact form)</li>
<li>http://www.javalobby.org/forums/post!default.jspa?forumID=17</li>
<li>http://www.theserverside.com/news/post.tss</li>
</ul>
</div>
</div>
<!--+
|end content
+-->
<div class="clearboth">&nbsp;</div>
</div>
<div id="footer">
<!--+
|start bottomstrip
+-->
<div class="lastmodified">
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
// --></script>
</div>
<div class="copyright">
Copyright &copy;
2002-2007 <a href="http://www.apache.org/licenses/LICENSE-2.0">The Apache Software Foundation.</a>
</div>
<div id="feedback">
Send feedback about the website to:
<a id="feedbackto" href="mailto:dev@lenya.apache.org?subject=Feedback%C2%A0for%C2%A0docs/release.html">dev@lenya.apache.org</a>
</div>
<!--+
|end bottomstrip
+-->
</div>
</body>
</html>