View Source

{section}
{column}
h1. Introduction

Place find here requirements, procedure and actions to do to release a Petals project.

h1. Requirements

# Internet connection
# You have an access to the OW2's MRM ([Nexus|http://repository.ow2.org/]), and your account can publish artifacts of the repository 'stagging'.
# Your Maven's setting file is right, containing:
#* MRM declarations,
#* Credential of your Git servers
{code}
<server>
<id>github.com</id>
<username>......</username>
<password>......</password>
</server>
{code}
#* Credential of the OW2's MRM to publish artifacts into the repository 'stagging'
{code}
<server>
<id>ow2.release</id>
<username>petals</username>
<password>......</password>
</server>
<server>
<id>ow2.snapshot</id>
<username>petals</username>
<password>......</password>
</server>
{code}
#* The secret GPG key to sign artifacts
{code}
cdeneux@cdeneux-laptop:~$ gpg --list-secret-keys
/home/cdeneux/.gnupg/secring.gpg
--------------------------------
sec 2048R/09334662 2012-10-08
uid Petals (ESB) <petals-dev@ow2.org>
ssb 2048R/C8353498 2012-10-08
{code}
{tip}If needed, import the secret key [{{secret.key}}|^secret.key]: {{gpg --import secret.key}}{tip}
#* The credential of the GPG key:
{code}
<profile>
<id>gpg-passphrase</id>
<activation>
<property>
<name>performRelease</name>
<value>true</value>
</property>
</activation>
<properties>
<gpg.passphrase>.............</gpg.passphrase>
</properties>
</profile>
{code}

{column}
{column:width=350px}
{panel:title=Table of contents}{toc}{panel}
{panel:title=Contributors}{contributors:order=name|mode=list}{panel}
{column}
{section}

h1. Before release

h2. Check copyright start dates

Before to launch the release process, check that all copyright start dates are right launching the [contiuous integration job "Check copyright start date against SCM content"|http://jenkins.petalslink.com/view/9%20-%20Development%20tools/job/Check%20copyright%20start%20date%20against%20SCM%20content/].

If the job fails, fix errors before to launch the release process.

h2. Disable continuous integration

Before to start the release process, disable the continuous integration to avoid failed builds because of artifacts not promoted from the repository 'stagging' to the repository 'public'.
Deactivating Jenkins jobs can be done manually through the Jenkins UI or using a script as following executed in the [Jenkins console script|http://jenkins.petalslink.com/script]:
{code}
import hudson.model.*

// For each project
for(item in Hudson.instance.items) {
println("JOB : "+item.name)
item.disabled=true
item.save()
println("\n=======\n")
}
{code}
{info}Caution to deactivate only Jenkins jobs associated to the projects that will be released !
{code}
import hudson.model.*

// For each project
for(item in Hudson.instance.items) {
if (item.name.startsWith("4.3.x")) {
println(item.name + ", JOB disabled")
item.disabled=true
item.save()
} else {
println(item.name + ", skipped")
}
}
{code}{info}

h1. Releasing a project hosted on a Git server

Check:
* your project must use the version 2.5.2 or upper of the Maven release plugin,
* a section {{<server>}} must be defined in your Maven settings for your Git server with your credentials.

h1. Releasing Petals ESB

To release Petals ESB, you will release, if needed, in the following order:
# Petals dev tools,
# Easycommons tools,
# Petals ESB.

h2. Releasing Petals dev tools

For each dev tools:
# prepare the release executing the command:
{code}
> mvn release:prepare
{code}
# perform the release executing the command:
{code}
> mvn release:perform
{code}

During the perform phase, Maven will ask you the PGP's pass-phrase.

Once dev tools are released, go to the [OW2's MRM to promote|http://repository.ow2.org/nexus/index.html#stagingRepositories] the released artifacts into the repository containing released artifacts:
# Select the temporary repository containing artifacts just released,
# and "close" it,
# and "release" it.

h2. Releasing EasyCommons artifacts

h3. Releasing EasyCommons artifacts for branchs 4.x.y

First, prepare the release executing the command:
{code}
> mvn release:prepare -DtagBase=https://svn.petalslink.org/svnroot/tags
{code}
Next, perform the release executing the command:
{code}
> mvn release:perform
{code}

h3. Releasing EasyCommons artifacts for trunk

Same as releasing Petals ESB artifacts of trunk.

h2. Releasing Petals ESB artifacts

h3. Releasing Petals ESB artifacts for branchs 4.x.y

h4. For *the Petals root parent POM*

# First, prepare the release executing the command:
{code}
> mvn release:prepare -P prepare-release-profile -DtagBase=https://svn.petalslink.org/svnroot/tags
{code}
# Next, perform the release executing the command:
{code}
> mvn release:perform -P perform-release-profile
{code}

h4. For *all other Petals ESB projects* hosted on SVN

# First, prepare the release executing the command into your *working area set on the right branch*:
{code}
> mvn release:prepare -Darguments="-P prepare-release-profile" -DtagBase=https://svn.petalslink.org/svnroot/tags
{code}
# Next, perform the release executing the command:
{code}
> mvn release:perform -Darguments="-P perform-release-profile"
{code}

h4. For *all other Petals ESB projects* hosted on GitHub

# First, prepare the release executing the command into your *working area set on the right branch*:
{code}
> mvn org.apache.maven.plugins:maven-release-plugin:2.5.2:prepare -Darguments="-P prepare-release-profile"
{code}
# Next, perform the release executing the command:
{code}
> mvn org.apache.maven.plugins:maven-release-plugin:2.5.2:perform -Darguments="-P perform-release-profile"
{code}

h3. Releasing Petals ESB artifacts for trunk

h4. For *the Petals root parent POM*

# prepare the release executing the command:
{code}
> mvn release:prepare -P prepare-release-profile
{code}
# perform the release executing the command:
{code}
> mvn release:perform -P perform-release-profile
{code}

h4. For *all other Petals ESB projects* hosted on SVN

# prepare the release executing the command:
{code}
> mvn release:prepare -Darguments="-P prepare-release-profile"
{code}
{warning}Caution, for *Debian package* and *ZIP distributions* artifacts, you must enter something as {{$\{petals-cli.version\}-1.1-SNAPSHOT}} as the new development version.{warning}
{tip}
The profile {{prepare-release-profile}} is required to disable the check about SCM URL. During the release preparation, SCM URL are updated just before to tag the artifact and the SCM URL declared in the POM will not match the current SCM URL, so SCM enforcer rule must be disable.
{tip}
# perform the release executing the command:
{code}
> mvn release:perform -Darguments="-P perform-release-profile"
{code}
{tip}
The profile {{perform-release-profile}} is required to sign all deployed artifacts (required by OW2).
{tip}

h4. For *all other Petals ESB projects* hosted on GitHub

# First, prepare the release executing the command into your *working area set on the master branch*:
{code}
> mvn org.apache.maven.plugins:maven-release-plugin:2.5.2:prepare -Darguments="-P prepare-release-profile"
{code}
{tip}
The profile {{prepare-release-profile}} is required to disable the check about SCM URL. During the release preparation, SCM URL are updated just before to tag the artifact and the SCM URL declared in the POM will not match the current SCM URL, so SCM enforcer rule must be disable.
{tip}
# Next, perform the release executing the command:
{code}
> mvn org.apache.maven.plugins:maven-release-plugin:2.5.2:perform -Darguments="-P perform-release-profile"
{code}
{tip}
The profile {{perform-release-profile}} is required to sign all deployed artifacts (required by OW2).
{tip}

h2. Releasing Petals ESB samples

Each Petals sample set for a given component must be released as a Maven multi-module project: one SCM tag and several artifacts deployed on repositories.
Once all Petals sample set are released, you can released the Petals sample ZIP archives.

h1. After the release

h2. Publish the released artifacts

Go to the [OW2's MRM to promote|http://repository.ow2.org/nexus/index.html#stagingRepositories] the released artifacts into the repository containing released artifacts:
# Select the temporary repository containing artifacts just released,
# and "close" it,
# and "release" it.

h2. Acceptance & Integration tests

Update integration and acceptance tests against new RELEASE and SNAPSHOT versions.

h2. Enable Jenkins's jobs

Now, the continuous integration can be re-enable, manually or executing a script as following in the [Jenkins console script|http://jenkins.petalslink.com/script]:
{code}
import hudson.model.*

// For each project
for(item in Hudson.instance.items) {
println("JOB : "+item.name)
item.disabled=false
item.save()
println("\n=======\n")
}
{code}
{info}Caution to re-activate only Jenkins jobs that you have deactivated previously !
{code}
import hudson.model.*

// For each project
for(item in Hudson.instance.items) {
if (item.name.startsWith("4.3.x")) {
println(item.name + ", JOB enabled")
item.disabled=false
item.save()
} else {
println(item.name + ", skipped")
}
}
{code}{info}

h2. Changelog

In [JIRA|http://jira.petalslink.com], release version of released projects. If needed, move unresolved issues to a next version or change its resolution state.

Update if needed the right issue query about Petals distributions.

h2. Release the documentation

If the released component has a documentation, release the documentation 'SNAPSHOT' renaming 'SNAPSHOT' by the right version, next copying the released documentation with a new name ending with 'SNAPSHOT'

The component having a documentation to release are:
* Petals ESB container,
* Petals JBI components,
* Petals CLI,
* Petals Ant Tasks,
* Maven Petals Plugin

h2. Communication

Announcements must be done on the right channels: on Twitter and in section 'News' of the Petals web-site, ...

h3. Update the Petals ESB web-site

To update the Petals ESB web-site:
# Clone the Git repository [https://github.com/petalslink/petals.ow2.org],
# Add a file {{download-petals-X.Y.Z.md}} for the new version. It's content is similar to other files {{download-petals-X.Y.Z.md}},
# Adjust the content of {{download.md}},
# Commit and push changes to the Git repository,
# A Jenkins job is automatically launch to deploy the Petals ESB web-site on the web-site stagging area of the OW2 forge
# Publish the Petals web-site through the OW2 forge:
## Go to [http://forge.ow2.org],
## Sign in as manager ({{petals/xxxxx}}),
## Go to [http://forge.ow2.org/project/admin/?group_id=213],
## Push on the button {{Push Project Web Site from Development to Production Now}} (scroll down the web page to see the button),
## Check the Petals ESB web site going to [http://petals.ow2.org/download.html], and checking the content of its links.

h3. Twitter

You can use your personal account to publish an announcement of the new release on Twitter.
Announcement sample:
{code}
@Linagora The new maintenance release 4.2.4 of @petalsesb is out: http://petals.ow2.org/download-petals-4.2.4.html
{code}

All tweets done with a personal account should be retweeted with the account '*petalsesb*' to be automatically listed on the home page of the [Petals web site|http://petals.ow2.org] (see [consulting:Le Compte Twitter de Petals ESB] for more information on account '*petalsesb*').