directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Emmanuel L├ęcharny (Confluence) <conflue...@apache.org>
Subject [CONF] Apache Directory Development > Releasing ApacheDS
Date Thu, 27 Jun 2013 18:12:00 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/en/2176/1/1/_/styles/combined.css?spaceKey=DIRxDEV&amp;forWysiwyg=true"
type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://cwiki.apache.org/confluence/display/DIRxDEV/Releasing+ApacheDS">Releasing
ApacheDS</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~elecharny">Emmanuel
L├ęcharny</a>
    </h4>
        <br/>
                         <h4>Changes (18)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" > <br>h3. 5. Build the Site <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">
<br>In order to generate the site, you have to comment some modules in the apacheds
pom.xml file : <br> <br></td></tr>
            <tr><td class="diff-unchanged" >{noformat} <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">
   &lt;!--module&gt;installers-maven-plugin&lt;/module--&gt; <br>  
 &lt;!--module&gt;installers&lt;/module--&gt; <br>{noformat} <br>
<br>Then you can start the maven command : <br> <br>{noformat} <br></td></tr>
            <tr><td class="diff-unchanged" >$ cd target/checkout <br>$ mvn
site <br>{noformat} <br> <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">This
creates and deploys the site via ssh to people.apache.org/www/directory.apache.org/apacheds/gen-docs.
<br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">This
creates the site and the Javadocs. <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">Edit
the people.apache.org/www/directory.apache.org/apacheds/gen-docs/index.html file and add the
deployed site to the list. <br> <br></td></tr>
            <tr><td class="diff-unchanged" >{note} <br></td></tr>
            <tr><td class="diff-changed-lines" >Now, you have to sign the <span
class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">binary</span>
<span class="diff-added-words"style="background-color: #dfd;">sources</span> packages
which are in apacheds/target/checkout/target. <br></td></tr>
            <tr><td class="diff-unchanged" > <br>Use your PGP key ID (the
pub key, 4096R/\[XXXXXXX\] where \[XXXXXXX\] is the key ID)  <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">
<br>You can get the keys by typing : <br> <br>    gpg --list-keys <br>
<br></td></tr>
            <tr><td class="diff-unchanged" >{note} <br> <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">h3.
6. Publish Source and Binary Distribution Packages <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">You
can use this small script that does the job (copy-paste this code in a file named sign.sh
in your path) : <br> <br></td></tr>
            <tr><td class="diff-unchanged" >{noformat} <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">#!/bin/sh
<br> <br>echo &quot;PGP Key ID: &quot; <br>read DEFAULT_KEY <br>
<br>echo &quot;PGP Key Password: &quot; <br>stty -echo <br>read
PASSWORD <br>stty echo <br>echo &quot;&quot; <br> <br>for
FILE in $(find . -maxdepth 1 -not &#39;(&#39; -name &quot;sign.sh&quot; -or
-name &quot;.*&quot; -or -name &quot;*.md5&quot; -or -name &quot;*.sha1&quot;
-or -name &quot;*.asc&quot; &#39;)&#39; -and -type f) ; do <br>    if
[ -f &quot;$FILE.asc&quot; ]; then <br>        echo &quot;Skipping: $FILE&quot;
<br>        continue <br>    fi <br> <br>    echo -n &quot;Signing:
$FILE ... &quot; <br> <br>    # MD5 <br>    if [ ! -f &quot;$FILE.md5&quot;
]; <br>    then <br>        openssl md5 &lt; &quot;$FILE&quot; | cut
&quot;-d &quot; -f2 &gt; &quot;$FILE.md5&quot; <br>        echo
&quot;  - Generated &#39;$FILE.md5&#39;&quot; <br>    else <br>
       echo &quot;  - Skipped &#39;$FILE.md5&#39; (file already existing)&quot;
<br>    fi <br> <br>    # SHA1 <br>    if [ ! -f &quot;$FILE.sha1&quot;
]; <br>    then <br>        gpg -v --default-key &quot;$DEFAULT_KEY&quot;
--print-md SHA1 &quot;$FILE&quot; &gt; &quot;$FILE&quot;.sha1 <br>
       echo &quot;  - Generated &#39;$FILE.sha1&#39;&quot; <br>    else
<br>        echo &quot;  - Skipped &#39;$FILE.sha1&#39; (file already existing)&quot;
<br>    fi <br> <br>    # ASC <br>    if [ ! -f &quot;$FILE.asc&quot;
]; <br>    then <br>        echo &quot;$PASSWORD&quot; | gpg --default-key
&quot;$DEFAULT_KEY&quot; --detach-sign --armor --no-tty --yes --passphrase-fd 0 &quot;$FILE&quot;
<br>        echo &quot;  - Generated &#39;$FILE.asc&#39;&quot; <br>
   else <br>        echo &quot;  - Skipped &#39;$FILE.asc&#39; (file already
existing)&quot; <br>    fi <br>done <br>{noformat} <br> <br>Then
to sign the packages : <br> <br>{noformat} <br>$ sign.sh <br>PGP Key
ID:  <br>&lt;your PGP key&gt; <br>PGP Key Password:  <br>&lt;Your
password&gt; <br> <br>-n Signing: ./apacheds-parent-&lt;version&gt;-source-release.zip
...  <br>  - Generated &#39;./apacheds-parent-&lt;version&gt;-source-release.zip.md5&#39;
<br>  - Generated &#39;./apacheds-parent-&lt;version&gt;-source-release.zip.sha1&#39;
<br>  - Generated &#39;./apacheds-parent-&lt;version&gt;-source-release.zip.asc&#39;
<br>$ <br>{noformat} <br> <br> <br>h3. 6. Publish Source Distribution
Package <br>{noformat} <br></td></tr>
            <tr><td class="diff-unchanged" >$ cd target/checkout/target <br></td></tr>
            <tr><td class="diff-changed-lines" >$ scp apacheds-parent-&lt;version&gt;-source-release.zip*
<span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">people.apache.org:public_html/apacheds-2.0.0-M10</span>
<span class="diff-added-words"style="background-color: #dfd;">people.apache.org:public_html/apacheds-&lt;version&gt;</span>
<br></td></tr>
            <tr><td class="diff-unchanged" >{noformat} <br> <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >This will create the installers in
the target/checkout/installers/target/installers directory <br> <br></td></tr>
            <tr><td class="diff-changed-lines" >Sign those installers using the
sigh.sh script, and copy them in <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">people.apache.org/public.html</span>
<span class="diff-added-words"style="background-color: #dfd;">people.apache.org/public_html/apacheds-&lt;version&gt;</span>
<br></td></tr>
            <tr><td class="diff-unchanged" > <br>{noformat} <br>$
cd apacheds/target/checkout/target/installers/target/installers <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">$
scp apacheds-2.0.0-M11* people.apache.org:public_html/apacheds-2.0.0-M11 <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">$
scp apacheds-&lt;version&gt;* people.apache.org:public_html/apacheds-&lt;version&gt;
<br></td></tr>
            <tr><td class="diff-unchanged" >{noformat} <br> <br>Note
: you will need a Debian, a Fedora and a Windows server to generate dedicated binaries for
those platforms, or you can use rpmbuild, dpkg or nsis if you don&#39;t want to use many
different servers. <br> <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">Update
your index.html file on people.apache.org/public_html to make the packages visible. Here is
an example of possible content : <br> <br>{noformat) <br>&lt;h2&gt;Last
Directory Server &lt;version&gt; sources tarballs&lt;/h2&gt; <br>  &lt;img
src=&quot;/icons/compressed.gif&quot; alt=&quot;[   ]&quot;&gt;&lt;a
href=&quot;apacheds-&lt;version&gt;/apacheds-parent-&lt;version&gt;-source-release.zip&quot;&gt;apacheds-parent-&lt;version&gt;-source-release.zip&lt;/a&gt;&lt;br/&gt;
<br>  &lt;img src=&quot;/icons/compressed.gif&quot; alt=&quot;[   ]&quot;&gt;&lt;a
href=&quot;apacheds-&lt;version&gt;/apacheds-parent-&lt;version&gt;-source-release.zip.asc&quot;&gt;apacheds-parent-&lt;version&gt;-source-release.zip.asc&lt;/a&gt;&lt;br/&gt;
<br>  &lt;img src=&quot;/icons/compressed.gif&quot; alt=&quot;[   ]&quot;&gt;&lt;a
href=&quot;apacheds-&lt;version&gt;/apacheds-parent-&lt;version&gt;-source-release.zip.md5&quot;&gt;apacheds-parent-&lt;version&gt;-source-release.zip.md5&lt;/a&gt;&lt;br/&gt;
<br>  &lt;img src=&quot;/icons/compressed.gif&quot; alt=&quot;[   ]&quot;&gt;&lt;a
href=&quot;apacheds-&lt;version&gt;/apacheds-parent-&lt;version&gt;-source-release.zip.sha1&quot;&gt;apacheds-parent-&lt;version&gt;-source-release.zip.sha1&lt;/a&gt;&lt;br&gt;
<br> <br>&lt;h2&gt;Last Directory Server &lt;version&gt; installers&lt;/h2&gt;
<br>  &lt;h3&gt;Plain 32 bits binary installers&lt;/h3&gt; <br>
   &lt;img src=&quot;/icons/compressed.gif&quot; alt=&quot;[   ]&quot;&gt;&lt;a
href=&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-32bit.bin&quot;&gt;apacheds-&lt;version&gt;-32bit.bin&lt;/a&gt;&lt;br/&gt;
<br>    &lt;img src=&quot;/icons/compressed.gif&quot; alt=&quot;[  
]&quot;&gt;&lt;a href=&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-32bit.bin.asc&quot;&gt;apacheds-&lt;version&gt;-32bit.bin.asc&lt;/a&gt;&lt;br/&gt;
<br>    &lt;img src=&quot;/icons/compressed.gif&quot; alt=&quot;[  
]&quot;&gt;&lt;a href=&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-32bit.bin.md5&quot;&gt;apacheds-&lt;version&gt;-32bit.bin.md5&lt;/a&gt;&lt;br/&gt;
<br>    &lt;img src=&quot;/icons/compressed.gif&quot; alt=&quot;[  
]&quot;&gt;&lt;a href=&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-32bit.bin.sha1&quot;&gt;apacheds-&lt;version&gt;-32bit.bin.sha1&lt;/a&gt;&lt;br/&gt;
<br>  &lt;br/&gt; <br>  &lt;h3&gt;Plain 64 bits installers&lt;/h3&gt;
<br>    &lt;img src=&quot;/icons/compressed.gif&quot; alt=&quot;[  
]&quot;&gt;&lt;a href=&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-64bit.bin&quot;&gt;apacheds-&lt;version&gt;-64bit.bin&lt;/a&gt;&lt;br/&gt;
<br>    &lt;img src=&quot;/icons/compressed.gif&quot; alt=&quot;[  
]&quot;&gt;&lt;a href=&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-64bit.bin.asc&quot;&gt;apacheds-&lt;version&gt;-64bit.bin.asc&lt;/a&gt;&lt;br/&gt;
<br>    &lt;img src=&quot;/icons/compressed.gif&quot; alt=&quot;[  
]&quot;&gt;&lt;a href=&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-64bit.bin.md5&quot;&gt;apacheds-&lt;version&gt;-64bit.bin.md5&lt;/a&gt;&lt;br/&gt;
<br>    &lt;img src=&quot;/icons/compressed.gif&quot; alt=&quot;[  
]&quot;&gt;&lt;a href=&quot;apacheds-&lt;version&gt;/apacheds-&lt;version&gt;-64bit.bin.sha1&quot;&gt;apacheds-&lt;version&gt;-64bit.bin.sha1&lt;/a&gt;&lt;br/&gt;
<br>  &lt;br/&gt; <br>... <br>{noformat} <br> <br></td></tr>
            <tr><td class="diff-unchanged" >h3. 9. Vote <br>Start a 72h
vote at the dev mailing list. <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >Go to [https://repository.apache.org/index.html#stagingRepositories]
and release the staging repository so all artifacts are published to Maven central. <br>
<br></td></tr>
            <tr><td class="diff-changed-lines" >Move the distribution packages
<span class="diff-added-words"style="background-color: #dfd;">(sources and binaries)</span>
to the dist SVN repository: https://dist.apache.org/repos/dist/release/directory/apacheds/dist/$(version)
<br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">Move
the sources releases to the dist SVN repository: https://dist.apache.org/repos/dist/release/directory/apacheds/$(version)
<br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">
<br>The best solution would be to checkout the directory in people.apache.org, to copy
the packages in the right place, and to check in the changes : <br> <br>{noformat}
<br>$ ssh people.apache.org <br># svn co https://dist.apache.org/repos/dist/release/directory/apacheds/dist/
apacheds-dist <br># cd apacheds-dist <br># mkdir &lt;version&gt; <br>#
cp ../public_html/apacheds-&lt;version&gt;/* &lt;version&gt; <br># svn
ci &lt;version&gt; <br>... <br># exit <br>$ <br>{noformat}
<br> <br>The packages should now be available on http://www.us.apache.org/dist/directory/api/dist/&lt;version&gt;
<br> <br>h3. 11. Deploy the Javadocs and XRef <br> <br>We now can
deploy the generated Javadoc and cross-reference pages. They are generated in the following
directory : <br> <br>target/checkout/target/site <br> <br>We will
copy two directories : <br> <br>    apidocs <br>    xref <br> <br>**Staging
or Production?** <br> <br>Those files will be stored on the production server
only !!! And some extra caution ust be taken not to delete them when we will publish the staging
site too... <br> <br>First of all, you must checkout the two CMS store for the
site : staging and revision. <br> <br>{noformat} <br>$ cd ~/apacheds <br>$
svn co https://svn.apache.org/repos/infra/websites/production/directory/trunk staging <br>
... <br>$ svn co https://svn.apache.org/repos/infra/websites/production/directory production
<br> ... <br>{noformat} <br> <br>Now, you will first add the directory
for the newly generated version : <br> <br>{noformat} <br>$ cd ~/apacheds/production/content/apacheds/gen-docs
<br>$ mkdir &lt;version&gt; <br>$ svn add &lt;version&gt; <br>{noformat}
<br> <br>Then copy the generated docs : <br> <br>{noformat} <br>$
cp -r ~/apacheds/trunks/apacheds/target/checkout/target/site/apachedsdocs ~/apacheds/production/content/apacheds/gen-docs/&lt;version&gt;
<br>$ cp -r ~/apacheds/trunks/apacheds/target/checkout/target/site/xref ~/apacheds/production/content/apacheds/gen-docs/&lt;version&gt;
<br>$  <br>{noformat} <br> <br>You have to check in those directories
: <br> <br>{noformat} <br>$ svn add &lt;version&gt;/* <br>$
svn ci &lt;version&gt; -m &quot;Injected &lt;version&gt; javadocs&quot;
<br>{noformat} <br> <br>Now, you have to update the staging site : <br>
<br>{noformat} <br>extpaths.txt <br>{noformat} <br> <br>This
file list the file on the production site that will not be overriden by the publication of
the staging site. It has to be updated <br> <br>{noformat} <br>$ cd ~/apacheds/staging/content/
<br>$ vi extpaths.txt <br>{noformat} <br> <br>Add the following line
: <br> <br>{noformat} <br>... <br># Apacheds <br>apacheds/gen-docs/&lt;version&gt;
<br>... <br>{noformat} <br> <br>then save and check in the file .htaccess
<br> <br>We also have to update this file : <br> <br>{noformat} <br>$
cd ~/apacheds/staging/content/apacheds/gen-docs <br>$ vi .htaccess <br>{noformat}
<br> <br>And update the two last lines to refer to the version you&#39;ve
just released : <br> <br>{noformat} <br>RewriteRule ^latest$ &lt;version&gt;/
<br>RewriteRule ^latest/(.*)$ &lt;version&gt;/$1 <br>{noformat} <br>
<br>Save and commit the file. <br> <br>h3. 11. Update the web site <br>
<br>You can now update the site, add a news on the front page, and publish the site.
<br> <br>13. Inform the world ! <br> <br>After 24h, you can now inform
the world about the release. <br> <br>Send a mail to the users and dev mailing
list, and one to the announce@apacge.org. <br> <br>You are done ! <br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <div>
<ul>
    <li><a href='#ReleasingApacheDS-Introduction'>Introduction</a></li>
    <li><a href='#ReleasingApacheDS-ManualStep'>Manual Step</a></li>
    <li><a href='#ReleasingApacheDS-Releaseprocess'>Release process</a></li>
</ul></div>

<h2><a name="ReleasingApacheDS-Introduction"></a>Introduction</h2>

<p>This will show you how to build and release the ApacheDS subproject.  Keep an eye
out for warning and note sections that show version specific differences in this process.
</p>

<h2><a name="ReleasingApacheDS-ManualStep"></a>Manual Step</h2>

<p>Some things have not yet been automated with maven and require users to manually
edit some files.  Below are the steps to follow.</p>

<h3><a name="ReleasingApacheDS-Updatetheapacheds%2Fpom.xml"></a>Update the
apacheds/pom.xml</h3>

<p>The current apacheds/pom.xml contains references to LDAP API SNAPSHOTs, which is
not good. You have to bump up those references to the latest LDAP-API version.</p>


<h3><a name="ReleasingApacheDS-Updateservice%2Fapacheds.shandservice%2Fapacheds.bat"></a>Update
service/apacheds.sh and service/apacheds.bat</h3>

<p>Edit the apacheds.sh/bat files in the service project directory to update the revision
numbers used in that file to reference non-SNAPSHOT releases.  </p>

<h2><a name="ReleasingApacheDS-Releaseprocess"></a>Release process</h2>

<p>Since we are using Nexus for releases the release process is as follows (see also
<a href="http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven" class="external-link"
rel="nofollow">http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven</a>).</p>

<h3><a name="ReleasingApacheDS-1.TesttheProject"></a>1. Test the Project</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ mvn release:prepare -DdryRun=true
</pre>
</div></div>

<p>Replace the version by the new version. Be careful, and remove the 'apacheds-parent-'
which is proposed for the new tag. We should just use the version number.</p>

<h3><a name="ReleasingApacheDS-2.DeployaSnapshot"></a>2. Deploy a Snapshot</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ mvn deploy
</pre>
</div></div>

<p>This is useful to verify your settings in ~/.m2/settings.xml (Nexus password and
GPG key)</p>

<h3><a name="ReleasingApacheDS-3.PreparetheRelease"></a>3. Prepare the Release</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ mvn release:clean
$ mvn release:prepare
</pre>
</div></div>

<p>This creates a tag here: <a href="http://svn.apache.org/viewvc/directory/apacheds/tags/"
class="external-link" rel="nofollow">http://svn.apache.org/viewvc/directory/apacheds/tags/</a></p>

<h3><a name="ReleasingApacheDS-4.StagetheRelease"></a>4. Stage the Release</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ mvn release:perform
</pre>
</div></div>

<p>This deploys the release to a staging repository. Go to <a href="https://repository.apache.org/index.html#stagingRepositories"
class="external-link" rel="nofollow">https://repository.apache.org/index.html#stagingRepositories</a>
and close the staging repository.</p>

<h3><a name="ReleasingApacheDS-5.BuildtheSite"></a>5. Build the Site</h3>

<p>In order to generate the site, you have to comment some modules in the apacheds pom.xml
file :</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>    &lt;!--module&gt;installers-maven-plugin&lt;/module--&gt;
    &lt;!--module&gt;installers&lt;/module--&gt;
</pre>
</div></div>

<p>Then you can start the maven command :</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ cd target/checkout
$ mvn site
</pre>
</div></div>

<p>This creates the site and the Javadocs.</p>

<div class='panelMacro'><table class='noteMacro'><colgroup><col width='24'><col></colgroup><tr><td
valign='top'><img src="/confluence/images/icons/emoticons/warning.gif" width="16" height="16"
align="absmiddle" alt="" border="0"></td><td>Now, you have to sign the sources
packages which are in apacheds/target/checkout/target.

<p>Use your PGP key ID (the pub key, 4096R/[XXXXXXX] where [XXXXXXX] is the key ID)
</p>

<p>You can get the keys by typing :</p>

<p>    gpg --list-keys</p></td></tr></table></div>

<p>You can use this small script that does the job (copy-paste this code in a file named
sign.sh in your path) :</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>#!/bin/sh

echo "PGP Key ID: "
read DEFAULT_KEY

echo "PGP Key Password: "
stty -echo
read PASSWORD
stty echo
echo ""

for FILE in $(find . -maxdepth 1 -not '(' -name "sign.sh" -or -name ".*" -or -name "*.md5"
-or -name "*.sha1" -or -name "*.asc" ')' -and -type f) ; do
    if [ -f "$FILE.asc" ]; then
        echo "Skipping: $FILE"
        continue
    fi

    echo -n "Signing: $FILE ... "

    # MD5
    if [ ! -f "$FILE.md5" ];
    then
        openssl md5 &lt; "$FILE" | cut "-d " -f2 &gt; "$FILE.md5"
        echo "  - Generated '$FILE.md5'"
    else
        echo "  - Skipped '$FILE.md5' (file already existing)"
    fi

    # SHA1
    if [ ! -f "$FILE.sha1" ];
    then
        gpg -v --default-key "$DEFAULT_KEY" --print-md SHA1 "$FILE" &gt; "$FILE".sha1
        echo "  - Generated '$FILE.sha1'"
    else
        echo "  - Skipped '$FILE.sha1' (file already existing)"
    fi
 
    # ASC
    if [ ! -f "$FILE.asc" ];
    then
        echo "$PASSWORD" | gpg --default-key "$DEFAULT_KEY" --detach-sign --armor --no-tty
--yes --passphrase-fd 0 "$FILE"
        echo "  - Generated '$FILE.asc'"
    else
        echo "  - Skipped '$FILE.asc' (file already existing)"
    fi
done
</pre>
</div></div>

<p>Then to sign the packages :</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ sign.sh
PGP Key ID: 
&lt;your PGP key&gt;
PGP Key Password: 
&lt;Your password&gt;

-n Signing: ./apacheds-parent-&lt;version&gt;-source-release.zip ... 
  - Generated './apacheds-parent-&lt;version&gt;-source-release.zip.md5'
  - Generated './apacheds-parent-&lt;version&gt;-source-release.zip.sha1'
  - Generated './apacheds-parent-&lt;version&gt;-source-release.zip.asc'
$
</pre>
</div></div>


<h3><a name="ReleasingApacheDS-6.PublishSourceDistributionPackage"></a>6.
Publish Source Distribution Package</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ cd target/checkout/target
$ scp apacheds-parent-&lt;version&gt;-source-release.zip* people.apache.org:public_html/apacheds-&lt;version&gt;
</pre>
</div></div>

<h3><a name="ReleasingApacheDS-7.Testthenewversion"></a>7. Test the new
version</h3>
<p>The best way to do that is to download the sources, extract them, build the server
and the installers, and check if the installers are correctly working. Then check that the
server is correctly running.</p>

<h3><a name="ReleasingApacheDS-8.Createtheinstallers"></a>8. Create the
installers</h3>
<p>We now have to create the installers. Go into the target/checkout directory and run
:</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ cd apacheds/target/checkout/
$ mvn clean install -Pinstallers
</pre>
</div></div>

<p>This will create the installers in the target/checkout/installers/target/installers
directory</p>

<p>Sign those installers using the sigh.sh script, and copy them in people.apache.org/public_html/apacheds-&lt;version&gt;</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ cd apacheds/target/checkout/target/installers/target/installers
$ scp apacheds-&lt;version&gt;* people.apache.org:public_html/apacheds-&lt;version&gt;
</pre>
</div></div>

<p>Note : you will need a Debian, a Fedora and a Windows server to generate dedicated
binaries for those platforms, or you can use rpmbuild, dpkg or nsis if you don't want to use
many different servers.</p>

<p>Update your index.html file on people.apache.org/public_html to make the packages
visible. Here is an example of possible content :</p>

<p>{noformat)<br/>
&lt;h2&gt;Last Directory Server &lt;version&gt; sources tarballs&lt;/h2&gt;<br/>
  &lt;img src="/icons/compressed.gif" alt="[   ]"&gt;&lt;a href="apacheds-&lt;version&gt;/apacheds-parent-&lt;version&gt;<del>source-release.zip"&gt;apacheds-parent</del>&lt;version&gt;-source-release.zip&lt;/a&gt;&lt;br/&gt;<br/>
  &lt;img src="/icons/compressed.gif" alt="[   ]"&gt;&lt;a href="apacheds-&lt;version&gt;/apacheds-parent-&lt;version&gt;<del>source-release.zip.asc"&gt;apacheds-parent</del>&lt;version&gt;-source-release.zip.asc&lt;/a&gt;&lt;br/&gt;<br/>
  &lt;img src="/icons/compressed.gif" alt="[   ]"&gt;&lt;a href="apacheds-&lt;version&gt;/apacheds-parent-&lt;version&gt;<del>source-release.zip.md5"&gt;apacheds-parent</del>&lt;version&gt;-source-release.zip.md5&lt;/a&gt;&lt;br/&gt;<br/>
  &lt;img src="/icons/compressed.gif" alt="[   ]"&gt;&lt;a href="apacheds-&lt;version&gt;/apacheds-parent-&lt;version&gt;<del>source-release.zip.sha1"&gt;apacheds-parent</del>&lt;version&gt;-source-release.zip.sha1&lt;/a&gt;&lt;br&gt;</p>

<p>&lt;h2&gt;Last Directory Server &lt;version&gt; installers&lt;/h2&gt;<br/>
  &lt;h3&gt;Plain 32 bits binary installers&lt;/h3&gt;<br/>
    &lt;img src="/icons/compressed.gif" alt="[   ]"&gt;&lt;a href="apacheds-&lt;version&gt;/apacheds-&lt;version&gt;<del>32bit.bin"&gt;apacheds</del>&lt;version&gt;-32bit.bin&lt;/a&gt;&lt;br/&gt;<br/>
    &lt;img src="/icons/compressed.gif" alt="[   ]"&gt;&lt;a href="apacheds-&lt;version&gt;/apacheds-&lt;version&gt;<del>32bit.bin.asc"&gt;apacheds</del>&lt;version&gt;-32bit.bin.asc&lt;/a&gt;&lt;br/&gt;<br/>
    &lt;img src="/icons/compressed.gif" alt="[   ]"&gt;&lt;a href="apacheds-&lt;version&gt;/apacheds-&lt;version&gt;<del>32bit.bin.md5"&gt;apacheds</del>&lt;version&gt;-32bit.bin.md5&lt;/a&gt;&lt;br/&gt;<br/>
    &lt;img src="/icons/compressed.gif" alt="[   ]"&gt;&lt;a href="apacheds-&lt;version&gt;/apacheds-&lt;version&gt;<del>32bit.bin.sha1"&gt;apacheds</del>&lt;version&gt;-32bit.bin.sha1&lt;/a&gt;&lt;br/&gt;<br/>
  &lt;br/&gt;<br/>
  &lt;h3&gt;Plain 64 bits installers&lt;/h3&gt;<br/>
    &lt;img src="/icons/compressed.gif" alt="[   ]"&gt;&lt;a href="apacheds-&lt;version&gt;/apacheds-&lt;version&gt;<del>64bit.bin"&gt;apacheds</del>&lt;version&gt;-64bit.bin&lt;/a&gt;&lt;br/&gt;<br/>
    &lt;img src="/icons/compressed.gif" alt="[   ]"&gt;&lt;a href="apacheds-&lt;version&gt;/apacheds-&lt;version&gt;<del>64bit.bin.asc"&gt;apacheds</del>&lt;version&gt;-64bit.bin.asc&lt;/a&gt;&lt;br/&gt;<br/>
    &lt;img src="/icons/compressed.gif" alt="[   ]"&gt;&lt;a href="apacheds-&lt;version&gt;/apacheds-&lt;version&gt;<del>64bit.bin.md5"&gt;apacheds</del>&lt;version&gt;-64bit.bin.md5&lt;/a&gt;&lt;br/&gt;<br/>
    &lt;img src="/icons/compressed.gif" alt="[   ]"&gt;&lt;a href="apacheds-&lt;version&gt;/apacheds-&lt;version&gt;<del>64bit.bin.sha1"&gt;apacheds</del>&lt;version&gt;-64bit.bin.sha1&lt;/a&gt;&lt;br/&gt;<br/>
  &lt;br/&gt;<br/>
...</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>
h3. 9. Vote
Start a 72h vote at the dev mailing list.

h3. 10. Release
If the vote succeeds Apacheds project can be released.

Go to [https://repository.apache.org/index.html#stagingRepositories] and release the staging
repository so all artifacts are published to Maven central.

Move the distribution packages (sources and binaries) to the dist SVN repository: https://dist.apache.org/repos/dist/release/directory/apacheds/dist/$(version)

The best solution would be to checkout the directory in people.apache.org, to copy the packages
in the right place, and to check in the changes :

</pre>
</div></div>
<p>$ ssh people.apache.org</p>
<ol>
	<li>svn co <a href="https://dist.apache.org/repos/dist/release/directory/apacheds/dist/"
class="external-link" rel="nofollow">https://dist.apache.org/repos/dist/release/directory/apacheds/dist/</a>
apacheds-dist</li>
	<li>cd apacheds-dist</li>
	<li>mkdir &lt;version&gt;</li>
	<li>cp ../public_html/apacheds-&lt;version&gt;/* &lt;version&gt;</li>
	<li>svn ci &lt;version&gt;<br/>
...</li>
	<li>exit<br/>
$
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>
The packages should now be available on http://www.us.apache.org/dist/directory/api/dist/&lt;version&gt;

h3. 11. Deploy the Javadocs and XRef

We now can deploy the generated Javadoc and cross-reference pages. They are generated in the
following directory :

target/checkout/target/site

We will copy two directories :

    apidocs
    xref

**Staging or Production?**

Those files will be stored on the production server only !!! And some extra caution ust be
taken not to delete them when we will publish the staging site too...

First of all, you must checkout the two CMS store for the site : staging and revision.

</pre>
</div></div>
<p>$ cd ~/apacheds<br/>
$ svn co <a href="https://svn.apache.org/repos/infra/websites/production/directory/trunk"
class="external-link" rel="nofollow">https://svn.apache.org/repos/infra/websites/production/directory/trunk</a>
staging<br/>
 ...<br/>
$ svn co <a href="https://svn.apache.org/repos/infra/websites/production/directory" class="external-link"
rel="nofollow">https://svn.apache.org/repos/infra/websites/production/directory</a>
production<br/>
 ...</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>
Now, you will first add the directory for the newly generated version :

</pre>
</div></div>
<p>$ cd ~/apacheds/production/content/apacheds/gen-docs<br/>
$ mkdir &lt;version&gt;<br/>
$ svn add &lt;version&gt;</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>
Then copy the generated docs :

</pre>
</div></div>
<p>$ cp -r ~/apacheds/trunks/apacheds/target/checkout/target/site/apachedsdocs ~/apacheds/production/content/apacheds/gen-docs/&lt;version&gt;<br/>
$ cp -r ~/apacheds/trunks/apacheds/target/checkout/target/site/xref ~/apacheds/production/content/apacheds/gen-docs/&lt;version&gt;<br/>
$ </p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>
You have to check in those directories :

</pre>
</div></div>
<p>$ svn add &lt;version&gt;/*<br/>
$ svn ci &lt;version&gt; -m "Injected &lt;version&gt; javadocs"</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>
Now, you have to update the staging site :

</pre>
</div></div>
<p>extpaths.txt</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>
This file list the file on the production site that will not be overriden by the publication
of the staging site. It has to be updated

</pre>
</div></div>
<p>$ cd ~/apacheds/staging/content/<br/>
$ vi extpaths.txt</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>
Add the following line :

</pre>
</div></div>
<p>...</p></li>
	<li>Apacheds<br/>
apacheds/gen-docs/&lt;version&gt;<br/>
...
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>
then save and check in the file .htaccess

We also have to update this file :

</pre>
</div></div>
<p>$ cd ~/apacheds/staging/content/apacheds/gen-docs<br/>
$ vi .htaccess</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>
And update the two last lines to refer to the version you've just released :

</pre>
</div></div>
<p>RewriteRule ^latest$ &lt;version&gt;/<br/>
RewriteRule ^latest/(.*)$ &lt;version&gt;/$1</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre></pre>
</div></div></li>
</ol>


<p>Save and commit the file.</p>

<h3><a name="ReleasingApacheDS-11.Updatethewebsite"></a>11. Update the web
site</h3>

<p>You can now update the site, add a news on the front page, and publish the site.</p>

<p>13. Inform the world !</p>

<p>After 24h, you can now inform the world about the release.</p>

<p>Send a mail to the users and dev mailing list, and one to the announce@apacge.org.</p>

<p>You are done !</p>
    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;" class="grey">
                        <a href="https://cwiki.apache.org/confluence/users/removespacenotification.action?spaceKey=DIRxDEV">Stop
watching space</a>
            <span style="padding: 0px 5px;">|</span>
                <a href="https://cwiki.apache.org/confluence/users/editmyemailsettings.action">Change
email notification preferences</a>
</div>
        <a href="https://cwiki.apache.org/confluence/display/DIRxDEV/Releasing+ApacheDS">View
Online</a>
        |
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=55391&revisedVersion=24&originalVersion=23">View
Changes</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message