Apache Directory Development > Index > Release Process > Creating a release
Added by Emmanuel Lécharny, last edited by Emmanuel Lécharny on May 22, 2007  (view change)

Introduction

This page is giving the wollowed steps we should follow in order to create a release.

We have many steps, all mandatory. (it would be a good idea to write some scripts to avoid errors ...)

It is important to understand that we are releasing 3 projects during this process :

  • shared
  • daemon
  • apacheds

The first two projects must be released before apacheds.

Step 1 : Creating a temporary branch for the release

Better than taging the trunk, creating a branch where all the last modification will be done is the way to go.

Three elements must be copied in the branch :

  • apacheds
  • shared
  • daemon

Here are the commands :

svn copy https://svn.apache.org/repos/asf/directory/apacheds/trunk https://svn.apache.org/repos/asf/directory/apacheds/branches/x.y.z-pre-release
  -m "<message>"
svn copy https://svn.apache.org/repos/asf/directory/shared/trunk https://svn.apache.org/repos/asf/directory/shared/branches/x.y.z-pre-release
  -m "<message>"
svn copy https://svn.apache.org/repos/asf/directory/daemon/trunk https://svn.apache.org/repos/asf/directory/daemon/branches/x.y.z-pre-release
  -m "<message>"
svn copy https://svn.apache.org/repos/asf/directory/apacheds/trunk-with-dependencies
  https://svn.apache.org/repos/asf/directory/apacheds/branches/x.y.z-with-deps-pre-release
  -m "<message>"

We should also copy the commons-tlp files into apacheds-with-dependencies. They contain the top level scripts and pom.xml.

0%

thingsToDo

Quick Add

Branching

We have to branch 3 projects: apacheds, daemon and shared.
(1) branch
(2) bump up versions from SNAPSHOT to next releases (1.0.2)
(3) check that server-tools MANIFEST is properly updated to use the right versions in the jar manifest
elecharny (2) has been done
aok (4) check that the archetype poms have been updated with the latest dependencies (under resources directories)
aok (5) make sure no SNAPSHOT jars are used in all pom.xml files
elecharny (4) and (5) done
aok (6) cd into server-installers and make sure that the pom.xml there references the correct paths to svn sources in this branch
aok this is for generating sources and doco
aok in the installers
aok (7) build the installers for all platforms and test the generated installers (kick the tires)
aok sorry forgot one
aok (5.5) tag this branch into apacheds/releases and shared/releases
elecharny we have to be carefull, because we will have 4 branches
elecharny - apacheds,
elecharny - shared
aok in (6) make sure the svn paths point to the apacheds/release
elecharny - dameon
aok yep
elecharny and the TLP
elecharny ok, I will feed a confleunce page with all those
aok basically you know the code in daemon plugin that svn exports the ADS sources?
aok there is a line in the POM that contqains the svn URL to export
aok fuck fuck
aok I messed up again
elecharny yeah, I remember now
aok ok claer your plate now
aok starting after (5) now
elecharny ok, have a dinner,
elecharny I gonna have my post-dinner evacuation,
elecharny and we will met in half an maven
aok haha go ahead I will document it now
aok while you shit
elecharny document my maven ???
aok (6) change the URL in the server-installers/pom.xml to point to the future svn url for the release tag
elecharny have you a 32" screen ?
aok hahaha
aok damn man
aok so for example the URL will point to ....apacheds/releases/1.0.2
aok (7) tag the release
aok (8) generate the installers and test
aok (9) test the installers (kick the tires) ... check apacheds-tools and startup scripts
aok if anything fails delete the tag and start all over on #6 after fixing the breakage
aok (10) deploy the jars to the production maven repo (mvn deploy)
aok can be done in the pre-release branch
aok (11) delete pre-release branch
aok (12) generate asc files (signatures) for all the jars and pom files deployed to the remote repository
aok for 12 what I do is tar copy all the files under org/apache/directory on people.apache.org
aok into my home directory. Then I delete all the old revisions that were released. I remove the md5 and the sha1 files but not the pom files or the other maven meta files.
aok Then I tar this and push it to my home machine.
aok After doing this I generate the asc signature files for these jars and pom files.
aok Then I delete all the pom files and the jars on my home machine
aok then I tar up all the asc files
aok and scp -r them back to where they need to be on the remote repository
aok MAKE SURE YOU BACKUP THE REMOTE REPO FOR DIRECTORY BEFORE YOU START
aok this way the asc files are in all the artifact directories
aok Use Trustin's sign.sh file to do this.
aok (13) For all installers generate the asc, md5, and sha1 files for them
aok (14) I used to use a hacked form of this sign.sh script to generate these md5 and sha1 files on my ubuntu box
aok (15) deploy these files and jars to the dist area which is mirrored for the installers
aok (16) sit back and have a beer
aok (17) make sure you do a chmod -R g+w on all the files you mess wit
aok s/files/directories/
aok (18) take another maven

Checking the manifest, and mandatory files

We should control that all the manifest files are correct, and that the NOTICES.txt, README.txt etc. are correct. Here is the list of files to check :

  • apacheds/server-installers/README.txt
    <todo: add files>

Build the installers

The installers for every OS must be built before tagging. When done, a last verification should be done by other committers, just in case.

Before building the installers, something should be changed in the apacheds/server-installers/pom.xml : there is a svn copy that takes file from trunk. It should be changed so that the files are taken from the branches we just created.

At the end of the preparation, before tagging the release, we should just modify thise svn copy to point to the tag we will set.