--- <% attributes("title") = "Release Guide" %> title: Release Guide --- name:content pipeline:markdown How to create and announce a ServiceMix release. # Prepare the Release To prepare and perform a release you must be at least at Apache ServiceMix Committer. Your settings.xml should look like: {pygmentize:: xml} ... release ... apache.snapshots.https apache.releases.https ... {pygmentize} # Staging the Release Candidate
  1. grab the latest Source {pygmentize:: text} svn co https://svn.apache.org/repos/asf/servicemix/$PART/trunk {pygmentize}

    where $PART is what you want to release. For example, it can be:

  2. prepare your POMs for release:
    1. make sure there is no snapshots in the POMs to be released
    2. make sure everything builds fine
    3. check that your POMs will not lose content when they are rewritten during the release process: {pygmentize:: text} mvn release:prepare -DdryRun {pygmentize}

      and diff the original pom.xml with the one named pom.xml.tag to see if the license or any other info has been removed. This has been known to happen if the starting <project> tag is not a single line. The only things that should be different between these files are the <version> and <scm> elements. If there are any other changes, you must fix the original pom.xml file and commit before proceeding with the release.

    4. publish a snapshot {pygmentize:: text} $ mvn deploy ... [INFO] [deploy:deploy] [INFO] Retrieving previous build number from apache.snapshots.https ... {pygmentize}
  3. prepare the release {pygmentize:: text} mvn release:clean mvn release:prepare {pygmentize}
  4. stage the release for a vote {pygmentize:: text} mvn release:perform {pygmentize}
  5. close the staging repository
  6. verify the staged artifacts
# Starting the Vote Propose a vote on the dev list with the closed issues, the issues left, and the staging repository - for example: {pygmentize:: text} To: "ServiceMix Developers List" Subject: [VOTE] Release ServiceMix [Component] XXX version Y.Z Hi, We solved N issues in this release: http://issues.apache.org/jira/... There are still some outstanding issues: http://issues.apache.org/jira/... Staging repository: https://repository.apache.org/content/repositories/servicemix-staging-[YOUR REPOSITORY ID]/ Please vote to approve this release: [ ] +1 Approve the release [ ] -1 Veto the release (please provide specific comments) This vote will be open for 72 hours. {pygmentize} * to get the JIRA release notes link, browse to the ServiceMix [JIRA](http://issues.apache.org/jira/browse/ServiceMix) page, select **Release Notes** and choose the relevant sub-project release and format (HTML) * to get the list of issues left in JIRA, select the Open Issues tab on the main ServiceMix page, and select the relevant sub-project. # Wait for the Results

From Votes on Package Releases:

Votes on whether a package is ready to be released follow a format similar to majority approval - except that the decision is officially determined solely by whether at least three +1 votes were registered. Releases may not be vetoed. Generally the community will table the vote to release if anyone identifies serious problems, but in most cases the ultimate decision, once three or more positive votes have been garnered, lies with the individual serving as release manager. The specifics of the process may vary from project to project, but the 'minimum of three +1 votes' rule is universal.

The list of binding voters is available at http://servicemix.apache.org/team.html.

If the vote is successful, post the result to the dev list - for example:

{pygmentize:: text} To: "ServiceMix Developers List" Subject: [RESULT] [VOTE] Release ServiceMix [Component] XXX version Y.Z Hi, The vote has passed with the following result : +1 (binding): <> +1 (non binding): <> I will copy this release to the ServiceMix dist directory and promote the artifacts to the central Maven repository. {pygmentize}

If the vote is unsuccessful, you need to fix the issues and restart the process - see Canceling the Release.
If the vote is successful, you need to promote and distribute the release - see Promoting the Release.

# Canceling the Release

If the vote fails, or you decide to redo the release:

  1. remove the release tag from Subversion (svn del ...)
  2. login to https://repository.apache.org using your Apache SVN credentials. Click on Staging on the left. Then click on org.apache.servicemix in the list of repositories. In the panel below you should see a closed repository that is linked to your username and IP (if it's not yet closed you need to right click and select Close). Right click on this repository and select Drop.
  3. rollback the version in the pom.xml and commit any fixes you need to make
  4. restart the vote
# Promoting the Release If the vote passes: 1. Copy the released artifacts to the ServiceMix dist directory (/x1/www/www.apache.org/dist/servicemix) on people.apache.org 1. Delete the old release from the ServiceMix dist directory (it's archived) 1. Login to [https://repository.apache.org](https://repository.apache.org/) with your Apache SVN credentials. 1. Click on Staging. 1. Find your closed staging repository, right click on it and choose Promote. 1. Select the Releases repository from the drop-down list and click Promote. 1. Click on Repositories, select the Releases repository and validate that your artifacts are all there. 1. Update the news section on the website at news. 1. Update the download page on the website at downloads to point to the new release.

Let the mirrors catch up

For the last two tasks, it's better to give the mirrors some time to distribute the uploaded artifacts (one day should be fine). This ensures that once the website (news and download page) is updated, people can actually download the artifacts.

# Update XML schemas Update the [Xml schemas](xml-schemas.html) page with a link to the HTML and XSD. # Update JIRA 1. Go to **Admin** section on the ServiceMix JIRA and mark the **Component/Y.Z** version as released. 1. Create version Y.Z+1, if that hasn't already been done. # Announcing the ServiceMix Release {pygmentize:: text} To: "ServiceMix Developers List" Subject: [ANN] ServiceMix XXX version Y.Z Released The ServiceMix team is pleased to announce the release of ServiceMix XXX version Y.Z <> http://servicemix.apache.org/XXX.html This release is available from http://servicemix.apache.org/downloads and Maven: org.apache.servicemix org.apache.servicemix.XXX Y.Z Release Notes: <> Enjoy! -The ServiceMix team {pygmentize} Remember to forward this announcement to `users@servicemix.apache.org` - try not to cross-post (CC announcements to both user and dev lists).