From commits-return-36980-apmail-directory-commits-archive=directory.apache.org@directory.apache.org Fri Jun 28 11:00:01 2013 Return-Path: X-Original-To: apmail-directory-commits-archive@www.apache.org Delivered-To: apmail-directory-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id AF4A8CA27 for ; Fri, 28 Jun 2013 11:00:01 +0000 (UTC) Received: (qmail 90500 invoked by uid 500); 28 Jun 2013 11:00:01 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 90443 invoked by uid 500); 28 Jun 2013 11:00:01 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 90436 invoked by uid 99); 28 Jun 2013 11:00:01 -0000 Received: from cwiki-vm.apache.org (HELO cwiki-vm) (140.211.11.69) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 28 Jun 2013 11:00:01 +0000 Received: from cwiki-vm (localhost [127.0.0.1]) by cwiki-vm (Postfix) with ESMTP id B3D92A2618 for ; Fri, 28 Jun 2013 11:00:00 +0000 (UTC) Date: Fri, 28 Jun 2013 11:00:00 +0000 (UTC) From: =?UTF-8?Q?Emmanuel_L=C3=A9charny_=28Confluence=29?= To: commits@directory.apache.org Message-ID: <187638289.1283.1372417200032.JavaMail.confluence@cwiki-vm> Subject: [CONF] Apache Directory Development > Releasing ApacheDS MIME-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Auto-Submitted: auto-generated

Releasing ApacheDS

Page edited by Emmanuel L=C3=A9charny


Changes (1)

=20 =20
=20 =20
...

{noformat}
$ cd apacheds/target/checkout/installers
$ mvn clean install -Pinstall= ers
{noformat}
...

Full Content

Introduction

This will show you how to build and release the ApacheDS subproject. Ke= ep an eye out for warning and note sections that show version specific diff= erences in this process.

Manual Step

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

Update th= e apacheds/pom.xml

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.

Update service/apacheds.sh and service/apacheds.bat

Edit the apacheds.sh/bat files in the service project directory to updat= e the revision numbers used in that file to reference non-SNAPSHOT releases= .

Release process

Since we are using Nexus for releases the release process is as follows = (see also http://www.apac= he.org/dev/publishing-maven-artifacts.html#staging-maven).

1. Test the Project<= /h3>
$ mvn release:prepare -DdryRun=3Dtrue

Replace the version by the new version. Be careful, and remove the 'apac= heds-parent-' which is proposed for the new tag. We should just use the ver= sion number.

2. Deploy a Snapsho= t

$ mvn deploy

This is useful to verify your settings in ~/.m2/settings.xml (Nexus pass= word and GPG key)

3. Prepare the Re= lease

$ mvn release:clean
$ mvn release:prepare

This creates a tag here: http://svn.apac= he.org/viewvc/directory/apacheds/tags/

4. Stage the Releas= e

$ mvn release:perform

This deploys the release to a staging repository. Go to https://repository.apache.org/index.html#stagingRepo= sitories and close the staging repository.

5. Build the Site

In order to generate the site, you have to comment some modules in the a= pacheds pom.xml file :

    <!--module>installers-maven-plugin</module-->
    <!--module>installers</module-->

Then you can start the maven command :

$ cd target/checkout
$ mvn site

This creates the site and the Javadocs.

3D""Now, you have to sign the sources packag= es which are in apacheds/target/checkout/target.

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

You can get the keys by typing :

gpg --list-keys

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

#!/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 ".*" -o=
r -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 < "$FILE" | cut "-d " -f2 > "$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" > "$=
FILE".sha1
        echo "  - Generated '$FILE.sha1'"
    else
        echo "  - Skipped '$FILE.sha1' (file already existing)"
    fi
=20
    # 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

Then to sign the packages :

$ sign.sh
PGP Key ID:=20
<your PGP key>
PGP Key Password:=20
<Your password>

-n Signing: ./apacheds-parent-<version>-source-release.zip ...=20
  - Generated './apacheds-parent-<version>-source-release.zip.md5'
  - Generated './apacheds-parent-<version>-source-release.zip.sha1'
  - Generated './apacheds-parent-<version>-source-release.zip.asc'
$

6.= Publish Source Distribution Package

$ cd target/checkout/target
$ scp apacheds-parent-<version>-source-release.zip* people.apache.org=
:public_html/apacheds-<version>

7. Test the new v= ersion

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 wo= rking. Then check that the server is correctly running.

8. Create the i= nstallers

We now have to create the installers. Go into the target/checkout direct= ory and run :

$ cd apacheds/target/checkout/installers
$ mvn clean install -Pinstallers

This will create the installers in the target/checkout/installers/target= /installers directory

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

$ cd apacheds/target/checkout/target/installers/target/installers
$ scp apacheds-<version>* people.apache.org:public_html/apacheds-<=
version>

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 n= sis if you don't want to use many different servers.

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

<h2>Last Directory Server <version> sources tarballs</h=
2>
  <img src=3D"/icons/compressed.gif" alt=3D"[   ]"><a href=3D"apac=
heds-<version>/apacheds-parent-<version>-source-release.zip">=
;apacheds-parent-<version>-source-release.zip</a><br/>
  <img src=3D"/icons/compressed.gif" alt=3D"[   ]"><a href=3D"apac=
heds-<version>/apacheds-parent-<version>-source-release.zip.asc=
">apacheds-parent-<version>-source-release.zip.asc</a><br=
/>
  <img src=3D"/icons/compressed.gif" alt=3D"[   ]"><a href=3D"apac=
heds-<version>/apacheds-parent-<version>-source-release.zip.md5=
">apacheds-parent-<version>-source-release.zip.md5</a><br=
/>
  <img src=3D"/icons/compressed.gif" alt=3D"[   ]"><a href=3D"apac=
heds-<version>/apacheds-parent-<version>-source-release.zip.sha=
1">apacheds-parent-<version>-source-release.zip.sha1</a><=
br>
 =20
<h2>Last Directory Server <version> installers</h2>
  <h3>Plain 32 bits binary installers</h3>
    <img src=3D"/icons/compressed.gif" alt=3D"[   ]"><a href=3D"ap=
acheds-<version>/apacheds-<version>-32bit.bin">apacheds-<=
version>-32bit.bin</a><br/>
    <img src=3D"/icons/compressed.gif" alt=3D"[   ]"><a href=3D"ap=
acheds-<version>/apacheds-<version>-32bit.bin.asc">apacheds-=
<version>-32bit.bin.asc</a><br/>
    <img src=3D"/icons/compressed.gif" alt=3D"[   ]"><a href=3D"ap=
acheds-<version>/apacheds-<version>-32bit.bin.md5">apacheds-=
<version>-32bit.bin.md5</a><br/>
    <img src=3D"/icons/compressed.gif" alt=3D"[   ]"><a href=3D"ap=
acheds-<version>/apacheds-<version>-32bit.bin.sha1">apacheds=
-<version>-32bit.bin.sha1</a><br/>
  <br/>
  <h3>Plain 64 bits installers</h3>
    <img src=3D"/icons/compressed.gif" alt=3D"[   ]"><a href=3D"ap=
acheds-<version>/apacheds-<version>-64bit.bin">apacheds-<=
version>-64bit.bin</a><br/>
    <img src=3D"/icons/compressed.gif" alt=3D"[   ]"><a href=3D"ap=
acheds-<version>/apacheds-<version>-64bit.bin.asc">apacheds-=
<version>-64bit.bin.asc</a><br/>
    <img src=3D"/icons/compressed.gif" alt=3D"[   ]"><a href=3D"ap=
acheds-<version>/apacheds-<version>-64bit.bin.md5">apacheds-=
<version>-64bit.bin.md5</a><br/>
    <img src=3D"/icons/compressed.gif" alt=3D"[   ]"><a href=3D"ap=
acheds-<version>/apacheds-<version>-64bit.bin.sha1">apacheds=
-<version>-64bit.bin.sha1</a><br/>
  <br/>
...

9. Vote

Start a 72h vote at the dev mailing list.

10. Release

If the vote succeeds Apacheds project can be released.

Go to https://repository.apache.o= rg/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 re= pository: https://di= st.apache.org/repos/dist/release/directory/apacheds/dist/$(version)

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

$ ssh people.apache.org
# svn co https://dist.apache.org/repos/dist/release/directory/apacheds/dist=
/ apacheds-dist
# cd apacheds-dist
# mkdir <version>
# cp ../public_html/apacheds-<version>/* <version>
# svn ci <version>
...
# exit
$

The packages should now be available on http= ://www.us.apache.org/dist/directory/api/dist/<version>

11. Deplo= y 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 ex= tra caution ust be taken not to delete them when we will publish the stagin= g site too...

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

$ cd ~/apacheds
$ svn co https://svn.apache.org/repos/infra/websites/production/directory/t=
runk staging
 ...
$ svn co https://svn.apache.org/repos/infra/websites/production/directory p=
roduction
 ...

Now, you will first add the directory for the newly generated version :<= /p>

$ cd ~/apacheds/production/content/apacheds/gen-docs
$ mkdir <version>

Then copy the generated docs :

$ cp -r ~/apacheds/trunks/apacheds/target/checkout/target/site/apidocs=
 ~/apacheds/production/content/apacheds/gen-docs/<version>
$ cp -r ~/apacheds/trunks/apacheds/target/checkout/target/site/xref ~/apach=
eds/production/content/apacheds/gen-docs/<version>
$=20

You have to check in those directories :

$ svn add <version>
$ svn ci <version> -m "Injected <version> javadocs"

Now, you have to update the staging site :

extpaths.txt

This file list the file on the production site that will not be override= n by the publication of the staging site. It has to be updated

$ cd ~/apacheds/staging/content/
$ vi extpaths.txt

Add the following line :

...
# Apacheds
apacheds/gen-docs/<version>
...

then save and check in the file .htaccess

We also have to update this file :

$ cd ~/apacheds/staging/content/apacheds/gen-docs
$ vi .htaccess

And update the two last lines to refer to the version you've just releas= ed :

RewriteRule ^latest$ <version>/
RewriteRule ^latest/(.*)$ <version>/$1

Save and commit the file.

12. Update the we= b site

You can now update the site, add a news on the front page, and publish t= he site.

13. Inform the w= orld !

After 24h, you can now inform the world about the release.

Send a mail to the users and dev mailing list, and one to the announce@a= pacge.org.

You are done !