From commits-return-36962-apmail-directory-commits-archive=directory.apache.org@directory.apache.org Thu Jun 27 09:29: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 E875210F37 for ; Thu, 27 Jun 2013 09:29:01 +0000 (UTC) Received: (qmail 16095 invoked by uid 500); 27 Jun 2013 09:29:01 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 16060 invoked by uid 500); 27 Jun 2013 09:29: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 16053 invoked by uid 99); 27 Jun 2013 09:29:01 -0000 Received: from cwiki-vm.apache.org (HELO cwiki-vm) (140.211.11.69) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 27 Jun 2013 09:29:01 +0000 Received: from cwiki-vm (localhost [127.0.0.1]) by cwiki-vm (Postfix) with ESMTP id B6072A262C for ; Thu, 27 Jun 2013 09:29:00 +0000 (UTC) Date: Thu, 27 Jun 2013 09:29:00 +0000 (UTC) From: =?UTF-8?Q?Emmanuel_L=C3=A9charny_=28Confluence=29?= To: commits@directory.apache.org Message-ID: <615957978.1067.1372325340006.JavaMail.confluence@cwiki-vm> Subject: [CONF] Apache Directory Development > Releasing Apache Directory LDAP API MIME-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Auto-Submitted: auto-generated

Releasing Apache Directory LDAP API

Page edited by Emmanuel L=C3=A9charny


Changes (12)

=20 =20
=20 <= /tr> <= /tr> =20
...
Go to [https://repository.apa= che.org/index.html#stagingRepositories] and release the staging repository = so all artifacts are published to Maven central.

Move the distribution pac= kages (so= urces and bnaries) to the dist SVN repository: https://dist.apache.o= rg/repos/dist/release/directory/api/dist/$(version)
Move the sources releases to= the dist SVN repository: https://dist.apache.org/repos/dist/release/direct= ory/api/$(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 = :

{noformat}
$ ssh people.apache.org
# svn co https://dist= .apache.org/repos/dist/release/directory/api/dist/ api-dist
# cd api-di= st
# mkdir <version>
# cp ../public_html/ldap-api-<version= >/* <version>
# svn ci <version>
...
# exit
= $
{noformat}

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

h3. 10. Deploy the Javadocs a= nd XRef

...
{noformat}
$ cd ~/apached= s/production/content/api/gen-docs
$ mkdir 1.0.0-M18 <version>
$ svn add 1.0.0-M18 <version>
{noformat}

...

{noformat}
$ cp -r ~/apacheds/trunks= /shared/target/checkout/target/site/apidocs ~/apacheds/production/content/api/gen-docs/1.0.0-M18 ~/apacheds/production/c= ontent/api/gen-docs/<version>
$ cp -r ~/apacheds/trunks= /shared/target/checkout/target/site/xref ~/= apacheds/production/content/api/gen-docs/1.0.0-M18 ~/apacheds/production/cont= ent/api/gen-docs/<version>
$
{noformat}
...

{noformat}
$ svn add 1.0.0-M18/* <version>/*
$ svn ci 1.0.0-M18 <version> -m "Injected 1.0.0-M18 <version> javadocs"
{noformat}

...
...
# API
api/gen-docs/1.0.0-M18 api/gen-docs/<version>
...
{noformat}
...

{noformat}
RewriteRule ^latest$ 1.0.0-M18/ <version>/
RewriteRule ^latest/(.*)$= 1.0.0-M18/$1 <version>/$1
<= /td>
{noformat}

...

Full Content

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

1. Tes= t the Project

$ mvn release:prepare -DdryRun=3Dtrue

Be aware that this phase will ask you about the next version, and most i= mportant, for the next SCM tag :

...
[INFO] Checking dependencies and plugins for snapshots ...
What is the release version for "Apache Directory LDAP API"? (org.apache.di=
rectory.api:api-parent) 1.0.0-M16: :=20
What is the release version for "Apache Directory LDAP API I18n"? (org.apac=
he.directory.api:api-i18n) 1.0.0-M16: :=20
What is the release version for "Apache Directory LDAP API Utilities"? (org=
.apache.directory.api:api-util) 1.0.0-M16: :=20
...
What is SCM release tag or label for "Apache Directory LDAP API"? (org.apac=
he.directory.api:api-parent) 1.0.0-M16: :
...

2. De= ploy a Snapshot

$ mvn deploy

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

3. = Prepare the Release

$ mvn release:clean
$ mvn release:prepare

This creates a tag here: http://svn.apache= .org/viewvc/directory/shared/tags/

4. St= age the Release

$ mvn release:perform

This deploys the release to a staging repository.

Go to https://repository.apache.o= rg/index.html#stagingRepositories and close the staging repository.

5. Build= the Site

$ cd target/checkout
$ mvn site

This creates the site.

3D""Now, you have to sign the binary package= s which are in target/checkout/distribution/target.

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

You can get the keys by typing :

    =09
  1. gpg --list-keys

6. Publish Source and Binary Distribution Packages

First of all, create a new directory on people.apache.org/public_html to= store the pacckages :

$ ssh people.apache.org
$ mkdir public_html/ldap-api-<version>
$ exit

Then copy the packages :

$ cd distributions/target
$ scp apache-ldap-api-<version>-* people.apache.org:public_html/ldap-=
api-<version>/

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

<h2>Last Directory LDAP API 1.0.0-M16 tarballs</h2>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.tar.gz">=
;apache-ldap-api-1.0.0-M16-bin.tar.gz</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.tar.gz.asc=
">apache-ldap-api-1.0.0-M16-bin.tar.gz.asc</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.tar.gz.md5=
">apache-ldap-api-1.0.0-M16-bin.tar.gz.md5</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.tar.gz.sha=
1">apache-ldap-api-1.0.0-M16-bin.tar.gz.sha1</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.zip">ap=
ache-ldap-api-1.0.0-M16-bin.zip</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.zip.asc"&g=
t;apache-ldap-api-1.0.0-M16-bin.zip.asc</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.zip.md5"&g=
t;apache-ldap-api-1.0.0-M16-bin.zip.md5</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-bin.zip.sha1"&=
gt;apache-ldap-api-1.0.0-M16-bin.zip.sha1</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.tar.gz">=
;apache-ldap-api-1.0.0-M16-src.tar.gz</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.tar.gz.asc=
">apache-ldap-api-1.0.0-M16-src.tar.gz.asc</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.tar.gz.md5=
">apache-ldap-api-1.0.0-M16-src.tar.gz.md5</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.tar.gz.sha=
1">apache-ldap-api-1.0.0-M16-src.tar.gz.sha1</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.zip">ap=
ache-ldap-api-1.0.0-M16-src.zip</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.zip.asc"&g=
t;apache-ldap-api-1.0.0-M16-src.zip.asc</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.zip.md5"&g=
t;apache-ldap-api-1.0.0-M16-src.zip.md5</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16-src.zip.sha1"&=
gt;apache-ldap-api-1.0.0-M16-src.zip.sha1</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16.pom">apache=
-ldap-api-1.0.0-M16.pom</a><br/>
  <a href=3D"ldap-api-1.0.0-M16/apache-ldap-api-1.0.0-M16.pom.asc">ap=
ache-ldap-api-1.0.0-M16.pom.asc</a><br/>

7. Test the New Version in ApacheDS and Studio

In apacheds/pom.xml change the <org.apache.directory.shared.versi= on> property, build ApacheDS, go into apacheds/service, and run ./apachds.sh to start the server.

In studio/pom.xml change the <org.apache.directory.shared.version= > and <org.apache.directory.shared.validversion> pro= perties, build Studio, and start Studio in applications/applications_<yo= ur platform>/target/ApacheDirectoryStudio-<your platform>/<exec= utable>. Connect to the started ApacheDS.

8. Vote

Start a 72h vote at the dev mailing list.

9. Release

If the vote succeeds LDAP API 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 bnaries) to the dist SVN rep= ository: https://dist.apa= che.org/repos/dist/release/directory/api/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/api/dist/ api=
-dist
# cd api-dist
# mkdir <version>
# cp ../public_html/ldap-api-<version>/* <version>
# svn ci <version>
...
# exit
$

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

10. 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 :

    =09
  • apidocs
  • =09
  • xref
3D""Staging or Production?
Those= files will be stored on the production server only !!! And some extra caut= ion ust be taken not to delete them when we will publish the staging site t= oo...

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/api/gen-docs
$ mkdir <version>
$ svn add <version>

Then copy the generated docs :

$ cp -r ~/apacheds/trunks/shared/target/checkout/target/site/apidocs ~=
/apacheds/production/content/api/gen-docs/<version>
$ cp -r ~/apacheds/trunks/shared/target/checkout/target/site/xref ~/apached=
s/production/content/api/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.t= xt

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 :

...
# API
api/gen-docs/<version>
...

then save and check in the file

.htaccess

We also have to update this file :

$ cd ~/apacheds/staging/content/api/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.

11.= Update the web site

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

12= . Inform the world !

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 !