Jump to: navigation, search

Difference between revisions of "Gyrex/Contributor Guide/Releng"

Line 73: Line 73:
 
# Publish a few milestone builds as release candidates (RC1, RC2, RC3 ...)
 
# Publish a few milestone builds as release candidates (RC1, RC2, RC3 ...)
  
=== Release Maven Parent and Target Platform ===
+
=== Update Maven Parent, Target Platform and child POMs to RELEASE version ===
 
# Update Maven <code>pom.xml</code> and remove <code>-SNAPSHOT</code> version suffix from:
 
# Update Maven <code>pom.xml</code> and remove <code>-SNAPSHOT</code> version suffix from:
 
#* <code>gyrex-releng/mavenparent/pom.xml:</code>
 
#* <code>gyrex-releng/mavenparent/pom.xml:</code>
Line 81: Line 81:
 
#* <code>gyrex-releng/targetplatform/pom.xml:</code>
 
#* <code>gyrex-releng/targetplatform/pom.xml:</code>
 
#** ''project -> parent -> version''
 
#** ''project -> parent -> version''
# Test build of mavenparent and targetplaform locally
+
#* all other POMs used in the build:
#* cd gyrex-releng/mavenparent && mvn clean verify
+
#** <code>cd $GYREX_SERVER_REPO_ROOT</code> (if necessary)
#* cd gyrex-releng/targetplatform && mvn clean verify
+
#** <code>mvn versions:update-child-modules -f releng/aggregator/pom.xml -DgenerateBackupPoms=false</code>
# Commit changes and push to upstream
+
# Test build locally
# Trigger build of the following Hudson jobs:
+
#* <code>cd $GYREX_SERVER_REPO_ROOT</code> (if necessary)
## [https://hudson.eclipse.org/gyrex/job/gyrex-maven-parent%20-%20build%20and%20deploy/ gyrex-maven-parent - build and deploy]
+
#* <code>mvn clean package -f releng/aggregator/pom.xml</code>
## [https://hudson.eclipse.org/gyrex/job/gyrex-target-platform%20-%20build%20and%20deploy/ gyrex-target-platform - build and deploy]
+
# Commit changes and push to upstream at eclipse.org
# Update references to the parent version in all Gyrex modules to be released by removing <code>-SNAPSHOT</code> version suffix from:
+
 
#* <code>gyrex-platform/pom.xml:</code> ''project -> parent -> version''
+
=== Build and Publish Release ===
#* <code>gyrex-admin/pom.xml:</code> ''project -> parent -> version''
+
# Trigger build of the following Hudson job:
#* <code>addons/gyrex-jersey-jaxrs/pom.xml:</code> ''project -> parent -> version''
+
## [https://hudson.eclipse.org/gyrex/job/gyrex-latest/ gyrex-latest]
#* <code>addons/gyrex-mongodb-persistence/pom.xml:</code> ''project -> parent -> version''
+
##* BUILD_TYPE: R
#* <code>addons/gyrex-search/pom.xml:</code> ''project -> parent -> version''
+
##* BUILD_IDENTIFIER: see tables above
# Test build of each component locally
+
##* BUILD_BRANCH and PUBLISH_STREAM as desired
# Commit changes and push to upstream
+
# When builds are OK, create a release tag
# Produce one additional RC (release candidate) build and test it thoroughly.
+
#* <code>cd $GYREX_SERVER_REPO_ROOT</code> (if necessary)
# When testing is done and turns out OK, proceed with next section.
+
#* <code>git tag -a Rwhatever -m 'Release whatever'</code>
 +
#* Push tag to push to upstream at eclipse.org
 +
 
 +
=== Update Maven Parent, Target Platform and child POMs to next SNAPSHOT version ===
 +
# Update Maven <code>pom.xml</code> and replace version with <code>next.minor.0-SNAPSHOT</code> version in:
 +
#* <code>gyrex-releng/mavenparent/pom.xml:</code>
 +
#** ''project -> version''
 +
#** ''project- > properties -> gyrex-target-platform.version''
 +
#* <code>gyrex-releng/targetplatform/pom.xml:</code>
 +
#** ''project -> parent -> version''
 +
#* all other POMs used in the build:
 +
#** <code>cd $GYREX_SERVER_REPO_ROOT</code> (if necessary)
 +
#** <code>mvn versions:update-child-modules -f releng/aggregator/pom.xml -DgenerateBackupPoms=false</code>
 +
# Commit changes and push to upstream at eclipse.org
 +
 
 +
=== Create maintenance branch and update Hudson ===
 +
Note: this must only be done on major and/or minor release. This step is not necessary for maintenance releases.
 +
# Create maintenance branch based on tag created above
 +
# Update Maven Parent, Target Platform and child POMs to next service SNAPSHOT version (just.release.last+1-SNAPSHOT)
 +
#* Follow the exact same steps as in the previous section on the maintenance branch
 +
# Update the configuration of [https://hudson.eclipse.org/gyrex/job/gyrex-latest/ gyrex-latest]:
 +
#* Set default of PUBLISH_STREAM parameter to new <code>next.minor</code> version
 +
# Update the configuration of [https://hudson.eclipse.org/gyrex/job/gyrex-maintenance/ gyrex-maintenance]:
 +
#* Set default of PUBLISH_STREAM parameter to the released <code>current.minor</code> version
 +
#* Set default of BUILD_BRANCH parameter to the created <code>maintenance/current.minor</code> branch

Revision as of 14:23, 28 January 2014

Please read through the following to get a better understanding of how releases are done.

Publishing Builds on download.eclipse.org

Builds get published automatically on download.eclipse.org. However, only I-Builds run automatically once per week. All other builds must be triggered manually.

Hudson: gyrex-latest

For producing development, milestone and major or minor release builds (no service releases).
https://hudson.eclipse.org/gyrex/job/gyrex-latest/

Parameter Description Integration Builds Milestone Builds Release Builds
BUILD_TYPE The type of a build. I S R
BUILD_IDENTIFIER A specific identifier to label the build or empty to generate a default one. (leave empty) upcoming minor release (eg. 1.3) plus suffix (eg. M1, M2, ... RC1, RC2...) without space (eg. 1.3M1, 2.0RC1, ...) major.minor for minor and major releases (eg. 1.3, 2.0); note: see below for service releases
BUILD_BRANCH The branch to build from. should always be master (until instructed/discussed otherwise)
PUBLISH_STREAM The stream this gets published to on download.eclipse.org/gyrex/$PUBLISH_STREAM/... should be the upcoming minor release (eg. 1.3) without last version component, just major.minor


Hudson: gyrex-maintenance

For producing service releases and maintenance builds out of the maintenance branch.
https://hudson.eclipse.org/gyrex/job/gyrex-maintenance/

Parameter Description Integration Builds Milestone Builds
BUILD_TYPE The type of a build. M R
BUILD_IDENTIFIER A specific identifier to label the build or empty to generate a default one. (leave empty) major.minor.service, i.e. exact release version of service releases (eg. 1.3.1, 2.0.1, 2.1.4)
BUILD_BRANCH The branch to build from. should be the "current" maintenance branch (eg. "maintenance/1.3" for 1.3.x builds)
PUBLISH_STREAM The stream this gets published to on download.eclipse.org/gyrex/$PUBLISH_STREAM/... should be the current minor release stream (eg. 1.3 for 1.3.x builds) without last version component, just major.minor


Performing a Release

The following outlines the steps necessary for producing a release.

Pre-Release Steps

  1. Publish a few milestone builds as release candidates (RC1, RC2, RC3 ...)

Update Maven Parent, Target Platform and child POMs to RELEASE version

  1. Update Maven pom.xml and remove -SNAPSHOT version suffix from:
    • gyrex-releng/mavenparent/pom.xml:
      • project -> version
      • project- > properties -> gyrex-target-platform.version
      • Important: if you find any other *.version property in project- > properties containing a -SNAPSHOT suffix you MUST abort here! Revert any changes, then update those versions to the release versions and start again with publishing and testing at least one additional RC (release candidate) build!
    • gyrex-releng/targetplatform/pom.xml:
      • project -> parent -> version
    • all other POMs used in the build:
      • cd $GYREX_SERVER_REPO_ROOT (if necessary)
      • mvn versions:update-child-modules -f releng/aggregator/pom.xml -DgenerateBackupPoms=false
  2. Test build locally
    • cd $GYREX_SERVER_REPO_ROOT (if necessary)
    • mvn clean package -f releng/aggregator/pom.xml
  3. Commit changes and push to upstream at eclipse.org

Build and Publish Release

  1. Trigger build of the following Hudson job:
    1. gyrex-latest
      • BUILD_TYPE: R
      • BUILD_IDENTIFIER: see tables above
      • BUILD_BRANCH and PUBLISH_STREAM as desired
  2. When builds are OK, create a release tag
    • cd $GYREX_SERVER_REPO_ROOT (if necessary)
    • git tag -a Rwhatever -m 'Release whatever'
    • Push tag to push to upstream at eclipse.org

Update Maven Parent, Target Platform and child POMs to next SNAPSHOT version

  1. Update Maven pom.xml and replace version with next.minor.0-SNAPSHOT version in:
    • gyrex-releng/mavenparent/pom.xml:
      • project -> version
      • project- > properties -> gyrex-target-platform.version
    • gyrex-releng/targetplatform/pom.xml:
      • project -> parent -> version
    • all other POMs used in the build:
      • cd $GYREX_SERVER_REPO_ROOT (if necessary)
      • mvn versions:update-child-modules -f releng/aggregator/pom.xml -DgenerateBackupPoms=false
  2. Commit changes and push to upstream at eclipse.org

Create maintenance branch and update Hudson

Note: this must only be done on major and/or minor release. This step is not necessary for maintenance releases.

  1. Create maintenance branch based on tag created above
  2. Update Maven Parent, Target Platform and child POMs to next service SNAPSHOT version (just.release.last+1-SNAPSHOT)
    • Follow the exact same steps as in the previous section on the maintenance branch
  3. Update the configuration of gyrex-latest:
    • Set default of PUBLISH_STREAM parameter to new next.minor version
  4. Update the configuration of gyrex-maintenance:
    • Set default of PUBLISH_STREAM parameter to the released current.minor version
    • Set default of BUILD_BRANCH parameter to the created maintenance/current.minor branch