Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EclipseSCADA/Release/Perform"

(Perform build)
(rewrite after creating shell scripts)
Line 24: Line 24:
 
Tags (Milestone): S0.1.0.M1
 
Tags (Milestone): S0.1.0.M1
  
=== Settings ===
+
=== Process ===
  
All commands below will make use of the following shell variables:
+
For each release cycle there will be a new branch: e.g. 0.1.x-release. On this branch we will
 +
force the version qualifiers using our own maven plugin. Qualifiers are generated using the tycho
 +
jgit buildtimestamp plugin, but using a custom plugin (org.eclipse.scada.releng:build-helper).
  
branch=0.1.x-release
+
The generated qualifiers will be commited, tagged and pushed to the release branch after a local build.
buildType=S
+
 
version=0.1.0
+
The the Hudson will be used to compile and sign the release branch. It will create a local "staging" directory
qualifier=M1
+
which will receive the content that will go to download.eclipse.org.
+
 
repos=external utils chart protocols base core hmi ide deploy releng
+
The build is checked and then promoted to the download area.
+
 
  release="$version"
+
== Check out releng tools ==
[ ! -z "$qualifier" ] && release="$release.qualifier"
+
 
+
You will need to check out the releng shell scripts:
  tag="$buildType$release"
+
 
 +
  git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.releng
 +
 
 +
The shell scripts are under "performRelease". All following commands assume you are in that directory.
 +
 
 +
You will need to set the environment variable ECLIPSE_COMMITTER to the name of your gerrit account:
 +
 
 +
  export ECLIPSE_COMMITTER=<account>
  
 
== Prepare new release branch ==
 
== Prepare new release branch ==
Line 44: Line 53:
 
Create a new branch for each release cycle: e.g. '''0.1.x-release'''
 
Create a new branch for each release cycle: e.g. '''0.1.x-release'''
  
for i in "repos"; do
+
Edit the file "profile" and update the branch name.
  repo="org.eclipse.scada.${i}"
+
 
  echo $repo
+
Execute:
  git clone git://git.eclipse.org/gitroot/eclipsescada/$repo
+
 
  pushd $repo
+
./createBranch
  git branch "$branch"
+
 
  git push origin "$branch"
+
Check the output in the "workspace" directory.
  popd
+
 
  done
+
Push the branch to gerrit:
 +
 
 +
  ./pushBranch
  
 
Changes on the master must be merged to the release branch during the release cycle. New features that should not be included in the release must go to separate feature branches. After the final release is performed they may be merged on the master.
 
Changes on the master must be merged to the release branch during the release cycle. New features that should not be included in the release must go to separate feature branches. After the final release is performed they may be merged on the master.
Line 58: Line 69:
 
If it turns out that merging on the release branch is to cumbersome we will make branches for every release tag in order to prevent merge issues.
 
If it turns out that merging on the release branch is to cumbersome we will make branches for every release tag in order to prevent merge issues.
  
== Checkout ==
+
== Create new release tag ==
  
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.external.git -b "$branch"
+
Create a new tag for a new release during the release cyclce.
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.utils.git -b "$branch"
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.chart.git -b "$branch"
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.protocols.git -b "$branch"
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.base.git -b "$branch"
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.core.git -b "$branch"
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.hmi.git -b "$branch"
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.ide.git -b "$branch"
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.deploy.git -b "$branch"
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.releng.git -b "$branch"
+
+
# checkout master branch -- for testing only
+
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.external.git
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.utils.git
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.chart.git
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.protocols.git
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.base.git
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.core.git
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.hmi.git
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.ide.git
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.deploy.git
+
git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.releng.git
+
  
== Generate Qualifier ==
+
Edit the file "profile" and update the qualifier name.
  
In order to be able to create proper maven release builds the -SNAPSHOT qualifier must be removed. This is done by the
+
Execute:
build helper "generate qualifier" mojo from the Eclipse SCADA releng repository. It uses the tycho jgit build timestamp
+
provider to create timestamp based qualifiers and sets the qualifiers in all maven projects and synchs it back to
+
bundles, features and repositories.
+
  
  mvn versions:set -f org.eclipse.scada.releng/superParent/pom.xml -DnewVersion=$release
+
  ./createTag
mvn org.eclipse.scada.releng:build-helper:0.0.14:generate-qualifier \
+
  -f org.eclipse.scada.releng/aggregator/pom.xml \
+
  -Prpm \
+
  -DforceUpdateParentQualifiers=org.eclipse.scada.releng:superParent:$qualifier \
+
  -DdefaultNameProvider=static \
+
  -DnameProviderMap.eclipse-plugin=timestamp \
+
  -DnameProviderMap.eclipse-feature=timestamp \
+
  -DnameProviderMap.eclipse-test-plugin=timestamp \
+
  -DnameProviderProperties.staticQualifier=$qualifier \
+
  -DnameProviderProperties.timestampProvider=jgit
+
  
== Commit and Tag ==
+
Check the output in the "workspace" directory.
  
Commit the changed qualifiers to the branch and tag it.
+
Build locally:
  
  for i in "repos"; do
+
  ./buildLocally
  repo="org.eclipse.scada.${i}"
+
+
  pushd "$repo"
+
  git add .
+
  git commit -m "Generate version qualifiers for $release"
+
  git tag -a "$release" -m "Tag release - $release"
+
  popd
+
done
+
  
== Build the tag locally ==
+
Wait and check the output in /tmp/my-download-test
  
mvn clean install -f org.eclipse.scada.releng/superParent/pom.xml
+
{{Note|Output from the local build is not signed}}
mvn clean verify \
+
  -f org.eclipse.scada.releng/aggregator/pom.xml \
+
  -Prpm -Pdeb -Peclipse-hudson \
+
  -Pmilestone '-P!nightly' '-P!integration' \
+
  -Ddownload.root=/tmp/my-download-test \
+
  -Declipse.download.root=http://download.eclipse.org
+
  
== Check the output ==
+
If everything looks good push the commit and tag.
  
The output goes to:
+
== Push release commit and tag ==
/tmp/my-download-test
+
  
Unless you changed the previous command ;-)
+
Push the forces qualifiers and the tag:
  
{{Note|Output from the local build is not signed}}
+
./pushTag
  
== Push commit and tag ==
+
Check https://git.eclipse.org/c if the changes made it to gerrit.
  
Push the commit and tag if the local build was successful.
+
== Check the output ==
  
for i in "repos"; do
+
The output goes to:
  repo="org.eclipse.scada.${i}"
+
  /tmp/my-download-test
   
+
 
  pushd "$repo"
+
Unless you changed the previous command ;-)
    git push origin refs/heads/$branch refs/tags/$tag
+
  popd
+
done
+
  
 
== Perform build ==
 
== Perform build ==
Line 153: Line 111:
  
 
* Job: https://hudson.eclipse.org/scada/job/org.eclipse.scada.releng.superParent/
 
* Job: https://hudson.eclipse.org/scada/job/org.eclipse.scada.releng.superParent/
 +
* Wait for the job to complete!
 
* Job: https://hudson.eclipse.org/scada/job/aggregator-release/
 
* Job: https://hudson.eclipse.org/scada/job/aggregator-release/
  
Which should execute the following build command:
+
The result is in the directory "staging" under the workspace of the project "aggregator-release".
 
+
mvn clean verify -Prpm -Pdeb -Peclipse-sign -Peclipse-hudson -Pmilestone '-P!integration'
+
  
 
== Test ==
 
== Test ==

Revision as of 10:17, 22 November 2013

Note.png
This page is work in progress


Preface

Common stuff

All release builds are performed using the "aggregator-release" project -> https://hudson.eclipse.org/scada/job/aggregator-release/

Related pages:

This document uses "bash" shell commands and assumes your are running a Linux system with the following tools installed:

  • Git
  • Java 1.7
  • Maven

Naming

Release Branch: 0.1.x-release

Tags (Release): R0.1.0

Tags (Milestone): S0.1.0.M1

Process

For each release cycle there will be a new branch: e.g. 0.1.x-release. On this branch we will force the version qualifiers using our own maven plugin. Qualifiers are generated using the tycho jgit buildtimestamp plugin, but using a custom plugin (org.eclipse.scada.releng:build-helper).

The generated qualifiers will be commited, tagged and pushed to the release branch after a local build.

The the Hudson will be used to compile and sign the release branch. It will create a local "staging" directory which will receive the content that will go to download.eclipse.org.

The build is checked and then promoted to the download area.

Check out releng tools

You will need to check out the releng shell scripts:

git clone git://git.eclipse.org/gitroot/eclipsescada/org.eclipse.scada.releng

The shell scripts are under "performRelease". All following commands assume you are in that directory.

You will need to set the environment variable ECLIPSE_COMMITTER to the name of your gerrit account:

export ECLIPSE_COMMITTER=<account>

Prepare new release branch

Create a new branch for each release cycle: e.g. 0.1.x-release

Edit the file "profile" and update the branch name.

Execute:

./createBranch

Check the output in the "workspace" directory.

Push the branch to gerrit:

./pushBranch

Changes on the master must be merged to the release branch during the release cycle. New features that should not be included in the release must go to separate feature branches. After the final release is performed they may be merged on the master.

If it turns out that merging on the release branch is to cumbersome we will make branches for every release tag in order to prevent merge issues.

Create new release tag

Create a new tag for a new release during the release cyclce.

Edit the file "profile" and update the qualifier name.

Execute:

./createTag

Check the output in the "workspace" directory.

Build locally:

./buildLocally

Wait and check the output in /tmp/my-download-test

Note.png
Output from the local build is not signed


If everything looks good push the commit and tag.

Push release commit and tag

Push the forces qualifiers and the tag:

./pushTag

Check https://git.eclipse.org/c if the changes made it to gerrit.

Check the output

The output goes to:

/tmp/my-download-test

Unless you changed the previous command ;-)

Perform build

Perform the build on the Eclipse SCADA Hudson instance

The result is in the directory "staging" under the workspace of the project "aggregator-release".

Test

The usual…

Promote

To be written…

Back to the top