You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2015/07/28 17:46:10 UTC

[1/3] incubator-brooklyn git commit: Add various release helpers

Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master a7b3d8e99 -> f2ba610ae


Add various release helpers


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/1aa1ba18
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/1aa1ba18
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/1aa1ba18

Branch: refs/heads/master
Commit: 1aa1ba18156b3e592952eced98299d6b79e2ffc0
Parents: 69714b9
Author: Richard Downer <ri...@apache.org>
Authored: Tue Jun 23 13:10:21 2015 +0100
Committer: Richard Downer <ri...@apache.org>
Committed: Tue Jul 28 11:14:43 2015 +0100

----------------------------------------------------------------------
 parent/pom.xml                    |   2 +
 release/.gitignore                |   1 +
 release/Gemfile                   |   5 +
 release/Gemfile.lock              |  38 ++++++
 release/README.md                 |  49 ++++++++
 release/Vagrantfile               |  66 ++++++++++
 release/change-version.sh         |  70 +++++++++++
 release/gpg-agent.conf            |   2 +
 release/make-release-artifacts.sh | 213 +++++++++++++++++++++++++++++++++
 release/pr_report.rb              |  12 ++
 release/settings.xml              |  29 +++++
 usage/scripts/change-version.sh   |  70 -----------
 12 files changed, 487 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1aa1ba18/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index c32477f..2673402 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -777,6 +777,8 @@
                         <excludes combine.children="append">
                             <!-- Exclude sandbox because not part of distribution: not in tgz, and not uploaded to maven-central -->
                             <exclude>sandbox/**</exclude>
+                            <!-- Exclude release because not part of distribution: not in tgz, and not uploaded to maven-central -->
+                            <exclude>release/**</exclude>
                             <!-- Exclude netbeans config files (not part of the project, but often on users' drives -->
                             <exclude>**/nbactions.xml</exclude>
                             <exclude>**/nb-configuration.xml</exclude>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1aa1ba18/release/.gitignore
----------------------------------------------------------------------
diff --git a/release/.gitignore b/release/.gitignore
new file mode 100644
index 0000000..8000dd9
--- /dev/null
+++ b/release/.gitignore
@@ -0,0 +1 @@
+.vagrant

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1aa1ba18/release/Gemfile
----------------------------------------------------------------------
diff --git a/release/Gemfile b/release/Gemfile
new file mode 100644
index 0000000..8ab84b5
--- /dev/null
+++ b/release/Gemfile
@@ -0,0 +1,5 @@
+#ruby=ruby-2.1.2
+#ruby-gemset=brooklyn-release-helpers
+
+source 'https://rubygems.org'
+gem 'github_api'

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1aa1ba18/release/Gemfile.lock
----------------------------------------------------------------------
diff --git a/release/Gemfile.lock b/release/Gemfile.lock
new file mode 100644
index 0000000..859202a
--- /dev/null
+++ b/release/Gemfile.lock
@@ -0,0 +1,38 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    addressable (2.3.8)
+    descendants_tracker (0.0.4)
+      thread_safe (~> 0.3, >= 0.3.1)
+    faraday (0.9.1)
+      multipart-post (>= 1.2, < 3)
+    github_api (0.12.3)
+      addressable (~> 2.3)
+      descendants_tracker (~> 0.0.4)
+      faraday (~> 0.8, < 0.10)
+      hashie (>= 3.3)
+      multi_json (>= 1.7.5, < 2.0)
+      nokogiri (~> 1.6.3)
+      oauth2
+    hashie (3.4.2)
+    jwt (1.5.1)
+    mini_portile (0.6.2)
+    multi_json (1.11.1)
+    multi_xml (0.5.5)
+    multipart-post (2.0.0)
+    nokogiri (1.6.6.2)
+      mini_portile (~> 0.6.0)
+    oauth2 (1.0.0)
+      faraday (>= 0.8, < 0.10)
+      jwt (~> 1.0)
+      multi_json (~> 1.3)
+      multi_xml (~> 0.5)
+      rack (~> 1.2)
+    rack (1.6.4)
+    thread_safe (0.3.5)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  github_api

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1aa1ba18/release/README.md
----------------------------------------------------------------------
diff --git a/release/README.md b/release/README.md
new file mode 100644
index 0000000..f1976f6
--- /dev/null
+++ b/release/README.md
@@ -0,0 +1,49 @@
+Release Scripts and Helpers
+===========================
+
+This folder contains a number of items that will assist in the production of Brooklyn releases.
+
+
+Release scripts - change-version.sh and make-release-artifacts.sh
+-----------------------------------------------------------------
+
+`change-version.sh` will update version numbers across the whole distribution.  It is recommended to use this script
+rather than "rolling your own" or using a manual process, as you risk missing out some version numbers (and
+accidentally changing some that should not be changed).
+
+`make-release-artifacts.sh` will produce the release artifacts with appropriate signatures. It is recommended to use
+this script rather than "rolling your own" or using a manual process, as this script codifies several Apache
+requirements about the release artifacts.
+
+These scripts are fully documented in **Release Process** pages on the website.
+
+
+Vagrant configuration
+---------------------
+
+The `Vagrantfile` and associated files `settings.xml` and `gpg-agent.conf` are for setting up a virtual machine hosting
+a complete and clean development environment. You may benefit from using this environment when making the release, but
+it is not required that you do so.
+
+The environment is a single VM that configured with all the tools needed to make the release. It also configures GnuPG
+by copying your `gpg.conf`, `secring.gpg` and `pubring.gpg` into the VM; also copied is your `.gitconfig`. The
+GnuPG agent is configured to assist with the release signing by caching your passphrase, so you will only need to enter
+it once during the build process. A Maven `settings.xml` is provided to assist with the upload to Apache's Nexus server.
+Finally the canonical Git repository for Apache Brooklyn is cloned into the home directory.
+
+You should edit `settings.xml` before deployment, or `~/.m2/settings.xml` inside the VM after deployment, to include
+your Apache credentials.
+
+Assuming you have VirtualBox and Vagrant already installed, you should simply be able to run `vagrant up` to create the
+VM, and then `vagrant ssh` to get a shell prompt inside the VM. Finally run `vagrant destroy` to clean up afterwards.
+
+This folder is mounted at `/vagrant` inside the VM - this means the release helpers are close to hand, so you can
+run for example `/vagrant/make-release/artifacts.sh`.
+
+
+Pull request reporting
+----------------------
+
+`pr_report.rb` (and associated files `Gemfile` and `Gemfile.lock`) uses the GitHub API to extract a list of open pull
+requests, and writes a summary into `pr_report.tsv`. This could then be imported into Google Sheets to provide a handy
+way of classifying and managing outstanding PRs ahead of making a release.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1aa1ba18/release/Vagrantfile
----------------------------------------------------------------------
diff --git a/release/Vagrantfile b/release/Vagrantfile
new file mode 100644
index 0000000..016c48f
--- /dev/null
+++ b/release/Vagrantfile
@@ -0,0 +1,66 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Vagrantfile that creates a basic workstation for compiling Brooklyn and
+# running tests. Particularly useful for running integration tests, as you
+# can clean up any failed tests simply by destroying and rebuilding the
+# Vagrant instance.
+
+# All Vagrant configuration is done below. The "2" in Vagrant.configure
+# configures the configuration version (we support older styles for
+# backwards compatibility). Please don't change it unless you know what
+# you're doing.
+Vagrant.configure(2) do |config|
+
+  # Base on Ubuntu 14.04 LTS
+  config.vm.box = "ubuntu/trusty64"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  config.vm.provider "virtualbox" do |vb|
+    vb.memory = "2048"
+  end
+
+  config.vm.network "forwarded_port", guest: 8008, host: 8008
+
+  config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
+  config.vm.provision "file", source: "~/.gnupg/gpg.conf", destination: ".gnupg/gpg.conf"
+  config.vm.provision "file", source: "~/.gnupg/pubring.gpg", destination: ".gnupg/pubring.gpg"
+  config.vm.provision "file", source: "~/.gnupg/secring.gpg", destination: ".gnupg/secring.gpg"
+  config.vm.provision "file", source: "gpg-agent.conf", destination: ".gnupg/gpg-agent.conf"
+  config.vm.provision "file", source: "settings.xml", destination: ".m2/settings.xml"
+
+  # Update the VM, install Java and Maven, enable passwordless-ssh-to-localhost,
+  # clone the canonical repository
+  config.vm.provision "shell", inline: <<-SHELL
+    apt-get update
+    apt-get upgrade -y
+    apt-get install -y default-jdk maven git xmlstarlet zip unzip language-pack-en vim-nox gnupg2 gnupg-agent pinentry-curses
+    wget -q -O /tmp/artifactory.zip http://bit.ly/Hqv9aj
+    mkdir -p /opt
+    unzip /tmp/artifactory.zip -d /opt
+    sudo sed -i -e '/Connector port=/ s/=\".*\"/=\"'"8008"'\"/' /opt/artifactory*/tomcat/conf/server.xml
+    /opt/artifactory*/bin/installService.sh
+    service artifactory start
+    chmod -R go= ~vagrant/.gnupg
+    cat /etc/ssh/ssh_host_*_key.pub | awk '{print "localhost,127.0.0.1 "$0}' >> /etc/ssh/ssh_known_hosts
+    su -c 'ssh-keygen -t rsa -b 2048 -N "" -f ~/.ssh/id_rsa; cat ~/.ssh/*.pub >> ~/.ssh/authorized_keys' vagrant
+    su -c 'git clone https://git-wip-us.apache.org/repos/asf/incubator-brooklyn.git apache-brooklyn-git' vagrant
+  SHELL
+end

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1aa1ba18/release/change-version.sh
----------------------------------------------------------------------
diff --git a/release/change-version.sh b/release/change-version.sh
new file mode 100755
index 0000000..280c245
--- /dev/null
+++ b/release/change-version.sh
@@ -0,0 +1,70 @@
+#!/usr/bin/env bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#  http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+set -e
+
+# changes the version everywhere
+# usage, e.g.:  change-version.sh 0.3.0-SNAPSHOT 0.3.0-RC1
+#          or:  change-version.sh MARKER 0.3.0-SNAPSHOT 0.3.0-RC1
+
+[ -d .git ] || {
+  echo "Must run in brooklyn project root directory"
+  exit 1
+}
+
+if [ "$#" -eq 2 ]; then
+  VERSION_MARKER=BROOKLYN_VERSION
+elif [ "$#" -eq 3 ]; then
+  VERSION_MARKER=$1_VERSION
+  shift;
+else
+  echo "Usage:  "$0" [VERSION_MARKER] CURRENT_VERSION NEW_VERSION"
+  echo " e.g.:  "$0" BROOKLYN 0.3.0-SNAPSHOT 0.3.0-RC1"
+  exit 1
+fi
+
+# remove binaries and stuff
+if [ -f pom.xml ] && [ -d target ] ; then mvn clean ; fi
+
+VERSION_MARKER_NL=${VERSION_MARKER}_BELOW
+CURRENT_VERSION=$1
+NEW_VERSION=$2
+
+# grep --exclude-dir working only in recent versions, not on all platforms, replace with find;
+# skip folders named "ignored" or .xxx (but not the current folder ".");
+# exclude log, war, etc. files;
+# use null delimiters so files containing spaces are supported;
+# pass /dev/null as the first file to search in, so the command doesn't fail if find doesn't match any files;
+# add || true for the case where grep doesn't have matches, so the script doesn't halt
+# If there's an error "Argument list too long" add -n20 to xargs arguments and loop over $FILE around sed
+FILES=`find . -type d \( -name ignored -or -name .?\* \) -prune \
+       -o -type f -not \( -name \*.log -or -name '*.war' -or -name '*.min.js' -or -name '*.min.css' \) -print0 | \
+       xargs -0 grep -l "${VERSION_MARKER}\|${VERSION_MARKER_NL}" /dev/null || true`
+
+FILES_COUNT=`echo $FILES | wc | awk '{print $2}'`
+
+if [ ${FILES_COUNT} -ne 0 ]; then
+    # search for files containing version markers
+    sed -i.bak -e "/${VERSION_MARKER}/s/${CURRENT_VERSION}/${NEW_VERSION}/g" $FILES
+    sed -i.bak -e "/${VERSION_MARKER_NL}/{n;s/${CURRENT_VERSION}/${NEW_VERSION}/g;}" $FILES
+fi
+
+echo "Changed ${CURRENT_VERSION} to ${NEW_VERSION} for "${FILES_COUNT}" files"
+echo "(Do a \`find . -name \"*.bak\" -delete\`  to delete the backup files.)"

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1aa1ba18/release/gpg-agent.conf
----------------------------------------------------------------------
diff --git a/release/gpg-agent.conf b/release/gpg-agent.conf
new file mode 100644
index 0000000..3cd0291
--- /dev/null
+++ b/release/gpg-agent.conf
@@ -0,0 +1,2 @@
+default-cache-ttl 7200
+max-cache-ttl 86400

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1aa1ba18/release/make-release-artifacts.sh
----------------------------------------------------------------------
diff --git a/release/make-release-artifacts.sh b/release/make-release-artifacts.sh
new file mode 100755
index 0000000..b372560
--- /dev/null
+++ b/release/make-release-artifacts.sh
@@ -0,0 +1,213 @@
+#!/bin/bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#  http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# creates a source release - this is a .tar.gz file containing all the source code files that are permitted to be released.
+
+set -e
+
+###############################################################################
+fail() {
+    echo >&2 "$@"
+    exit 1
+}
+
+###############################################################################
+show_help() {
+    cat >&2 <<END
+Usage: make-release-artifacts.sh [-v version] [-r rc_number]
+Prepares and builds the source and binary distribution artifacts of a Brooklyn
+release.
+
+  -vVERSION                  overrides the name of this version, if detection
+                             from pom.xml is not accurate for any reason.
+  -rRC_NUMBER                specifies the release candidate number. The
+                             produced artifact names include the 'rc' suffix,
+                             but the contents of the archive artifact do *not*
+                             include the suffix. Therefore, turning a release
+                             candidate into a release requires only renaming
+                             the artifacts.
+
+Specifying the RC number is required. Specifying the version number is
+discouraged; if auto detection is not working, then this script is buggy.
+END
+# ruler                      --------------------------------------------------
+}
+
+###############################################################################
+confirm() {
+    # call with a prompt string or use a default
+    read -r -p "${1:-Are you sure? [y/N]} " response
+    case $response in
+        [yY][eE][sS]|[yY]) 
+            true
+            ;;
+        *)
+            false
+            ;;
+    esac
+}
+
+###############################################################################
+detect_version() {
+    if [ \! -z "${current_version}" ]; then
+        return
+    fi
+
+    set +e
+    current_version=$( xmlstarlet select -t -v '/_:project/_:version/text()' pom.xml 2>/dev/null )
+    success=$?
+    set -e
+    if [ "${success}" -ne 0 -o -z "${current_version}" ]; then
+        fail Could not detect version number
+    fi
+}
+
+###############################################################################
+# Argument parsing
+rc_suffix=
+OPTIND=1
+while getopts "h?v:r:" opt; do
+    case "$opt" in
+        h|\?)
+            show_help
+            exit 0
+            ;;
+        v)
+            current_version=$OPTARG
+            ;;
+        r)
+            rc_suffix=$OPTARG
+            ;;
+        *)
+            show_help
+            exit 1
+    esac
+done
+
+shift $((OPTIND-1))
+[ "$1" = "--" ] && shift
+
+###############################################################################
+# Prerequisite checks
+[ -d .git ] || fail Must run in brooklyn project root directory
+
+detect_version
+
+###############################################################################
+# Determine all filenames and paths, and confirm
+
+release_name=apache-brooklyn-${current_version}
+if [ -z "$rc_suffix" ]; then
+    fail Specifying the RC number is required
+else
+    artifact_name=${release_name}-rc${rc_suffix}
+fi
+
+release_script_dir=$( cd $( dirname $0 ) && pwd )
+brooklyn_dir=$( pwd )
+staging_dir="${brooklyn_dir}/src-release-tmp/${release_name}-src"
+bin_staging_dir="${brooklyn_dir}/bin-release-tmp/${release_name}-bin"
+artifact_dir="${release_script_dir}/${artifact_name}"
+
+echo "The version is ${current_version}"
+echo "The rc suffix is rc${rc_suffix}"
+echo "The release name is ${release_name}"
+echo "The artifact name is ${artifact_name}"
+echo "The artifact directory is ${artifact_dir}"
+echo ""
+confirm "Is this information correct? [y/N]" || exit
+echo ""
+echo "WARNING! This script will run 'git clean -dxf' to remove ALL files that are not under Git source control."
+echo "This includes build artifacts and all uncommitted local files and directories."
+echo "If you want to check what will happen, answer no and run 'git clean -dxn' to dry run."
+echo ""
+confirm || exit
+echo ""
+echo "This script will cause uploads to be made to a staging repository on the Apache Nexus server."
+echo ""
+confirm "Shall I continue?  [y/N]" || exit
+
+###############################################################################
+# Clean the workspace
+git clean -dxf
+
+###############################################################################
+# Source release
+echo "Creating source release folder ${release_name}"
+set -x
+mkdir -p ${staging_dir}
+rsync -rtp --exclude src-release-tmp --exclude bin-release-tmp --exclude .git\* --exclude '**/*.[ejw]ar' --exclude docs/ . ${staging_dir}
+
+mkdir -p ${artifact_dir}
+set +x
+echo "Creating artifact ${artifact_dir}/${artifact_name}.tar.gz and .zip"
+set -x
+( cd src-release-tmp && tar czf ${artifact_dir}/${artifact_name}-src.tar.gz apache-brooklyn-${current_version}-src )
+( cd src-release-tmp && zip -qr ${artifact_dir}/${artifact_name}-src.zip apache-brooklyn-${current_version}-src )
+
+###############################################################################
+# Binary release
+set +x
+echo "Proceeding to build binary release"
+set -x
+
+# Set up GPG agent
+eval $(gpg-agent --daemon --no-grab --write-env-file $HOME/.gpg-agent-info)
+GPG_TTY=$(tty)
+export GPG_TTY GPG_AGENT_INFO
+
+# Workaround for bug BROOKLYN-1
+( cd ${staging_dir} && mvn clean --projects :brooklyn-archetype-quickstart )
+
+# Perform the build and deploy to Nexus staging repository
+( cd ${staging_dir} && mvn deploy -Papache-release )
+
+# Re-pack the archive with the correct names
+mkdir -p bin-release-tmp
+tar xzf ${staging_dir}/usage/dist/target/brooklyn-dist-${current_version}-dist.tar.gz -C bin-release-tmp
+mv bin-release-tmp/brooklyn-dist-${current_version} bin-release-tmp/apache-brooklyn-${current_version}-bin
+
+( cd bin-release-tmp && tar czf ${artifact_dir}/${artifact_name}-bin.tar.gz apache-brooklyn-${current_version}-bin )
+( cd bin-release-tmp && zip -qr ${artifact_dir}/${artifact_name}-bin.zip apache-brooklyn-${current_version}-bin )
+
+###############################################################################
+# Signatures and checksums
+
+# OSX doesn't have sha256sum, even if MacPorts md5sha1sum package is installed.
+# Easy to fake it though.
+which sha256sum >/dev/null || alias sha256sum='shasum -a 256'
+
+( cd ${artifact_dir} &&
+    for a in *.tar.gz *.zip; do
+        md5sum -b ${a} > ${a}.md5
+        sha1sum -b ${a} > ${a}.sha1
+        sha256sum -b ${a} > ${a}.sha256
+        gpg2 --armor --output ${a}.asc --detach-sig ${a}
+    done
+)
+
+###############################################################################
+# Conclusion
+
+set +x
+echo "The release is done - here is what has been created:"
+ls ${artifact_dir}
+echo "You can find these files in: ${artifact_dir}"
+echo "The git commit ID for the voting emails is: $( git rev-parse HEAD )"

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1aa1ba18/release/pr_report.rb
----------------------------------------------------------------------
diff --git a/release/pr_report.rb b/release/pr_report.rb
new file mode 100644
index 0000000..95b6317
--- /dev/null
+++ b/release/pr_report.rb
@@ -0,0 +1,12 @@
+#ruby
+
+require 'CSV'
+require 'github_api'
+
+gh = Github.new
+
+CSV.open("pr_report.tsv", "wb", { :col_sep => "\t" }) do |csv|
+  gh.pull_requests.list('apache', 'incubator-brooklyn').
+      select { |pr| pr.state == "open" }.
+      each { |pr| csv << [ pr.number, pr.title, pr.created_at, pr.user.login ] }
+end

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1aa1ba18/release/settings.xml
----------------------------------------------------------------------
diff --git a/release/settings.xml b/release/settings.xml
new file mode 100644
index 0000000..2b03994
--- /dev/null
+++ b/release/settings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"
+          xmlns="http://maven.apache.org/SETTINGS/1.1.0"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <servers>
+        <!-- Required for uploads to Apache's Nexus instance. These are LDAP credentials - the same credentials you
+           - would use to log in to Git and Jenkins (but not JIRA) -->
+        <server>
+            <id>apache.snapshots.https</id>
+            <username>xxx</username>
+            <password>xxx</password>
+        </server>
+        <server>
+            <id>apache.releases.https</id>
+            <username>xxx</username>
+            <password>xxx</password>
+        </server>
+
+        <!-- This is used for deployments to the play Artifactory instance that is provisioned by the Vagrant scripts.
+           - It may be safely ignored. -->
+        <server>
+            <id>vagrant-ubuntu-trusty-64</id>
+            <username>admin</username>
+            <password>password</password>
+        </server>
+    </servers>
+
+</settings>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1aa1ba18/usage/scripts/change-version.sh
----------------------------------------------------------------------
diff --git a/usage/scripts/change-version.sh b/usage/scripts/change-version.sh
deleted file mode 100755
index 280c245..0000000
--- a/usage/scripts/change-version.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/env bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#  http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-set -e
-
-# changes the version everywhere
-# usage, e.g.:  change-version.sh 0.3.0-SNAPSHOT 0.3.0-RC1
-#          or:  change-version.sh MARKER 0.3.0-SNAPSHOT 0.3.0-RC1
-
-[ -d .git ] || {
-  echo "Must run in brooklyn project root directory"
-  exit 1
-}
-
-if [ "$#" -eq 2 ]; then
-  VERSION_MARKER=BROOKLYN_VERSION
-elif [ "$#" -eq 3 ]; then
-  VERSION_MARKER=$1_VERSION
-  shift;
-else
-  echo "Usage:  "$0" [VERSION_MARKER] CURRENT_VERSION NEW_VERSION"
-  echo " e.g.:  "$0" BROOKLYN 0.3.0-SNAPSHOT 0.3.0-RC1"
-  exit 1
-fi
-
-# remove binaries and stuff
-if [ -f pom.xml ] && [ -d target ] ; then mvn clean ; fi
-
-VERSION_MARKER_NL=${VERSION_MARKER}_BELOW
-CURRENT_VERSION=$1
-NEW_VERSION=$2
-
-# grep --exclude-dir working only in recent versions, not on all platforms, replace with find;
-# skip folders named "ignored" or .xxx (but not the current folder ".");
-# exclude log, war, etc. files;
-# use null delimiters so files containing spaces are supported;
-# pass /dev/null as the first file to search in, so the command doesn't fail if find doesn't match any files;
-# add || true for the case where grep doesn't have matches, so the script doesn't halt
-# If there's an error "Argument list too long" add -n20 to xargs arguments and loop over $FILE around sed
-FILES=`find . -type d \( -name ignored -or -name .?\* \) -prune \
-       -o -type f -not \( -name \*.log -or -name '*.war' -or -name '*.min.js' -or -name '*.min.css' \) -print0 | \
-       xargs -0 grep -l "${VERSION_MARKER}\|${VERSION_MARKER_NL}" /dev/null || true`
-
-FILES_COUNT=`echo $FILES | wc | awk '{print $2}'`
-
-if [ ${FILES_COUNT} -ne 0 ]; then
-    # search for files containing version markers
-    sed -i.bak -e "/${VERSION_MARKER}/s/${CURRENT_VERSION}/${NEW_VERSION}/g" $FILES
-    sed -i.bak -e "/${VERSION_MARKER_NL}/{n;s/${CURRENT_VERSION}/${NEW_VERSION}/g;}" $FILES
-fi
-
-echo "Changed ${CURRENT_VERSION} to ${NEW_VERSION} for "${FILES_COUNT}" files"
-echo "(Do a \`find . -name \"*.bak\" -delete\`  to delete the backup files.)"


[2/3] incubator-brooklyn git commit: Document the release process

Posted by al...@apache.org.
Document the release process


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/26bb45c1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/26bb45c1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/26bb45c1

Branch: refs/heads/master
Commit: 26bb45c1d9986c2d6cfc0cff75c88456298b1bb1
Parents: 1aa1ba1
Author: Richard Downer <ri...@apache.org>
Authored: Tue Jan 13 16:12:39 2015 +0000
Committer: Richard Downer <ri...@apache.org>
Committed: Tue Jul 28 11:50:37 2015 +0100

----------------------------------------------------------------------
 docs/_extra/release.md                          | 288 -------------------
 docs/website/developers/committers/index.md     |   1 +
 .../committers/release-process/announce.md      |  55 ++++
 .../release-process/environment-variables.md    |  21 ++
 .../committers/release-process/fix-release.md   |  10 +
 .../committers/release-process/index.md         |  30 ++
 .../release-process/make-release-artifacts.md   |  49 ++++
 .../committers/release-process/prerequisites.md | 115 ++++++++
 .../committers/release-process/publish-temp.md  |  38 +++
 .../committers/release-process/publish.md       | 129 +++++++++
 .../release-process/release-version.md          |  73 +++++
 .../release-process/verify-release-artifacts.md | 156 ++++++++++
 .../committers/release-process/vote-ipmc.md     |  99 +++++++
 .../committers/release-process/vote.md          | 129 +++++++++
 14 files changed, 905 insertions(+), 288 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/_extra/release.md
----------------------------------------------------------------------
diff --git a/docs/_extra/release.md b/docs/_extra/release.md
deleted file mode 100644
index 656412c..0000000
--- a/docs/_extra/release.md
+++ /dev/null
@@ -1,288 +0,0 @@
----
-layout: website-normal
-title: Release Process
-toc: /guide/toc.json
----
-
-**This needs substantial updating in light of the Apache move.**
-
-<!--
-TODO
-
-vote required?  see governance.
-
-
-     branch-twice-then-reversion-twice
-     e.g. from master=1.0.0_SNAPSHOT we will go to
-          create branch: v1.0.0_SNAPSHOT
-          reversion master:  1.1.0_SNAPSHOT
-          create branch and reversion:  v1.0.0_RC1, v1.0.0_SNAPSHOT
-     describe scripts for releasing
-     docs
-
-update version, using scripts
-
-push examples to repo
-
-push docs to branch and publish
-
--->
-
-Brooklyn is published to two locations:
-
-* Sonatype, for snapshots and for staging releases
-* Maven Central, for full (GA and milestone) releases
-
-Brooklyn artifacts are generally downloaded from:
-
-1. [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22io.brooklyn%22), 
-   and (http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache.brooklyn%22) for pre 0.7.0 versions
-2. [Apache](https://repository.apache.org/index.html#nexus-search;quick~org.apache.brooklyn),
-2. [Sonatype](https://oss.sonatype.org/index.html#nexus-search;quick~io.brooklyn) for pre 0.7.0 versions
-3. [GitHub](https://github.com/apache/incubator-brooklyn).
-
-
-To publish:
-
-* a snapshot release:
-	* mvn deploy to Sonatype
-	* (optional) publish versioned docs to brooklyncentral.github.com project
-* a (milestone) release:
-	* same as above, but with some git versioning 
-	* deploy to Sonatype, then release to Maven Central
-	* deploy a version branch to brooklyn-examples 
-	* deploy (or update) versioned docs
-* a major release:
-	* same as above, and
-	* in addition to versioned examples,  update brooklyn-examples master to match the current (stable) release
-	* in addition to versioned docs, publish full (front page) docs to brooklyncentral.github.com project
-	* bump the snapshot version in brooklyn master to the next release
-
-
-	
-## Configuration 
-
-Your .m2/settings.xml must be configured with the right credentials for Sonatype
-
-  	<servers>
-	...
-		<server>
-			<username> ... </username>
-			<password> ... </password>
-			<id>sonatype-nexus-snapshots</id>
-		</server>
-		<server>
-			<username> ... </username>
-			<password> ... </password>
-			<id>sonatype-nexus-staging</id>
-		</server>
-	...
-	</servers>
-You must be configured to sign artifacts using PGP.
-
-If this is the first time you have used Sonatype, the [Sonatype - Maven Usage Guide](https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide) is required reading.  
-
-The code snippets below use the following variables:
-{% highlight bash %}
-
-export BROOKLYN_DIR=/path/to/brooklyncentral-brooklyn
-export EXAMPLES_DIR=/path/to/brooklyncentral-brooklyn-examples
-export SITE_DIR=/path/to/brooklyncentral-brooklyncentral.github.com
-
-export SNAPSHOT_VERSION=0.6.0-SNAPSHOT
-export RELEASE_VERSION=0.6.0-M1
-{% endhighlight %}
-
-
-## Preparing a Snapshot Release
-
-### Deploy to Sonatype
-
-Execute the following:
-{% highlight bash %}
-mvn -Dbrooklyn.deployTo=sonatype -DskipTests clean install deploy
-{% endhighlight %}
-
-### (Option) Publish snapshot docs.
-
-(Only required if there have been significant changes to docs or java docs.)
-
-{% highlight bash %}
-
-cd $BROOKLYN_DIR/docs
-git checkout master
-
-if [ ! -f $SITE_DIR/index.html ] ; then echo "could not find docs in $SITE_DIR" ; exit 1 ; fi
-
-# Build the docs
-_scripts/build.sh || { echo "failed to build docs" ; exit 1 ; }
-
-# Wipe any previous edition of the same version, replacing with new build.
-rm -rf $SITE_DIR/v/$SNAPSHOT_VERSION
-mkdir $SITE_DIR/v/$SNAPSHOT_VERSION
-cp -r _site/* $SITE_DIR/v/$SNAPSHOT_VERSION/
-
-# and push, causing GitHub to republish with updated /v/$SNAPSHOT_VERSION/
-pushd $SITE_DIR
-git add -A .
-git commit -m "Updated version docs for version $SNAPSHOT_VERSION"
-git push
-popd
-
-{% endhighlight %}
-
-
-
-## Preparing a (Milestone) Release
-
-### Prepare a Release Branch
-
-{% highlight bash %}
-
-cd $BROOKLYN_DIR
-git checkout -b $RELEASE_VERSION
-usage/scripts/change-version.sh $SNAPSHOT_VERSION $RELEASE_VERSION
-git commit -a -m "Changed version to $RELEASE_VERSION"
-git push -u upstream $RELEASE_VERSION
-
-{% endhighlight %}
-
-### Deploy to Sonatype, and Close the repo.
-
-{% highlight bash %}
-mvn -Dbrooklyn.deployTo=sonatype -DskipTests clean install deploy
-{% endhighlight %}
-
-* Go to [oss.sonatype.org ... #stagingRepositories](https://oss.sonatype.org/index.html#stagingRepositories) (again, need credentials)
-* 'Close' the repo
-* Email the closed repo address to brooklyn-dev list, have people download and confirm it works.
-
-### Update the brooklyn-examples repo's version Branch
-
-{% highlight bash %}
-
-cd $EXAMPLES_DIR
-
-pushd $BROOKLYN_DIR
-git checkout $RELEASE_VERSION
-popd
-
-if [ ! -d simple-web-cluster ] ; then echo "wrong dir" ; exit 1 ; fi
-git checkout master
-git checkout -b $RELEASE_VERSION
-rm -rf *
-cp -r $BROOKLYN_DIR/examples/* .
-rm -rf target
-git add -A
-git commit -m "branch for $RELEASE_VERSION"
-git push -u origin $RELEASE_VERSION
-
-{% endhighlight %}
-
-
-### Update the Versioned Docs
-
-{% highlight bash %}
-
-cd $BROOKLYN_DIR/docs
-git checkout $RELEASE_VERSION
-
-if [ ! -f $SITE_DIR/index.html ] ; then echo "could not find docs in $SITE_DIR" ; exit 1 ; fi
-
-# Build the docs
-_scripts/build.sh || { echo "failed to build docs" ; exit 1 ; }
-
-# Wipe any previous edition of the same version, replacing with new build.
-rm -rf $SITE_DIR/v/$RELEASE_VERSION
-mkdir $SITE_DIR/v/$RELEASE_VERSION
-cp -r _site/* $SITE_DIR/v/$RELEASE_VERSION/
-
-# and push, causing GitHub to republish with updated /v/$RELEASE_VERSION/
-pushd $SITE_DIR
-git add -A .
-git commit -m "Updated version docs for version $RELEASE_VERSION"
-git push
-popd
-
-{% endhighlight %}
-	
-## Preparing a Full Release
-
-Complete *all* above steps.
-
-### Deploy to Maven Central
-
-* Confirm that the closed Sonatype repo has no errors
-* Return to [Sonatype: Staging Repositories](https://oss.sonatype.org/index.html#stagingRepositories)
-* 'Release' the repo
-
-### Deploy the Examples master branch.
-
-{% highlight bash %}
-
-cd $EXAMPLES_DIR
-
-pushd $BROOKLYN_DIR
-git checkout $RELEASE_VERSION
-popd
-
-if [ ! -d simple-web-cluster ] ; then echo "wrong dir" ; exit 1 ; fi
-git checkout master
-rm -rf *
-cp -r $BROOKLYN_DIR/examples/* .
-rm -rf target
-git add -A
-git commit -m "Updated to $RELEASE_VERSION"
-git push -u origin master
-
-{% endhighlight %}
-
-### Update the brooklyn.io Front Page Version
-
-{% highlight bash %}
-
-cd $BROOKLYN_DIR/docs
-
-pushd $SITE_DIR
-# remove old root files, but not the previous version in /v/
-if [ -f start/index.html ] ; then
-  for x in * ; do if [[ $x != "v" ]] ; then rm -rf $x ; fi ; done
-else
-  echo IN WRONG DIRECTORY $SITE_DIR - export SITE_DIR to continue
-  exit 1
-fi
-popd
-
-# re-build for hosting at / rather than at /v/VERSION/
-_scripts/build.sh --url "" || { echo "failed to build docs" ; exit 1 ; }
-
-# copy to site dir
-cp -r _site/* $SITE_DIR/
-
-# and git push
-pushd $SITE_DIR
-git add -A .
-git commit -m "Updated root docs for version $RELEASE_VERSION"
-git push
-popd
-
-{% endhighlight %}
-
-
-### Announce
-* Email the Dev and Users mailing lists.
-* Tweet from [@brooklyncentral](https://twitter.com/brooklyncentral)
-
-### Update Snapshot Version
-
-{% highlight bash %}
-
-export NEW_SNAPSHOT_VERSION=0.7.0-SNAPSHOT
-
-cd $BROOKLYN_DIR
-git checkout master
-usage/scripts/change-version.sh $SNAPSHOT_VERSION $NEW_SNAPSHOT_VERSION
-git commit -a -m "Changed version to $NEW_SNAPSHOT_VERSION"
-git push -u upstream master
-
-{% endhighlight %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/website/developers/committers/index.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/committers/index.md b/docs/website/developers/committers/index.md
index abd4781..a37f7c0 100644
--- a/docs/website/developers/committers/index.md
+++ b/docs/website/developers/committers/index.md
@@ -3,6 +3,7 @@ layout: website-normal
 title: Committer Guide
 children:
 - merging-contributed-code.md
+- release-process/index.md
 ---
 
 These pages contain information that is relevant to people with "committer" status in our project.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/website/developers/committers/release-process/announce.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/committers/release-process/announce.md b/docs/website/developers/committers/release-process/announce.md
new file mode 100644
index 0000000..81ee49b
--- /dev/null
+++ b/docs/website/developers/committers/release-process/announce.md
@@ -0,0 +1,55 @@
+---
+layout: website-normal
+title: Announce the release
+navgroup: developers
+---
+
+After svnpubsub has updated, the artifacts will be visible at https://www.apache.org/dist/incubator/brooklyn/, and distributed to Apache mirrors around the world shortly after.
+
+An announcement email can then be made:
+
+### Subject: [ANNOUNCE] Apache Brooklyn 0.7.0-incubating released
+{% highlight text %}
+The Apache Brooklyn team is proud to announce the latest release of Apache
+Brooklyn 0.7.0-incubating.
+
+Apache Brooklyn is a framework for modelling, monitoring, and managing
+applications through autonomic blueprints. More details on Apache Brooklyn
+can be found at http://brooklyn.incubator.apache.org/
+
+Version 0.7.0 is a major step for Apache Brooklyn. It is the first full
+release of the project as part of the Apache incubator.
+
+Thanks go to our community for their improvements, feedback and guidance, and
+to Brooklyn’s commercial users for funding much of this development.
+
+As well as a source code release, we offer a full binary distribution
+download, and a full set of Maven artifacts for developers.
+
+Release notes:
+https://brooklyn.incubator.apache.org/v/0.7.0-incubating/misc/release-notes.html
+
+Download:
+https://brooklyn.incubator.apache.org/download/
+
+User guide:
+https://brooklyn.incubator.apache.org/v/0.7.0-incubating/
+
+Maven artifacts have also been made available on repository.apache.org and
+Maven Central.
+
+Disclaimer:
+Apache Brooklyn is an effort undergoing incubation at The Apache Software
+Foundation (ASF), sponsored by Incubator. Incubation is required of
+all newly accepted projects until a further review indicates that the
+infrastructure, communications, and decision making process have
+stabilized in a manner consistent with other successful ASF projects.
+While incubation status is not necessarily a reflection of the
+completeness or stability of the code, it does indicate that the
+project has yet to be fully endorsed by the ASF.
+
+Thanks
+Richard Downer
+release manager for 0.7.0-incubating
+on behalf of the Brooklyn PPMC
+{% endhighlight %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/website/developers/committers/release-process/environment-variables.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/committers/release-process/environment-variables.md b/docs/website/developers/committers/release-process/environment-variables.md
new file mode 100644
index 0000000..a82f631
--- /dev/null
+++ b/docs/website/developers/committers/release-process/environment-variables.md
@@ -0,0 +1,21 @@
+---
+layout: website-normal
+title: Environment variables for the release
+navgroup: developers
+---
+
+Many example commands in this section using variable names as placeholders for information that will vary between
+releases. To allow these example commands to run unmodified, set these environment variables appropriately.
+
+{% highlight bash %}
+# The version currently set on the master branch
+OLD_MASTER_VERSION=0.7.0-SNAPSHOT
+# The next version to be set on the master branch
+NEW_MASTER_VERSION=0.8.0-SNAPSHOT
+
+# The version we are releasing now. While Brooklyn is in the Apache Incubator, this must be suffixed `-incubating`.
+VERSION_NAME=0.7.0-incubating
+
+# The release candidate number we are making now.
+RC_NUMBER=1
+{% endhighlight %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/website/developers/committers/release-process/fix-release.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/committers/release-process/fix-release.md b/docs/website/developers/committers/release-process/fix-release.md
new file mode 100644
index 0000000..63e1483
--- /dev/null
+++ b/docs/website/developers/committers/release-process/fix-release.md
@@ -0,0 +1,10 @@
+---
+layout: website-normal
+title: Fix on the release branch
+navgroup: developers
+---
+
+Make whatever changes are necessary on the release branch, supported by discussions on the mailing list.
+
+Remember that after the release is done, you should cherry-pick the changes to a new feature branch based on `master`
+and open a pull request, so that the next version will incorporate the bug fixes.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/website/developers/committers/release-process/index.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/committers/release-process/index.md b/docs/website/developers/committers/release-process/index.md
new file mode 100644
index 0000000..0e09c0b
--- /dev/null
+++ b/docs/website/developers/committers/release-process/index.md
@@ -0,0 +1,30 @@
+---
+layout: website-normal
+title: Release Process
+navgroup: developers
+children:
+- { path: prerequisites.md }
+- { path: environment-variables.md }
+- { path: release-version.md }
+- { path: make-release-artifacts.md }
+- { path: verify-release-artifacts.md }
+- { path: publish-temp.md }
+- { path: vote.md }
+- { path: fix-release.md }
+- { path: vote-ipmc.md }
+- { path: publish.md }
+- { path: announce.md }
+---
+1. [Prerequisites](prerequisites.html) - steps that a new release manager must do (but which only need to be done once)
+2. [Set environment variables](environment-variables.html) - many example snippets here use environment variables to
+   avoid repetition - this page describes what they are
+2. [Create a release branch and set the version](release-version.html)
+3. [Make the release artifacts](make-release-artifacts.html)
+4. [Verify the release artifacts](verify-release-artifacts.html)
+5. [Publish the release artifacts to the staging area](publish-temp.html)
+6. [Vote on the dev@brooklyn list](vote.html)
+   1. If the vote fails - [fix the release branch](fix-release.html) and resume from step 3
+7. [Vote on the general@incubator list](vote-ipmc.html)
+   1. If the vote fails - [fix the release branch](fix-release.html) and resume from step 3
+8. [Publish the release artifacts to the public location](publish.html)
+9. [Announce the release](announce.html)

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/website/developers/committers/release-process/make-release-artifacts.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/committers/release-process/make-release-artifacts.md b/docs/website/developers/committers/release-process/make-release-artifacts.md
new file mode 100644
index 0000000..135610aea
--- /dev/null
+++ b/docs/website/developers/committers/release-process/make-release-artifacts.md
@@ -0,0 +1,49 @@
+---
+layout: website-normal
+title: Make the release artifacts
+navgroup: developers
+---
+
+A release script is provided in `release/make-release-artifacts.sh`. This script will prepare all the release artifacts.
+It is written to account for several Apache requirements, so you are advised to use it rather than "rolling your own".
+
+The release script will:
+
+- **Create source code and binary distribution artifacts** and place them in a directory on your workstation.
+- **Create Maven artifacts and upload them to a staging repository** located on the Apache Nexus server.
+
+The script has a single required parameter `-r` which is given the release candidate number - so `-r1` will create
+release candidate 1 and will name the artifacts appropriately.
+
+To run the script:
+
+{% highlight bash %}
+./release/make-release-artifacts.sh -r$RC_NUMBER
+{% endhighlight %}
+
+It will show you the release information it has deduced, and ask yes-or-no if it can proceed. Please note that the
+script will thoroughly clean the Git workspace of all uncommited and unadded files.
+
+A few minutes into the script you will be prompted for the passphrase to your GnuPG private key. You should only be
+asked this question once; the GnuPG agent will cache the password for the remainder of the build.
+
+Please note that uploading to the Nexus staging repository is a slow process. Expect this stage of the build to take
+2 hours.
+
+The release script will:
+
+1. Prepare a staging directory for the source code release
+2. Create .tar.gz and .zip artifacts of the source code
+3. Invoke Maven to build the source code (including running unit tests), and deploy artifacts to a Maven remote
+   repository
+4. Save the .tar.gz and .zip artifacts produced by the build of `brooklyn-dist`
+5. For each of the produced files, produce MD5, SHA1, SHA256 and GnuPG signatures
+
+At the end of the script, it will show you the files it has produced and their location.
+
+Make a signed tag for this release, and then push the tag:
+
+{% highlight bash %}
+git tag -s -m "Tag release ${VERSION_NAME} release candidate ${RC_NUMBER}" apache-brooklyn-${VERSION_NAME}-rc${RC_NUMBER}
+git push origin apache-brooklyn-${VERSION_NAME}-rc${RC_NUMBER}
+{% endhighlight %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/website/developers/committers/release-process/prerequisites.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/committers/release-process/prerequisites.md b/docs/website/developers/committers/release-process/prerequisites.md
new file mode 100644
index 0000000..086df5a
--- /dev/null
+++ b/docs/website/developers/committers/release-process/prerequisites.md
@@ -0,0 +1,115 @@
+---
+layout: website-normal
+title: Release Prerequisites
+navgroup: developers
+---
+
+Subversion repositories for release artifacts
+---------------------------------------------
+
+Apache releases are posted to dist.apache.org, which is a Subversion repository.
+
+We have two directories here:
+
+- https://dist.apache.org/repos/dist/release/incubator/brooklyn - this is where IPMC approved releases go. Do not upload
+  here until we have a vote passed on dev@brooklyn and incubator-general. Check out this folder and name it
+  `apache-dist-release-brooklyn`
+- https://dist.apache.org/repos/dist/dev/incubator/brooklyn - this is where releases to be voted on go. Make the release
+  artifact, and post it here, then post the [VOTE] thread with links here. Check out this folder and name it
+  `apache-dist-dev-brooklyn`.
+
+Example:
+
+{% highlight bash %}
+svn co https://dist.apache.org/repos/dist/release/incubator/brooklyn apache-dist-release-brooklyn
+svn co https://dist.apache.org/repos/dist/dev/incubator/brooklyn apache-dist-dev-brooklyn
+{% endhighlight %}
+
+When working with these folders, **make sure you are working with the correct one**, otherwise you may be publishing
+pre-release software to the global release mirror network!
+
+
+GPG keys
+--------
+
+The release manager must have a GPG key to be used to sign the release.
+
+If you have an existing GPG key, but it does not include your Apache email address, you can add your email address as
+described [in this Superuser.com posting](https://superuser.com/a/293283). Otherwise, create a new GPG key giving your
+Apache email address.
+
+Upload your GPG public key (complete with your Apache email address on it) to a public keyserver - e.g. run
+`gpg2 --export --armor richard@apache.org` and paste it into the “submit” box on http://pgp.mit.edu/
+
+Look up your key fingerprint with `gpg2 --fingerprint richard@apache.org` - it’s the long sequence of hex numbers
+separated by spaces. Log in to [https://id.apache.org/](https://id.apache.org/) then copy-and-paste the fingerprint into
+“OpenPGP Public Key Primary Fingerprint”. Submit.
+
+Now add your key to the `apache-dist-release-brooklyn/KEYS` file:
+
+{% highlight bash %}
+cd apache-dist-release-brooklyn
+(gpg2 --list-sigs richard@apache.org && gpg2 --armor --export richard@apache.org) >> KEYS
+svn commit -m 'Update incubator/brooklyn/KEYS'
+{% endhighlight %}
+
+References: [Post on the general@incubator list](https://mail-archives.apache.org/mod_mbox/incubator-general/201410.mbox/%3CCAOGo0VawupMYRWJKm%2Bi%2ByMBqDQQtbv-nQkfRud5%2BV9PusZ2wnQ%40mail.gmail.com%3E)
+
+
+Software packages
+-----------------
+
+The following software packages are required during the build. Make sure you have them installed.
+
+- A Java Development Kit, version 1.7
+- `maven` and `git`
+- `xmlstarlet` is required by the release script to process version numbers in `pom.xml` files
+- `zip` and `unzip`
+- `pinentry` for secure entry of GPG passphrases. If you are building remotely on a Linux machine, `pinentry-curses` is
+  recommended; building on a mac, `port install pinentry-mac` is recommended.
+- `gnupg2`, and `gnupg-agent` if it is packaged separately (it is on Ubuntu Linux)
+- `md5sum` and `sha1sum` - these are often present by default on Linux, but not on Mac. MacPorts provides these in the
+  package `md5sha1sum`.
+
+
+Maven configuration
+-------------------
+
+The release will involve uploading artifacts to Apache's Nexus instance - therefore you will need to configure your
+Maven install with the necessary credentials.
+
+You will need to add something like this to your `~/.m2/settings.xml` file:
+
+{% highlight xml %}
+<?xml version="1.0"?>
+<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"
+          xmlns="http://maven.apache.org/SETTINGS/1.1.0"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <!-- ... -->
+
+    <servers>
+
+        <!-- ... -->
+
+        <!-- Required for uploads to Apache's Nexus instance. These are LDAP credentials - the same credentials you
+           - would use to log in to Git and Jenkins (but not JIRA) -->
+        <server>
+            <id>apache.snapshots.https</id>
+            <username>xxx</username>
+            <password>xxx</password>
+        </server>
+        <server>
+            <id>apache.releases.https</id>
+            <username>xxx</username>
+            <password>xxx</password>
+        </server>
+
+        <!-- ... -->
+
+    </servers>
+
+    <!-- ... -->
+
+</settings>
+{% endhighlight %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/website/developers/committers/release-process/publish-temp.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/committers/release-process/publish-temp.md b/docs/website/developers/committers/release-process/publish-temp.md
new file mode 100644
index 0000000..aaa6765
--- /dev/null
+++ b/docs/website/developers/committers/release-process/publish-temp.md
@@ -0,0 +1,38 @@
+---
+layout: website-normal
+title: Publish to the staging area
+navgroup: developers
+---
+
+Publish the source and binary distributions to the pre-release area
+-------------------------------------------------------------------
+
+You will need to have checked out the Apache distribution Subversion repository located at
+https://dist.apache.org/repos/dist/dev/incubator/brooklyn. Please refer to [Prerequisites](prerequisites.html) for
+information.
+
+In your workspace for the `dist.apache.org` repo, create a directory with the artifact name and version:
+
+{% highlight bash %}
+mkdir apache-brooklyn-${VERSION_NAME}-rc${RC_NUMBER}
+{% endhighlight %}
+
+Copy into this directory all of the artifacts from the previous step - `-src` and `-bin`, `.tar.gz` and `.zip`, and all
+associated `.md5`, `.sha1`, `.sha256` and `.asc` signatures. Then commit:
+
+{% highlight bash %}
+svn add apache-brooklyn-${VERSION_NAME}-rc${RC_NUMBER}
+svn commit --message "Add apache-brooklyn-${VERSION_NAME}-rc${RC_NUMBER} to dist/dev/incubator/brooklyn"
+{% endhighlight %}
+
+
+Close the staging repository on Apache's Nexus server
+-----------------------------------------------------
+
+*Closing* the staging repository locks it from further changes, and provides a public URL for the repository that can
+be used for downloading the artifacts.
+
+Go to the Apache Nexus server at [https://repository.apache.org/](https://repository.apache.org/) and log in using the
+link in the top right (the credentials are the same as your Git and Jenkins credentials). Go to the "Staging
+Repositories" page, and tick the repository with the name starting `orgapachebrooklyn`. Click the **Close** button.
+Provide a description which includes the version and release candidate, e.g. `Apache Brooklyn 0.7.0-incubating-rc1`.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/website/developers/committers/release-process/publish.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/committers/release-process/publish.md b/docs/website/developers/committers/release-process/publish.md
new file mode 100644
index 0000000..1d7746e
--- /dev/null
+++ b/docs/website/developers/committers/release-process/publish.md
@@ -0,0 +1,129 @@
+---
+layout: website-normal
+title: Publish to the public
+navgroup: developers
+---
+
+Publish the source and binary distributions to the pre-release area
+-------------------------------------------------------------------
+
+You will need to have checked out the Apache distribution Subversion repository located at
+https://dist.apache.org/repos/dist/release/incubator/brooklyn. Please refer to [Prerequisites](prerequisites.html) for
+information.
+
+In your workspace for the `dist.apache.org` repo, create a directory with the artifact name and version:
+
+{% highlight bash %}
+mkdir apache-brooklyn-${VERSION_NAME}
+{% endhighlight %}
+
+Refer back to the pre-release area Subversion (see [Publish to the staging area](publish-temp.html)), and copy all of
+the release candidate artifacts - `-src` and `-bin`, `.tar.gz` and `.zip`, and all associated `.md5`, `.sha1`, `.sha256`
+and `.asc` signatures - into this new folder.
+
+Rename all of the files to remove the `-rcN` designation. If you have the `mmv` tool installed, this can be done with
+this command:
+
+{% highlight bash %}
+mmv -v '*-rc'$RC_NUMBER'-*' '#1-#2'
+{% endhighlight %}
+
+The hash files will need patching to refer to the filenames without the `-rcN` designation:
+
+{% highlight bash %}
+sed -i.bak 's/-rc'$RC_NUMBER'-/-/' *.md5 *.sha1 *.sha256
+rm -f *.bak
+{% endhighlight %}
+
+Note that the PGP signatures do not embed the filename so they do not need to be modified
+
+As a final check, re-test the hashes and signatures:
+
+{% highlight bash %}
+for ext in -src.tar.gz -src.zip -bin.tar.gz -bin.zip; do
+    artifact=apache-brooklyn-${VERSION_NAME}${ext}
+    md5sum -c ${artifact}.md5
+    shasum -a1 -c ${artifact}.sha1
+    shasum -a256 -c ${artifact}.sha256
+    gpg2 --verify ${artifact}.asc ${artifact}
+done
+{% endhighlight %}
+
+Then, add them to Subversion and commit.
+
+{% highlight bash %}
+svn add apache-brooklyn-${VERSION_NAME}
+svn commit --message "Add apache-brooklyn-${VERSION_NAME} to dist/release/incubator/brooklyn"
+{% endhighlight %}
+
+
+Publish the staging repository on Apache's Nexus server
+-------------------------------------------------------
+
+*Releasing* the staging repository causes its contents to be copied to the main Apache Nexus repository. This in turn
+is propagated to Maven Central, meaning all of our users can access the artifacts using a default Maven configuration
+(there's no need to add a `<repository>` to their `pom.xml` or `~/.m2/settings.xml`).
+
+Go to the Apache Nexus server at [https://repository.apache.org/](https://repository.apache.org/) and log in using the
+link in the top right (the credentials are the same as your Git and Jenkins credentials). Go to the "Staging
+Repositories" page, and tick the repository with the name starting `orgapachebrooklyn`. Click the **Release** button.
+Provide a description which includes the version, e.g. `Apache Brooklyn 0.7.0-incubating`.
+
+
+Update the website
+------------------
+
+*Instructions on uploading to the website are beyond the scope of these instructions. Refer to the appropriate
+instructions.*
+
+### Publish documentation for the new release
+
+Go to the release branch and perform a build:
+
+{% highlight bash %}
+git checkout ${VERSION_NAME}
+mvn clean install -DskipTests
+{% endhighlight %}
+
+Generate the permalink docs for the release:
+
+{% highlight bash %}
+cd docs
+./_build/build.sh guide-version
+{% endhighlight %}
+
+Now publish _site/v/*${VERSION_NAME}* to the public website.
+
+Update the "latest" docs to this release:
+
+{% highlight bash %}
+./_build/build.sh guide-latest
+{% endhighlight %}
+
+Now publish _site/v/latest to the public website.
+
+### Update the main website to link to the new release
+
+This should be done on the `master` branch:
+
+{% highlight bash %}
+git checkout master
+{% endhighlight %}
+
+1. Edit the file `docs/_config.yml` - change `brooklyn-stable-version` to be the newly-release version, and
+   `brooklyn-version` to be the current SNAPSHOT version on the master branch.
+2. Edit the file `docs/website/download/verify.md` to add links to the MD5/SHA1/SHA256 hashes and PGP signatures for the
+   new version.
+3. Edit the file `docs/website/meta/versions.md` to add the new version.
+4. Build the updated site with `./_build/build.sh website-root` and upload to the website.
+
+
+Tag the release in git
+----------------------
+
+Make a signed tag for this release, based on the tag for the release candidate, and then push the tag:
+
+{% highlight bash %}
+git tag -s -m "Tag release ${VERSION_NAME}" apache-brooklyn-${VERSION_NAME} apache-brooklyn-${VERSION_NAME}-rc${RC_NUMBER}
+git push origin apache-brooklyn-${VERSION_NAME}
+{% endhighlight %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/website/developers/committers/release-process/release-version.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/committers/release-process/release-version.md b/docs/website/developers/committers/release-process/release-version.md
new file mode 100644
index 0000000..4f36d49
--- /dev/null
+++ b/docs/website/developers/committers/release-process/release-version.md
@@ -0,0 +1,73 @@
+---
+layout: website-normal
+title: Release branch and set version
+navgroup: developers
+---
+
+This will allow development to continue on master without affecting the release; it also allows quick-fixes to the
+release branch to address last-minute problems (which must of course be merged/cherry-picked back into master later).
+
+Determine the correct name for the version. Note that while in incubation, we must include “incubating” in our release
+name - common practice for this is to append “-incubating” to the release version.
+
+Do not use -rc1, -rc2 etc. in version strings. Use the version that will be the actual published version. (The artifacts
+that get uploaded to the dist.apache.org/dev will include “-rc1” etc. in the folder name, but the contents will be *as
+final*. Therefore, turning the rc into the final is simply a case of taking the rc file and publishing it to the release
+folder with the correct name.)
+
+References:
+- [Post on general@incubator](https://mail-archives.apache.org/mod_mbox/incubator-general/201409.mbox/%3CCAK2iWdS1H9dkJcSdohky6hFqJdP0XyuhAG%2B%3D1Aspxcjt5RmnJw%40mail.gmail.com%3E)
+- [Post on general@incubator](https://mail-archives.apache.org/mod_mbox/incubator-general/201409.mbox/%3CCAOGo0VaEz4cEUbgMgqhh3hiiiubnspiGkQ%3DQv08bOwPqRtzAvQ%40mail.gmail.com%3E)
+
+
+Create the release branch and set the release version number
+------------------------------------------------------------
+
+Create a branch with the same name as the version, based off master:
+
+{% highlight bash %}
+git checkout master
+git pull --rebase # assumes that the Apache canonical repository is the default upstream for your master - amend if necessary
+git checkout -b $VERSION_NAME
+git push -u apache $VERSION_NAME
+{% endhighlight %}
+
+Now change the version numbers throughout the repository using the script `release/change-version.sh`.
+
+Example:
+
+{% highlight bash %}
+./release/change-version.sh BROOKLYN $OLD_MASTER_VERSION $VERSION_NAME
+git add .
+# Now inspect the staged changes and ensure there are no surprises
+git commit -m "Change version to $VERSION_NAME"
+git push
+{% endhighlight %}
+
+
+Update the version on master
+----------------------------
+
+The `master` branch will now need updating to refer to the next planned version. (This step is not required if making
+a "milestone" release or similar.)
+
+Example:
+
+{% highlight bash %}
+git checkout master
+./release/change-version.sh BROOKLYN $OLD_MASTER_VERSION $NEW_MASTER_VERSION
+git add .
+# Now inspect the staged changes and ensure there are no surprises
+git commit -m "Change version to $NEW_MASTER_VERSION"
+git push
+{% endhighlight %}
+
+
+Switch back to the release branch
+---------------------------------
+
+Move back to the release branch:
+
+{% highlight bash %}
+git checkout $VERSION_NAME
+{% endhighlight %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/website/developers/committers/release-process/verify-release-artifacts.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/committers/release-process/verify-release-artifacts.md b/docs/website/developers/committers/release-process/verify-release-artifacts.md
new file mode 100644
index 0000000..048737b
--- /dev/null
+++ b/docs/website/developers/committers/release-process/verify-release-artifacts.md
@@ -0,0 +1,156 @@
+---
+layout: website-normal
+title: Verify the release artifacts
+navgroup: developers
+---
+
+Below is described a series of "sanity checks" that should be performed before uploading the artifacts to the
+pre-release area. They are also useful for community members that want to check the artifact before voting (community
+members may also want to check the [list of required software packages](prerequisites.html#software-packages) to ensure
+they have the GnuPG and md5sum/sha1sum installed.
+
+Setup
+-----
+
+The scripts below use several environment variables to cut out repetition and enable easy repeatability for the next
+release. You should determine the following information and set your environment:
+
+{% highlight bash %}
+# The version we are releasing now. While Brooklyn is in the Apache Incubator, this must be suffixed `-incubating`.
+VERSION_NAME=0.7.0-incubating
+
+# The release candidate number we are making now.
+RC_NUMBER=1
+
+# A reference to your Git repository for Brooklyn
+BASE_REPO=~/repos/apache-asf/incubator-brooklyn
+
+# The Git commit hash from which the release was made - get this from the release script, or the Release Manager's announcement
+GIT_COMMIT=edcf928ee65cc29a84376c822759e468a9f016fe
+{% endhighlight %}
+
+Import the PGP keys of the release Managers:
+
+{% highlight bash %}
+curl https://dist.apache.org/repos/dist/release/incubator/brooklyn/KEYS | gpg2 --import
+{% endhighlight %}
+
+
+Verify the hashes and signatures of artifacts
+---------------------------------------------
+
+If the releases have been published to the pre-release area, download them:
+
+{% highlight bash %}
+TEMP_DIR=~/tmp/brooklyn/release/${VERSION_NAME}-rc${RC_NUMBER}
+BASE_NAME=apache-brooklyn-${VERSION_NAME}-rc${RC_NUMBER}
+BASE_URL=https://dist.apache.org/repos/dist/dev/incubator/brooklyn/${BASE_NAME}
+
+mkdir -p ${TEMP_DIR}
+cd ${TEMP_DIR}
+for ext in -src.tar.gz -src.zip -bin.tar.gz -bin.zip; do
+    artifact=${BASE_NAME}${ext}
+    for i in ${artifact} ${artifact}.asc ${artifact}.md5 ${artifact}.sha1 ${artifact}.sha256; do
+      curl ${BASE_URL}/$i -O
+    done
+done
+{% endhighlight %}
+
+Then verify the hashes, and ensure you get a positive message from each one:
+
+{% highlight bash %}
+for ext in -src.tar.gz -src.zip -bin.tar.gz -bin.zip; do
+    artifact=apache-brooklyn-${VERSION_NAME}-rc${RC_NUMBER}${ext}
+    md5sum -c ${artifact}.md5
+    shasum -a1 -c ${artifact}.sha1
+    shasum -a256 -c ${artifact}.sha256
+    gpg2 --verify ${artifact}.asc ${artifact}
+done
+{% endhighlight %}
+
+
+Verify expanded source archive matches contents of RC tag
+---------------------------------------------------------
+
+These commands will compare the contents of the source release to the contents of the equivalent Git commit. Note that
+there will be some differences: we cannot release binary files in the source release, so some test artifacts will
+appear to be missing from the source release, and the source release excludes the documentation, website and release
+scripts.
+
+{% highlight bash %}
+cd $BASE_REPO
+git checkout $GIT_COMMIT
+git clean -d -f -x # WARNING: this will forcibly clean your workspace!
+
+cd $TEMP_DIR
+mkdir unpacked-src
+# Either:
+tar xzf ${BASE_NAME}-src.tar.gz -C unpacked-src/
+# or:
+unzip ${BASE_NAME}-src.zip -d unpacked-src/
+# (or preferably both!)
+diff -qr unpacked-src/$BASE_NAME $BASE_REPO
+{% endhighlight %}
+
+
+Verify the operation of the binary distribution
+-----------------------------------------------
+
+{% highlight bash %}
+cd $TEMP_DIR
+mkdir unpacked-bin
+# Either:
+tar xzf ${BASE_NAME}-bin.tar.gz -C unpacked-bin/
+# or:
+unzip ${BASE_NAME}-bin.tar.gz -d unpacked-bin/
+# (or preferably both!)
+cd unpacked-bin
+./bin/brooklyn launch
+{% endhighlight %}
+
+Try deploying a simple app, such as the YAML:
+
+{% highlight yaml %}
+location: localhost
+services:
+- type: brooklyn.entity.webapp.jboss.JBoss7Server
+{% endhighlight %}
+
+
+Inspect the Maven staging repository
+------------------------------------
+
+Go to the Apache Nexus server at [https://repository.apache.org/](https://repository.apache.org/) and log in using the
+link in the top right (the credentials are the same as your Git and Jenkins credentials). Go to the "Staging
+Repositories" page, and click the repository with the name starting `orgapachebrooklyn`.
+
+Give this a brief inspection to ensure that it looks reasonable. In particular:
+
+- The expected projects are there. (There is no need to do an exhaustive check - but if there is only a couple of
+  projects there, then something has clearly gone wrong!)
+- The projects contain artifacts with the expected version number.
+- The artifacts for a project look reasonable - and there is a `.asc` file (detached PGP cleartext signature) for each
+  artifact.
+
+
+About the sanity check
+----------------------
+
+This is the most basic sanity check. This is now suitable to be uploaded to the pre-release area and an announcement
+made with voting open. This is then the point for the RM and the community to perform more detailed testing on the RC
+artifacts and submit bug reports and votes.
+
+
+If the sanity check fails
+-------------------------
+
+Note the problems causing the failure, and file bug reports, start mailing list discussions etc., as appropriate.
+
+#### For the release manager who was preparing an RC for upload
+
+You should completely discard the defective artifacts.
+
+You will also need to drop the Maven staging repository on Apache's Nexus server: go to the Apache Nexus server at
+[https://repository.apache.org/](https://repository.apache.org/) and log in using the link in the top right (the
+credentials are the same as your Git and Jenkins credentials). Go to the "Staging Repositories" page, and tick the
+repository with the name starting `orgapachebrooklyn`. Click the **Drop** button.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/website/developers/committers/release-process/vote-ipmc.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/committers/release-process/vote-ipmc.md b/docs/website/developers/committers/release-process/vote-ipmc.md
new file mode 100644
index 0000000..5278acc
--- /dev/null
+++ b/docs/website/developers/committers/release-process/vote-ipmc.md
@@ -0,0 +1,99 @@
+---
+layout: website-normal
+title: Vote on general@incubator
+navgroup: developers
+---
+
+Copy-paste the e-mail below, being sure to substitute:
+
+- version number
+- RC number
+- “source release of” or “release of”
+- URLs for the [VOTE] and [RESULT][VOTE] messages on dev@brooklyn
+- URLs containing version numbers
+- URL for your own asc key
+- Checksums
+
+### Subject: [VOTE] Release Apache Brooklyn 0.7.0-incubating [rc1]
+
+{% highlight text %}
+This is to call for a vote for the release of Apache Brooklyn 0.7.0-incubating.
+
+The Apache Brooklyn community have voted in favour of making this release:
+Vote thread:
+https://mail-archives.apache.org/mod_mbox/incubator-brooklyn-dev/201507.mbox/%3CCABQFKi1WapCMRUqQ93E7Qow5onKgL3nyG3HW9Cse7vo%2BtUChRQ%40mail.gmail.com%3E
+Result email:
+https://mail-archives.apache.org/mod_mbox/incubator-brooklyn-dev/201507.mbox/%3CCABQFKi2aJHHfXGC0xsMFU0odfB5X6FF5xhpHbs93%2BNfS-fNRZw%40mail.gmail.com%3E
+
+We now ask the IPMC to vote on this release.
+
+This release comprises of a source code distribution, and a corresponding
+binary distribution, and Maven artifacts.
+
+The source and binary distributions, including signatures, digests, etc. can
+be found at:
+https://dist.apache.org/repos/dist/dev/incubator/brooklyn/apache-brooklyn-0.7.0-incubating-rc1
+
+The artifact SHA-256 checksums are as follows:
+c3b5c581f14b44aed786010ac7c8c2d899ea0ff511135330395a2ff2a30dd5cf *apache-brooklyn-0.7.0-incubating-rc1-bin.tar.gz
+cef49056ba6e5bf012746a72600b2cee8e2dfca1c39740c945c456eacd6b6fca *apache-brooklyn-0.7.0-incubating-rc1-bin.zip
+8069bfc54e7f811f6b57841167b35661518aa88cabcb070bf05aae2ff1167b5a *apache-brooklyn-0.7.0-incubating-rc1-src.tar.gz
+acd2229c44e93e41372fd8b7ea0038f15fe4aaede5a3bcc5056f28a770543b82 *apache-brooklyn-0.7.0-incubating-rc1-src.zip
+
+The Nexus staging repository for the Maven artifacts is located at:
+https://repository.apache.org/content/repositories/orgapachebrooklyn-1004
+
+All release artifacts are signed with the following key:
+https://people.apache.org/keys/committer/richard.asc
+
+KEYS file available here:
+https://dist.apache.org/repos/dist/release/incubator/brooklyn/KEYS
+
+The artifacts were built from Git commit ID
+24a23c5a4fd5967725930b8ceaed61dfbd225980
+https://git-wip-us.apache.org/repos/asf?p=incubator-brooklyn.git;a=commit;h=24a23c5a4fd5967725930b8ceaed61dfbd225980
+
+
+Please vote on releasing this package as Apache Brooklyn 0.7.0-incubating.
+
+The vote will be open for at least 72 hours.
+[ ] +1 Release this package as Apache Brooklyn 0.7.0-incubating
+[ ] +0 no opinion
+[ ] -1 Do not release this package because ...
+
+
+Thanks,
+[Release manager name]
+{% endhighlight %}
+
+Email out the vote result
+-------------------------
+
+This is a similar process to counting the votes on the dev@brooklyn list. You will need 3 IPMC members to issue a “+1
+binding” vote, and no IPMC “0 binding” or “-1 binding” votes. Once the voting period has elapsed and the required votes
+received, email out a vote result email. Again this should be a new email thread with the subject prefixed
+“[RESULT][VOTE]”.
+
+### Subject: [RESULT][VOTE] Release Apache Brooklyn 0.7.0-incubating [rc1]
+
+{% highlight text %}
+The vote for releasing Apache Brooklyn 0.7.0-incubating passed with 3 binding +1s, 0 non-binding +1s, and no 0 or -1.
+
+Vote thread link:
+https://mail-archives.apache.org/mod_mbox/incubator-general/201507.mbox/%3CCABQFKi1xMzduVruYXdA15BQkZGVaYnmOChSfUvMw3uWcHA1Beg%40mail.gmail.com%3E
+
+
+Binding +1s:
+Hadrian Zbarcea
+Justin Mclean
+Jean-Baptiste Onofré
+
+
+Thanks to everyone that tested our release and voted.
+
+We will shortly publish the release artifacts.
+
+
+Thanks,
+[Release manager name]
+{% endhighlight %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26bb45c1/docs/website/developers/committers/release-process/vote.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/committers/release-process/vote.md b/docs/website/developers/committers/release-process/vote.md
new file mode 100644
index 0000000..db8b305
--- /dev/null
+++ b/docs/website/developers/committers/release-process/vote.md
@@ -0,0 +1,129 @@
+---
+layout: website-normal
+title: Vote on dev@brooklyn
+navgroup: developers
+---
+
+Start the vote
+--------------
+
+Copy-paste the e-mail below, being sure to substitute:
+
+- version number
+- RC number
+- URLs containing version numbers
+- URL for your own PGP key
+- Checksums
+- URL for the Maven staging repository
+
+### Subject: [VOTE] Release Apache Brooklyn 0.7.0-incubating [rc1]
+
+{% highlight text %}
+This is to call for a vote for the release of Apache Brooklyn 0.7.0-incubating.
+
+This release comprises of a source code distribution, and a corresponding
+binary distribution, and Maven artifacts.
+
+The source and binary distributions, including signatures, digests, etc. can
+be found at:
+https://dist.apache.org/repos/dist/dev/incubator/brooklyn/apache-brooklyn-0.7.0-incubating-rc1
+
+The artifact SHA-256 checksums are as follows:
+c3b5c581f14b44aed786010ac7c8c2d899ea0ff511135330395a2ff2a30dd5cf *apache-brooklyn-0.7.0-incubating-rc1-bin.tar.gz
+cef49056ba6e5bf012746a72600b2cee8e2dfca1c39740c945c456eacd6b6fca *apache-brooklyn-0.7.0-incubating-rc1-bin.zip
+8069bfc54e7f811f6b57841167b35661518aa88cabcb070bf05aae2ff1167b5a *apache-brooklyn-0.7.0-incubating-rc1-src.tar.gz
+acd2229c44e93e41372fd8b7ea0038f15fe4aaede5a3bcc5056f28a770543b82 *apache-brooklyn-0.7.0-incubating-rc1-src.zip
+
+The Nexus staging repository for the Maven artifacts is located at:
+https://repository.apache.org/content/repositories/orgapachebrooklyn-1004
+
+All release artifacts are signed with the following key:
+https://people.apache.org/keys/committer/richard.asc
+
+KEYS file available here:
+https://dist.apache.org/repos/dist/release/incubator/brooklyn/KEYS
+
+The artifacts were built from Git commit ID
+24a23c5a4fd5967725930b8ceaed61dfbd225980
+https://git-wip-us.apache.org/repos/asf?p=incubator-brooklyn.git;a=commit;h=24a23c5a4fd5967725930b8ceaed61dfbd225980
+
+
+Please vote on releasing this package as Apache Brooklyn 0.7.0-incubating.
+
+The vote will be open for at least 72 hours.
+[ ] +1 Release this package as Apache Brooklyn 0.7.0-incubating
+[ ] +0 no opinion
+[ ] -1 Do not release this package because ...
+
+
+Thanks,
+[Release manager name]
+{% endhighlight %}
+
+
+Reply to vote
+-------------
+
+Here is an example checklist (thanks Andrew Phillips for your thoroughness on jclouds!)
+
+Checklist (all items optional, mark only those personally verified):
+
+- [ ] Checksums and PGP signatures are valid.
+- [ ] Expanded source archive matches contents of RC tag.
+- [ ] Expanded source archive builds and passes tests.
+- [ ] LICENSE is present and correct.
+- [ ] NOTICE is present and correct, including copyright date.
+- [ ] All files have license headers where appropriate.
+- [ ] All dependencies have compatible licenses.
+- [ ] No compiled archives bundled in source archive.
+- [ ] I follow this project's commits list.
+
+
+Count the vote results
+----------------------
+
+If the release email stated a deadline (normally 72 hours), then you should wait at least that long. If there are
+insufficient votes you may need to extend the deadline - as an informal aim, we should look to get 2/3rds of the PPMC
+and some mentors voting +1. If a release-critical issue is raised and confirmed, then you may end the vote early with a
+negative result.
+
+Votes from PPMC members are binding; votes from others are non-binding. In the case of non-binding negative votes,
+please consider these carefully even if you are not bound by them.
+
+If there are any negative or zero votes, consider these carefully. Aim to “convert” negative or zero votes into positive
+by addressing any concerns. A negative vote is not necessarily a veto[citation required], but it should be a clear
+warning sign to not proceed if somebody strongly believes that the release should not proceed as is.
+
+Finally, count up the +1s and separate into binding (PPMC) and non-binding.
+
+Email the vote result
+---------------------
+
+This is a new email thread with a different subject.
+
+### Subject: [RESULT][VOTE] Release Apache Brooklyn 0.7.0-incubating [rc1]
+
+{% highlight text %}
+The vote for releasing Apache Brooklyn 0.7.0-incubating passed with 5 binding +1s, 1 non-binding +1s, and no 0 or -1.
+
+Vote thread link:
+https://mail-archives.apache.org/mod_mbox/incubator-brooklyn-dev/201507.mbox/%3CCABQFKi1WapCMRUqQ93E7Qow5onKgL3nyG3HW9Cse7vo%2BtUChRQ%40mail.gmail.com%3E
+
+Binding +1s:
+Hadrian Zbarcea (IPMC)
+Richard Downer
+Sam Corbett
+Aled Sage
+Andrea Turli
+
+Non-binding +1s:
+Ciprian Ciubotariu
+
+Thanks to everyone that tested our release and voted.
+
+We will shortly begin a vote on the incubator-general list.
+
+
+Thanks,
+[Release manager name]
+{% endhighlight %}


[3/3] incubator-brooklyn git commit: This closes #775

Posted by al...@apache.org.
This closes #775


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/f2ba610a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/f2ba610a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/f2ba610a

Branch: refs/heads/master
Commit: f2ba610ae21bb0cfc3ca08daffb007be74e6aaa7
Parents: a7b3d8e 26bb45c
Author: Aled Sage <al...@gmail.com>
Authored: Tue Jul 28 16:46:20 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Tue Jul 28 16:46:20 2015 +0100

----------------------------------------------------------------------
 docs/_extra/release.md                          | 288 -------------------
 docs/website/developers/committers/index.md     |   1 +
 .../committers/release-process/announce.md      |  55 ++++
 .../release-process/environment-variables.md    |  21 ++
 .../committers/release-process/fix-release.md   |  10 +
 .../committers/release-process/index.md         |  30 ++
 .../release-process/make-release-artifacts.md   |  49 ++++
 .../committers/release-process/prerequisites.md | 115 ++++++++
 .../committers/release-process/publish-temp.md  |  38 +++
 .../committers/release-process/publish.md       | 129 +++++++++
 .../release-process/release-version.md          |  73 +++++
 .../release-process/verify-release-artifacts.md | 156 ++++++++++
 .../committers/release-process/vote-ipmc.md     |  99 +++++++
 .../committers/release-process/vote.md          | 129 +++++++++
 parent/pom.xml                                  |   2 +
 release/.gitignore                              |   1 +
 release/Gemfile                                 |   5 +
 release/Gemfile.lock                            |  38 +++
 release/README.md                               |  49 ++++
 release/Vagrantfile                             |  66 +++++
 release/change-version.sh                       |  70 +++++
 release/gpg-agent.conf                          |   2 +
 release/make-release-artifacts.sh               | 213 ++++++++++++++
 release/pr_report.rb                            |  12 +
 release/settings.xml                            |  29 ++
 usage/scripts/change-version.sh                 |  70 -----
 26 files changed, 1392 insertions(+), 358 deletions(-)
----------------------------------------------------------------------