Release Process

Prerequisites

  • Start by verifying that the Continuous Integration build succeeds before starting any release. If not fix it first.
  • You need to have accounts on laam.xpertnet.biz (this is the machine hosting XWiki's remote repository) and you'll need a key setup on your account there so that you can ssh to it without having to enter username or password.
  • You need to create a settings.xml file in the .m2/ directory in your user home with the following configuration in it:
<settings>
  <profiles>
    ...
  </profiles>
  <activeProfiles>
    ...
  </activeProfiles>
  <servers>
    <server>
      <id>maven.xwiki.org</id>
      <username>vmassol</username>
      <privateKey>/Users/vmassol/.ssh/key.ssh2.private.openssh</privateKey>
      <filePermissions>664</filePermissions>
      <directoryPermissions>775</directoryPermissions>
    </server>
  </servers>
</settings>

Replace with your username and the location of your priate key of course.

The profiles and activeProfiles settings are the one described on the Building page.

This server configuration is the one used by the release and deploy plugins to upload artifacts on the XWiki remote Maven repository.

General Principles

  • XWiki releases use Maven2 and the Maven2 Release plugin
  • XWiki is modular and some modules are released separately as they have their own release cycle
  • For each module to release perform the following:
    • Resolve all SNAPSHOT dependencies. The Release plugin will not let you release the module if it has SNAPSHOT dependencies. So if that module is depending on some other XWiki module that has not been released, you'll need to release that module first.
    • cd to the directory of the module you wish to release and type mvn release:prepare (the ci profile is there to ensure the full build is executed as some build things are only activated when running on the CI server and need them to run when doing a release). Maven will ask questions about the version of the release, the tag name, etc.
    • Run mvn release:perform
It's a good practice to do a dry run before running mvn release:prepare. You can do that using mvn release:prepare -DdryRun=true

Once all modules you wish to release have been released you'll need to perform other actions:

  • Upload all the files on ObjectWeb's forge (till we serve the files from our Maven repository)
  • Release the versions in JIRA
  • Update xwiki.org:
    • Write the release notes
    • For each item in the release notes, ensure that there's a corresponding documentation update or addition on xwiki.org
    • Update code.xwiki.org with the new downloads (for eg for plugins and applications)
    • Update the Download page with the new links to ObjectWeb
    • Write an announcement blog post on xwiki.org
    • Update the Javadoc page to link to the new javadoc
  • Send an announcement email on the XWiki mailing lists (devs and users)
  • Post a news announcement on https://forge.objectweb.org/
  • Updates sites about XWiki releases:
  • Update myxwiki.org with the new version. This is to test the stability of the release and find problems on a real farm.
  • Enjoy some rest and pray that nobody discovers a blocking bug… :)
  • Start improving the build so that next time all this is done in mere seconds and automatically...

Detailed Maven2 process for releasing XE

Do the releases in the order below. For each step ask yourself whether it's required to release a new version or if the previous released version can be used instead. You can use fisheye to check the commit log and see if there have been any changes affecting a module since the previous release.

  1. Top level POM
    • Directory: xwiki-platform/pom
    • Commands: mvn release:prepare followed by mvn release:perform.
  2. Tools Parent POM
    • Directory: xwiki-platform/xwiki-tools/
    • Commands: mvn release:prepare -N -Darguments=-N (remove directories copied in the tag using subversion client) followed by mvn release:perform -N -Darguments=-N.
  3. Configuration Resources Tool
    • Directory: xwiki-platform/xwiki-tools/xwiki-configuration-resources
    • Commands: mvn release:prepare followed by mvn release:perform.
  4. Jetty Resources Tool
    • Directory: xwiki-platform/xwiki-tools/xwiki-jetty-resources
    • Commands: mvn release:prepare followed by mvn release:perform.
  5. Core
    • Directory: xwiki-platform/core
    • Commands: mvn release:prepare followed by mvn release:perform.
  6. Packager Tool
    • Directory: xwiki-platform/xwiki-tools/packager
    • Commands: mvn release:prepare followed by mvn release:perform.
  7. Plugins POM
    • Directory: xwiki-platform/xwiki-plugins/
    • Commands: mvn release:prepare -N -Darguments=-N (remove directories copied in the tag using subversion client) followed by mvn release:perform -N -Darguments=-N.
  8. Scheduler Plugin
    • Directory: xwiki-platform/xwiki-plugins/scheduler
    • Commands: mvn release:prepare followed by mvn release:perform.
  9. Lucene Plugin
    • Directory: xwiki-platform/xwiki-plugins/lucene
    • Commands: mvn release:prepare followed by mvn release:perform.
  10. Mail Sender Plugin
    • Directory: xwiki-platform/xwiki-plugins/mailsender
    • Commands: mvn release:prepare followed by mvn release:perform.
  11. WatchList Plugin
    • Directory: xwiki-platform/xwiki-plugins/watchlist
    • Commands: mvn release:prepare followed by mvn release:perform.
  12. JODA Time Plugin
    • Directory: xwiki-platform/xwiki-plugins/jodatime
    • Commands: mvn release:prepare followed by mvn release:perform.
  13. Applications Parent POM
    • Directory: xwiki-platform/xwiki-applications/
    • Commands: mvn release:prepare -N -Darguments=-N (remove directories copied in the tag using subversion client) followed by mvn release:perform -N -Darguments=-N.
  14. Panels Application
    • Directory: xwiki-platform/xwiki-applications/panels
    • Commands: mvn release:prepare followed by mvn release:perform.
  15. Scheduler Application
    • Directory: xwiki-platform/xwiki-applications/scheduler
    • Commands: mvn release:prepare followed by mvn release:perform.
  16. Statistics Application
    • Directory: xwiki-platform/xwiki-applications/statistics
    • Commands: mvn release:prepare followed by mvn release:perform.
  17. Skins Parent POM
    • Directory: xwiki-platform/skins/
    • Commands: mvn release:prepare -N -Darguments=-N (remove directories copied in the tag using subversion client) followed by mvn release:perform -N -Darguments=-N.
  18. Albatross Skin
    • Directory: xwiki-platform/skins/albatross
    • Commands: mvn release:prepare followed by mvn release:perform.
  19. Toucan Skin
    • Directory: xwiki-platform/skins/albatross
    • Commands: mvn release:prepare followed by mvn release:perform.
  20. Web
    • Directory: xwiki-platform/web
    • Commands: mvn release:prepare followed by mvn release:perform.
      Warning: The buildnumber plugin used in the build of the web module doesn't work with the French locale. You'll need to momentarily configure your locale to English to make it work.
  21. XE
    • Directory: xwiki-products/xwiki-enterprise
    • Commands: mvn release:prepare -Pci followed by mvn release:perform -Pci -Darguments=-Pci. Because not all the database-dependant modules are executed, the dependencies in database/*/pom.xml and distribution/*/pom.xml must be updated: the tag version in the new tagged directory, and the next SNAPSHOT version for the branch.
      Warning: To build the MS Windows installer, Launch4J is using a binary called Windres which requires that the environment is NOT set to use UTF-8.
Warning: It seems the generic IzPack installer build has an issue building on Linux since the images do not appear. It works fine on Mac OSX.

Detailed Maven2 process for releasing XEM

Do the releases in the following order:

  1. Top level POM. See the instructions for XE above.
  2. Tools Modules. See the instructions for XE above.
  3. Plugins POM. See the instructions for XE above.
  4. Scheduler Plugin. See the instructions for XE above.
  5. Mail Sender Plugin. See the instructions for XE above.
  6. WatchList Plugin. See the instructions for XE above.
  7. Application Manager Plugin
    • Directory: xwiki-platform/xwiki-plugins/application-manager
    • Commands: mvn release:prepare followed by mvn release:perform.
  8. JODA Time Plugin. See the instructions for XE above.
  9. Applications POM. See the instructions for XE above.
  10. Scheduler Application. See the instructions for XE above.
  11. Application Manager Application
    • Directory: xwiki-platform/xwiki-applications/application-manager
    • Commands: mvn release:prepare followed by mvn release:perform.
  12. Wiki Manager Plugin
    • Directory: xwiki-platform/xwiki-plugins/wiki-manager
    • Commands: mvn release:prepare followed by mvn release:perform.
  13. Wiki Manager Application
    • Directory: xwiki-platform/xwiki-applications/wiki-manager
    • Commands: mvn release:prepare followed by mvn release:perform.
  14. Enterprise Manager Product
    • Directory: xwiki-products/xwiki-enterprise-manager
    • Commands: mvn release:prepare -Pci,mysql,derby,hsqldb,pgsql -Darguments=-Pmysql followed by mvn release:perform -Pmysql -Darguments=-Pmysql.
      Warning: The buildnumber plugin used in the build of the web module doesn't work with the French locale. You'll need to momentarily configure your locale to English to make it work.

Detailed Maven2 process for releasing XEclipse

Due to some difficulties in integrating Eclipse PDE Builds and Maven, XEclipse uses a different release process:

  1. Set version numbers to release version in pom.xml and MANIFEST.MF files.
  2. Create SVN tag for the version to be released.
  3. Compile and deploy XEclipse plugin: mvn deploy -DeclipseInstall=${eclipseDir}
  4. Compile and deploy XEclipse standalone for each platform mvn deploy -DeclipseInstall=${eclipseDir} -DpdeBuildVersion=${pdeBuildVersion} -Pplatform where platform is linux, macx86, macppc, windows. In order to discover the value for ${pdeBuildVersion} look at the version of the org.eclipse.pde.build in ${eclipseDir}/plugins
  5. Perform release on Jira
  6. Upload the generated artifacts to the Objectweb Forge.
  7. Update wiki pages and download links.
  8. Post annoucements on mailing lists.
  9. Create blog post.
  10. Set version numbers in pom.xml and MANIFEST.MF files to next version-SNAPSHOT.

Tips and Troubleshooting

  • If you get an out of sync error from OW's SVN when you run mvn release:prepare you'll need to svn up and rerun release:prepare.
  • If Maven fails when you runt release:prepare run first mvn clean install.")
  • The Maven release plugin stores some properties files to keep track of where it is in the release process. If you need to start over and clean those files you can run mvn release:clean
  • If you want to be sure, use -Pci on all maven commands. It's supposed to be triggered automatically by the release process but it's not been tested yet.
  • If Maven fails to upload an artifact to the XWiki remote repository, it's possible there's a problem of permissions in that repository. In that case you'll need to log on laam.xpertnet.biz, go in /home/maven/public_html/repository/* and fix the permission.
  • If you are running Mac OS X 10.5 and have errors while checking in files in SVN during the release process, you might want to read this thread. A workaround is to store your password in clear text in your subversion configuration files.

Announcement Email Example

The XWiki development team is pleased to announce the release of XWiki Enterprise 1.2 RC 3.

Go grab it at http://www.xwiki.org/xwiki/bin/view/Main/Download

This is the third and hopefully last release candidate for the 1.2 version. It fixes several bugs, especially regading Oracle support. The final release is still planned for mid-January.

Changes from 1.2RC2:

    * XWIKI-1993: Database schema update issue when migrating from XE 1.1.2 to 1.2 RC2 on Oracle 10g
    * XWIKI-1995: Error inserting NULL values in NOT-NULL fields under Oracle for Version Comments/Authors
    * XWIKI-1975: Exception displayed in the log when upgrading from a previous 1.2 release to 1.2 RC2
    * XWIKI-1979: FileUploadPlugin should not call cleanFileList in endRendering
    * XWIKI-1981: UI issue when using the new rights managements UI with IE7
    * XWIKI-1946: Attachment renaming in the WYSIWYG Editor doesn't keep the file extension
    * XE-175: Show the "delete" button next to members in the group only when the group is edited

For more information see the Release notes at:
http://www.xwiki.org/xwiki/bin/view/Main/ReleaseNotesXWikiEnterprise12RC3

Thanks
-The XWiki dev team
Version 23.1 last modified by VincentMassol on 25/06/2008 at 22:12

Comments 0

No comments for this document

Attachments 0

No attachments for this document

Creator: jvelociter on 2007/03/05 08:43
This wiki is licensed under a Creative Commons license
1.4.1.10194