Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Gyrex/Contributor Guide/Releng

< Gyrex‎ | Contributor Guide
Revision as of 16:53, 28 January 2014 by Gunnar.wagenknecht.org (Talk | contribs) (Create maintenance branch and update Hudson)

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.released.version+1-SNAPSHOT)
    • Follow the exact same steps as in the previous section but this time on the maintenance branch using the next maintenance version
  3. Update the Hudson job configuration of gyrex-latest:
    • Set default of PUBLISH_STREAM parameter to new next.minor version
  4. Update the Hudson job 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

Back to the top