This is an automated email from the ASF dual-hosted git repository.
dgrove pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwhisk-release.git
The following commit(s) were added to refs/heads/master by this push:
new bf6773b Progress on rewrite of Release Manager docs (#299)
bf6773b is described below
commit bf6773baddc1e61e068fa7a4219e273368819cae
Author: David Grove <[email protected]>
AuthorDate: Thu Sep 12 13:40:28 2019 -0400
Progress on rewrite of Release Manager docs (#299)
Extensive rewrite of docs and scripts through voting stage.
---
README.md | 125 +++++++----
docs/general_spec.md | 186 ----------------
docs/package_artifacts.md | 53 -----
docs/pick_up_source_code.md | 86 --------
docs/prepare_release.md | 26 ---
docs/{sign_artifacts.md => rcverify.md} | 17 +-
docs/release_instructions.md | 237 +++++++++++----------
docs/release_manager_setup.md | 13 +-
docs/upload_public_key.md | 39 ----
release-configs/apigateway-0.11.0.config | 15 ++
...{verify_local_artifacts.sh => build_release.sh} | 15 +-
tools/checkout_svn.sh | 2 +-
tools/config.json | 15 --
tools/config_template.json | 22 ++
tools/{load_config.sh => define_vars.sh} | 20 --
tools/download_source_code.sh | 7 +-
tools/load_config.sh | 5 +-
tools/{upload_artifacts.sh => local_verify.sh} | 25 +--
tools/package_binaries.sh | 38 ----
tools/package_source_code.sh | 10 +-
tools/rcverify.sh | 10 +-
tools/sign_artifacts.sh | 12 +-
...fy_remote_artifacts.sh => upload_to_staging.sh} | 31 ++-
tools/verify_source_code.sh | 39 ----
24 files changed, 310 insertions(+), 738 deletions(-)
diff --git a/README.md b/README.md
index ec1945e..177d971 100644
--- a/README.md
+++ b/README.md
@@ -46,7 +46,7 @@ Please follow the process described in the [Detailed
Instructions for Release Ma
## Publishing Release Candidates and Releases
-Release candidates of Apache OpenWhisk components are published to the
[release candidate staging
area](https://dist.apache.org/repos/dist/dev/openwhisk) during the voting
process. ** These release candidates are not Apache Releases and are not
intended for end users. **
+Release candidates of Apache OpenWhisk components are published to the
[release candidate staging
area](https://dist.apache.org/repos/dist/dev/openwhisk) during the voting
process. *These release candidates are not Apache Releases and are not intended
for end users.*
If a release candidate is formally approved for release, it will be removed
from the staging area, distributed from the [release distribution
server](https://dist.apache.org/repos/dist/release/openwhisk/), and listed on
the [Apache OpenWhisk Downloads
page](https://http://openwhisk.apache.org/downloads).
@@ -61,7 +61,6 @@ The following table can be used by Release Managers to check
the status of all p
<th width="120">Travis <sub>(Master)</sub></th>
<th width="110">ASF LICENSE</th>
<th width="120">ASF NOTICE</th>
-<th width="120">Slack Channel</th>
<th><a
href="https://github.com/apache/openwhisk-utilities/tree/master/scancode">ScanCode</a></th>
</tr>
<tr align="left">
@@ -69,31 +68,27 @@ The following table can be used by Release Managers to
check the status of all p
<td><a href="https://travis-ci.org/apache/openwhisk/branches"><img
src="https://travis-ci.org/apache/openwhisk.svg?branch=master" alt=""
/></a></td>
<td><a href="https://github.com/apache/openwhisk/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
<td><a
href="https://github.com/apache/openwhisk/blob/master/NOTICE.txt">NOTICE</a></td>
-<td><a href="https://openwhisk-team.slack.com/messages/C3TPCAQG1/"><img
src="https://img.shields.io/badge/channel-Slack-800080.svg" alt="" /></a></td>
<td><a
href="https://github.com/apache/openwhisk/blob/master/tools/travis/scan.sh">scan.sh</a></td>
</tr>
<tr align="left">
-<td><a
href="https://github.com/apache/openwhisk-catalog">openwhisk-catalog</a></td>
-<td><a href="https://travis-ci.org/apache/openwhisk-catalog/branches"><img
src="https://travis-ci.org/apache/openwhisk-catalog.svg?branch=master" alt=""
/></a></td>
-<td><a
href="https://github.com/apache/openwhisk-catalog/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
-<td><a
href="https://github.com/apache/openwhisk-catalog/blob/master/NOTICE.txt">NOTICE</a></td>
-<td> </td>
-<td><a
href="https://github.com/apache/openwhisk-catalog/blob/master/tools/travis/build.sh">build.sh</a></td>
-</tr>
-<tr align="left">
<td><a
href="https://github.com/apache/openwhisk-apigateway">openwhisk-apigateway</a></td>
<td><a href="https://travis-ci.org/apache/openwhisk-apigateway/branches"><img
src="https://travis-ci.org/apache/openwhisk-apigateway.svg?branch=master"
alt="" /></a></td>
<td><a
href="https://github.com/apache/openwhisk-apigateway/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
<td><a
href="https://github.com/apache/openwhisk-apigateway/blob/master/NOTICE.txt">NOTICE</a></td>
-<td><a href="https://openwhisk-team.slack.com/messages/C3TP33Y2U/"><img
src="https://img.shields.io/badge/channel-Slack-800080.svg" alt="" /></a></td>
<td><a
href="https://github.com/apache/openwhisk-apigateway/blob/master/tools/travis/build.sh">build.sh</a></td>
</tr>
<tr align="left">
+<td><a
href="https://github.com/apache/openwhisk-catalog">openwhisk-catalog</a></td>
+<td><a href="https://travis-ci.org/apache/openwhisk-catalog/branches"><img
src="https://travis-ci.org/apache/openwhisk-catalog.svg?branch=master" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-catalog/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-catalog/blob/master/NOTICE.txt">NOTICE</a></td>
+<td><a
href="https://github.com/apache/openwhisk-catalog/blob/master/tools/travis/build.sh">build.sh</a></td>
+</tr>
+<tr align="left">
<td><a href="https://github.com/apache/openwhisk-cli">openwhisk-cli</a></td>
<td><a href="https://travis-ci.org/apache/openwhisk-cli/branches"><img
src="https://travis-ci.org/apache/openwhisk-cli.svg?branch=master" alt=""
/></a></td>
<td><a
href="https://github.com/apache/openwhisk-cli/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
<td><a
href="https://github.com/apache/openwhisk-cli/blob/master/NOTICE.txt">NOTICE</a></td>
-<td> </td>
<td><a
href="https://github.com/apache/openwhisk-cli/blob/master/tools/travis/test_openwhisk.sh">test_openwhisk.sh</a></td>
</tr>
<tr align="left">
@@ -101,81 +96,120 @@ The following table can be used by Release Managers to
check the status of all p
<td><a href="https://travis-ci.org/apache/openwhisk-client-go/branches"><img
src="https://travis-ci.org/apache/openwhisk-client-go.svg?branch=master" alt=""
/></a></td>
<td><a
href="https://github.com/apache/openwhisk-client-go/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
<td><a
href="https://github.com/apache/openwhisk-client-go/blob/master/NOTICE.txt">NOTICE</a></td>
-<td> </td>
<td><a
href="https://github.com/apache/openwhisk-client-go/blob/master/tools/travis/build.sh">build.sh</a></td>
</tr>
<tr align="left">
+<td><a
href="https://github.com/apache/openwhisk-client-js">openwhisk-client-js</a></td>
+<td><a href="https://travis-ci.org/apache/openwhisk-client-js/branches"><img
src="https://travis-ci.org/apache/openwhisk-client-js.svg?branch=master" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-client-js/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-client-js/blob/master/NOTICE.txt">NOTICE</a></td>
+<td><a
href="https://github.com/apache/openwhisk-client-js/blob/master/tools/travis/scancode.sh">scancode.sh</a></td>
+</tr>
+<tr align="left">
<td><a
href="https://github.com/apache/openwhisk-composer">openwhisk-composer</a></td>
<td><a href="https://travis-ci.org/apache/openwhisk-composer/branches"><img
src="https://travis-ci.org/apache/openwhisk-composer.svg?branch=master" alt=""
/></a></td>
<td><a
href="https://github.com/apache/openwhisk-composer/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
<td><a
href="https://github.com/apache/openwhisk-composer/blob/master/NOTICE.txt">NOTICE</a></td>
-<td><a href="https://openwhisk-team.slack.com/messages/C7DJNS37W/"><img
src="https://img.shields.io/badge/channel-Slack-800080.svg" alt="" /></a></td>
<td><a
href="https://github.com/apache/openwhisk-composer/blob/master/travis/scancode.sh">scancode.sh</a></td>
</tr>
<tr align="left">
-<td><a
href="https://github.com/apache/openwhisk-wskdeploy">openwhisk-wskdeploy</a></td>
-<td><a href="https://travis-ci.org/apache/openwhisk-wskdeploy/branches"><img
src="https://travis-ci.org/apache/openwhisk-wskdeploy.svg?branch=master" alt=""
/></a></td>
-<td><a
href="https://github.com/apache/openwhisk-wskdeploy/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
-<td><a
href="https://github.com/apache/openwhisk-wskdeploy/blob/master/NOTICE.txt">NOTICE</a></td>
-<td><a href="https://openwhisk-team.slack.com/messages/C3TP33Y2U/"><img
src="https://img.shields.io/badge/channel-Slack-800080.svg" alt="" /></a></td>
-<td><a
href="https://github.com/apache/openwhisk-wskdeploy/blob/master/tools/travis/scancode.sh">scancode.sh</a></td>
-</tr>
-<tr align="left">
<td><a
href="https://github.com/apache/openwhisk-deploy-kube">openwhisk-deploy-kube</a></td>
<td><a href="https://travis-ci.org/apache/openwhisk-deploy-kube/branches"><img
src="https://travis-ci.org/apache/openwhisk-deploy-kube.svg?branch=master"
alt="" /></a></td>
<td><a
href="https://github.com/apache/openwhisk-deploy-kube/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
<td><a
href="https://github.com/apache/openwhisk-deploy-kube/blob/master/NOTICE.txt">NOTICE</a></td>
-<td><a href="https://openwhisk-team.slack.com/messages/C4J3R7JFL/"><img
src="https://img.shields.io/badge/channel-Slack-800080.svg" alt="" /></a></td>
<td><a
href="https://github.com/apache/openwhisk-deploy-kube/blob/master/tools/travis/scancode.sh">scancode.sh</a></td>
</tr>
<tr align="left">
-<td><a
href="https://github.com/apache/openwhisk-runtime-nodejs">openwhisk-runtime-nodejs</a></td>
-<td><a
href="https://travis-ci.org/apache/openwhisk-runtime-nodejs/branches"><img
src="https://travis-ci.org/apache/openwhisk-runtime-nodejs.svg?branch=master"
alt="" /></a></td>
-<td><a
href="https://github.com/apache/openwhisk-runtime-nodejs/blob/master/LICENSE.txt"><img
src="https://camo.githubusercontent.com/3a4d3bc039085cffdfecbe3077ffe49c5fe23286/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4170616368652d2d322e302d626c75652e737667"
alt="" /></a></td>
-<td><a
href="https://github.com/apache/openwhisk-runtime-nodejs/blob/master/NOTICE.txt">NOTICE</a></td>
-<td> </td>
-<td><a
href="https://github.com/apache/openwhisk-runtime-nodejs/blob/master/tools/travis/build.sh">build.sh</a></td>
+<td><a
href="https://github.com/apache/openwhisk-package-alarms">openwhisk-package-alarms</a></td>
+<td><a
href="https://travis-ci.org/apache/openwhisk-package-alarms/branches"><img
src="https://travis-ci.org/apache/openwhisk-package-alarms.svg?branch=master"
alt="" /></a></td>
+<td><a
href="https://github.com/apache/openwhisk-package-alarms/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-package-alarms/blob/master/NOTICE.txt">NOTICE</a></td>
+<td><a
href="https://github.com/apache/openwhisk-package-alarms/blob/master/tools/travis/build.sh">build.sh</a></td>
</tr>
<tr align="left">
-<td><a href="https://github.com/apache/openwhisk-runtime-swift">
openwhisk-runtime-swift</a></td>
-<td align="left"><a
href="https://travis-ci.org/apache/openwhisk-runtime-swift/branches"><img
src="https://travis-ci.org/apache/openwhisk-runtime-swift.svg?branch=master"
alt="" /></a></td>
-<td><a
href="https://github.com/apache/openwhisk-runtime-swift/blob/master/LICENSE.txt"><img
src="https://camo.githubusercontent.com/3a4d3bc039085cffdfecbe3077ffe49c5fe23286/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4170616368652d2d322e302d626c75652e737667"
alt="" /></a></td>
-<td><a
href="https://github.com/apache/openwhisk-runtime-swift/blob/master/NOTICE.txt">NOTICE</a></td>
-<td> </td>
-<td><a
href="https://github.com/apache/openwhisk-runtime-swift/blob/master/tools/travis/build.sh">build.sh</a></td>
+<td><a
href="https://github.com/apache/openwhisk-package-cloudant">openwhisk-package-cloudant</a></td>
+<td><a
href="https://travis-ci.org/apache/openwhisk-package-cloudant/branches"><img
src="https://travis-ci.org/apache/openwhisk-package-cloudant.svg?branch=master"
alt="" /></a></td>
+<td><a
href="https://github.com/apache/openwhisk-package-cloudant/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-package-cloudant/blob/master/NOTICE.txt">NOTICE</a></td>
+<td><a
href="https://github.com/apache/openwhisk-package-cloudant/blob/master/tools/travis/build.sh">build.sh</a></td>
+</tr>
+<tr align="left">
+<td><a
href="https://github.com/apache/openwhisk-package-kafka">openwhisk-package-kafka</a></td>
+<td><a
href="https://travis-ci.org/apache/openwhisk-package-kafka/branches"><img
src="https://travis-ci.org/apache/openwhisk-package-kafka.svg?branch=master"
alt="" /></a></td>
+<td><a
href="https://github.com/apache/openwhisk-package-kafka/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-package-kafka/blob/master/NOTICE.txt">NOTICE</a></td>
+<td><a
href="https://github.com/apache/openwhisk-package-kafka/blob/master/tools/travis/build.sh">build.sh</a></td>
</tr>
<tr align="left">
<td><a
href="https://github.com/apache/openwhisk-runtime-docker">openwhisk-runtime-docker</a></td>
<td><a
href="https://travis-ci.org/apache/openwhisk-runtime-docker/branches"><img
src="https://travis-ci.org/apache/openwhisk-runtime-docker.svg?branch=master"
alt="" /></a></td>
-<td><a
href="https://github.com/apache/openwhisk-runtime-docker/blob/master/LICENSE.txt"><img
src="https://camo.githubusercontent.com/3a4d3bc039085cffdfecbe3077ffe49c5fe23286/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4170616368652d2d322e302d626c75652e737667"
alt="" /></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-docker/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
<td><a
href="https://github.com/apache/openwhisk-runtime-docker/blob/master/NOTICE.txt">NOTICE</a></td>
-<td> </td>
<td><a
href="https://github.com/apache/openwhisk-runtime-docker/blob/master/tools/travis/build.sh">build.sh</a></td>
</tr>
<tr align="left">
+<td><a
href="https://github.com/apache/openwhisk-runtime-dotnet">openwhisk-runtime-dotnet</a></td>
+<td><a
href="https://travis-ci.org/apache/openwhisk-runtime-dotnet/branches"><img
src="https://travis-ci.org/apache/openwhisk-runtime-dotnet.svg?branch=master"
alt="" /></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-dotnet/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-dotnet/blob/master/NOTICE.txt">NOTICE</a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-dotnet/blob/master/tools/travis/build.sh">build.sh</a></td>
+</tr>
+<tr align="left">
+<td><a
href="https://github.com/apache/openwhisk-runtime-go">openwhisk-runtime-go</a></td>
+<td><a href="https://travis-ci.org/apache/openwhisk-runtime-go/branches"><img
src="https://travis-ci.org/apache/openwhisk-runtime-go.svg?branch=master"
alt="" /></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-go/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-go/blob/master/NOTICE.txt">NOTICE</a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-go/blob/master/tools/travis/build.sh">build.sh</a></td>
+</tr>
+<tr align="left">
<td><a
href="https://github.com/apache/openwhisk-runtime-java">openwhisk-runtime-java</a></td>
<td><a
href="https://travis-ci.org/apache/openwhisk-runtime-java/branches"><img
src="https://travis-ci.org/apache/openwhisk-runtime-java.svg?branch=master"
alt="" /></a></td>
-<td><a
href="https://github.com/apache/openwhisk-runtime-java/blob/master/LICENSE.txt"><img
src="https://camo.githubusercontent.com/3a4d3bc039085cffdfecbe3077ffe49c5fe23286/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4170616368652d2d322e302d626c75652e737667"
alt="" /></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-java/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
<td><a
href="https://github.com/apache/openwhisk-runtime-java/blob/master/NOTICE.txt">NOTICE</a></td>
-<td> </td>
<td><a
href="https://github.com/apache/openwhisk-runtime-java/blob/master/tools/travis/build.sh">build.sh</a></td>
</tr>
<tr align="left">
+<td><a
href="https://github.com/apache/openwhisk-runtime-nodejs">openwhisk-runtime-nodejs</a></td>
+<td><a
href="https://travis-ci.org/apache/openwhisk-runtime-nodejs/branches"><img
src="https://travis-ci.org/apache/openwhisk-runtime-nodejs.svg?branch=master"
alt="" /></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-nodejs/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-nodejs/blob/master/NOTICE.txt">NOTICE</a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-nodejs/blob/master/tools/travis/build.sh">build.sh</a></td>
+</tr>
+<tr align="left">
<td><a
href="https://github.com/apache/openwhisk-runtime-php">openwhisk-runtime-php</a></td>
<td><a href="https://travis-ci.org/apache/openwhisk-runtime-php/branches"><img
src="https://travis-ci.org/apache/openwhisk-runtime-php.svg?branch=master"
alt="" /></a></td>
-<td><a
href="https://github.com/apache/openwhisk-runtime-php/blob/master/LICENSE.txt"><img
src="https://camo.githubusercontent.com/3a4d3bc039085cffdfecbe3077ffe49c5fe23286/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4170616368652d2d322e302d626c75652e737667"
alt="" /></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-php/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
<td><a
href="https://github.com/apache/openwhisk-runtime-php/blob/master/NOTICE.txt">NOTICE</a></td>
-<td> </td>
<td><a
href="https://github.com/apache/openwhisk-runtime-php/blob/master/tools/travis/build.sh">build.sh</a></td>
</tr>
<tr align="left">
<td><a
href="https://github.com/apache/openwhisk-runtime-python">openwhisk-runtime-python</a></td>
<td><a
href="https://travis-ci.org/apache/openwhisk-runtime-python/branches"><img
src="https://travis-ci.org/apache/openwhisk-runtime-python.svg?branch=master"
alt="" /></a></td>
-<td><a
href="https://github.com/apache/openwhisk-runtime-python/blob/master/LICENSE.txt"><img
src="https://camo.githubusercontent.com/3a4d3bc039085cffdfecbe3077ffe49c5fe23286/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4170616368652d2d322e302d626c75652e737667"
alt="" /></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-python/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
<td><a
href="https://github.com/apache/openwhisk-runtime-python/blob/master/NOTICE.txt">NOTICE</a></td>
-<td> </td>
<td><a
href="https://github.com/apache/openwhisk-runtime-python/blob/master/tools/travis/build.sh">build.sh</a></td>
</tr>
+<tr align="left">
+<td><a
href="https://github.com/apache/openwhisk-runtime-ruby">openwhisk-runtime-ruby</a></td>
+<td><a
href="https://travis-ci.org/apache/openwhisk-runtime-ruby/branches"><img
src="https://travis-ci.org/apache/openwhisk-runtime-ruby.svg?branch=master"
alt="" /></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-ruby/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-ruby/blob/master/NOTICE.txt">NOTICE</a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-ruby/blob/master/tools/travis/build.sh">build.sh</a></td>
+</tr>
+<tr align="left">
+<td><a href="https://github.com/apache/openwhisk-runtime-swift">
openwhisk-runtime-swift</a></td>
+<td align="left"><a
href="https://travis-ci.org/apache/openwhisk-runtime-swift/branches"><img
src="https://travis-ci.org/apache/openwhisk-runtime-swift.svg?branch=master"
alt="" /></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-swift/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-swift/blob/master/NOTICE.txt">NOTICE</a></td>
+<td><a
href="https://github.com/apache/openwhisk-runtime-swift/blob/master/tools/travis/build.sh">build.sh</a></td>
+</tr>
+<tr align="left">
+<td><a
href="https://github.com/apache/openwhisk-wskdeploy">openwhisk-wskdeploy</a></td>
+<td><a href="https://travis-ci.org/apache/openwhisk-wskdeploy/branches"><img
src="https://travis-ci.org/apache/openwhisk-wskdeploy.svg?branch=master" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-wskdeploy/blob/master/LICENSE.txt"><img
src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt=""
/></a></td>
+<td><a
href="https://github.com/apache/openwhisk-wskdeploy/blob/master/NOTICE.txt">NOTICE</a></td>
+<td><a
href="https://github.com/apache/openwhisk-wskdeploy/blob/master/tools/travis/scancode.sh">scancode.sh</a></td>
+</tr>
</tbody>
</table>
@@ -185,9 +219,8 @@ The following table can be used by Release Managers to
check the status of all p
- The ASF NOTICE column text links to the corresponding repository's NOTICE
file.
- The ScanCode column text is hyperlinked to the corresponding repository's
build file that executes the scancode utility.
- The ASF scan configuration for all repos. can be found here:
[ASF-Release.cfg](https://github.com/apache/openwhisk-utilities/blob/master/scancode/ASF-Release.cfg).
-- The Slack badge is hyperlinked to the corresponding repository's public
Slack channel (if one exists).
-- LICENSE and NOTICE file process and compliance tracking can be found here:
[license_compliance.md](docs/license_compliance.md)
# References
- [Apache Release Creation
Process](http://www.apache.org/dev/release-publishing.html)
- [Apache Release Policy](http://www.apache.org/legal/release-policy.html)
+- [Apache OpenWhisk Project License Header Policy](docs/license_compliance.md)
diff --git a/docs/general_spec.md b/docs/general_spec.md
deleted file mode 100644
index 75b33fe..0000000
--- a/docs/general_spec.md
+++ /dev/null
@@ -1,186 +0,0 @@
-<!--
-#
-# 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.
-#
--->
-
-# Release Process Specification
-
-## Goals and plans
-
-The purpose of this repository is to provide a one-stop entry tool to manage
the release process of OpenWhisk in an automated way. 1,000 people will
probably have 1,000 ideas about how to fulfill it, since we are living in such
an innovative world.
-
-We believe they are all the valid routes, directing to our final destination,
as long as they are compliant with the Apache release process. This
specification just gives us one proposal, which may not be perfect, but will be
proven to be capable of leading OpenWhisk team to the paradise, the release of
shipped, packaged, Apache-compliant, able-to-run OpenWhisk source code and
compiled artifacts.
-
-Long story short, Apache generally needs two type of packages to be publicly
available after the declaration of the release: _source code_ and the _compiled
artifacts_. We would like to divide the work into two major phases: release of
source code and release of compiled artifacts.
-
-## Release of OpenWhisk artifacts
-
-Please click on the work items listed as belows to access the detailed
information:
-- [1. Download the source
code](work_items.md#1-download-the-source-code-open-issue) ([open
issue](https://github.com/apache/openwhisk-release/issues/16))
-- [2. Verify the compliance of the source
code](work_items.md#2-verify-the-compliance-of-the-source-code-open-issue)
([open issue](https://github.com/apache/openwhisk-release/issues/17))
-- [3. Deploy OpenWhisk based on the source
code](work_items.md#3-deploy-openwhisk-based-on-the-source-code-open-issue)
([open issue](https://github.com/apache/openwhisk-release/issues/18))
-- [4. Test each OpenWhisk
component](work_items.md#4-test-each-openwhisk-component-open-issue) ([open
issue](https://github.com/apache/openwhisk-release/issues/19))
-- [5. Add NOTICE, LICENSE, and CHANGELOG to each OpenWhisk
project](work_items.md#5-add-notice-license-and-changelog-to-each-openwhisk-project-open-issue)
([open issue](https://github.com/apache/openwhisk-release/issues/13))
-- [6. Package the artifacts](work_items.md#6-package-the-artifacts-open-issue)
([open issue](https://github.com/apache/openwhisk-release/issues/20))
-- [7. Upload the artifacts to staging
repository](work_items.md#7-upload-the-artifacts-into-staging-repository-for-release-vote-open-issue)
([open issue](https://github.com/apache/openwhisk-release/issues/21))
- - After the above 7 steps, note will be sent out to the community for
vote. Before we reach enough votes, Step 1 to 7
- can be re-iterated to update the artifacts in staging repository.
-
-- [8. Release the artifacts](work_items.md#8-release-the-artifacts-open-issue)
([open issue](https://github.com/apache/openwhisk-release/issues/22))
-
-## Different phases of implementations
-
-We plan to implement the specification in three phases:
-- **Phase 1: release of source code packages**: the source code of each
OpenWhisk repositories is packaged into tar.gz
-file, and uploaded into the staging repository. This is the phase we are
currently working on.
-- **Phase 2: release of binary packages**: the binary of each OpenWhisk
repositories is packaged into tar.gz file, and uploaded into the staging
repository.
-- **Phase 3: release of Docker image packages**: the Docker images of each
OpenWhisk repositories are packaged into tar.gz files, if available, and
uploaded into the staging repository.
-
-## List of OpenWhisk repositories to be released
-
-We plan to release the following OpenWhisk repositories:
-- OpenWhisk core: [openwhisk](https://github.com/apache/openwhisk)
-- OpenWhisk runtimes:
- -
[openwhisk-runtime-nodejs](https://github.com/apache/openwhisk-runtime-nodejs)
- -
[openwhisk-runtime-swift](https://github.com/apache/openwhisk-runtime-swift)
- - [openwhisk-runtime-php](https://github.com/apache/openwhisk-runtime-php)
- -
[openwhisk-runtime-python](https://github.com/apache/openwhisk-runtime-python)
- -
[openwhisk-runtime-java](https://github.com/apache/openwhisk-runtime-java)
- -
[openwhisk-runtime-docker](https://github.com/apache/openwhisk-runtime-docker)
-- OpenWhisk catalog:
[openwhisk-catalog](https://github.com/apache/openwhisk-catalog)
-- OpenWhisk API gateway:
[openwhisk-apigateway](https://github.com/apache/openwhisk-apigateway)
-- OpenWhisk deployment support:
- - [openwhisk-deploy-kube](https://github.com/apache/openwhisk-deploy-kube)
-- OpenWhisk clients:
- - [openwhisk-client-go](https://github.com/apache/openwhisk-client-go)
- - [openwhisk-cli](https://github.com/apache/openwhisk-cli)
- - [openwhisk-wskdeploy](https://github.com/apache/openwhisk-wskdeploy)
-
-# Proposed implementation
-## How to automate the release process for OpenWhisk?
-
-Travis CI is proposed as the pipeline to walk through the download, verify,
build and publish processes.
-
-As we can predict, OpenWhisk is going to release continuously in the future,
so we propose to create directories in a
-hierarchical structure with configuration files inside to map different
releases and sub-releases of OpenWhisk. One major
-advantage of this plan is to provide the release manager a clear and
straightforward overview for the historic releases
-of OpenWhisk, which is convenient to navigate and manage. Once this repository
is checked-out, the footprint
-of each release's configuration files can be found on the master branch.
-
-OpenWhisk consists of dozens of projects, which means we need to manage a
series of hash values(or tags) for each OpenWhisk
-release or sub-release. We propose to use a JSON-format configuration file to
maintain all the information. Since Travis
-is used to run all the jobs, it will parse the configuration file, download
the source code, based on the hash values(or tags)
-saved for each repository.
-
-The following diagram shows the structure of the repository:
-```
-|--openwhisk-release--|
- |--releases--|
- |--current--| # the only directory to work with before proposing any
release or sub-release
- |--config.json--|
- |--NOTICE--|
- |--LICENSE--|
- |--CHANGELOG--|
- |--...--|
- |--version--| # example with no sub-release
- |--config.json--|
- |--NOTICE--|
- |--LICENSE--|
- |--CHANGELOG--|
- |--...--|
- |--1.0--| # example with sub-releases
- |--milestone-1--|
- |--config.json--|
- |--NOTICE--|
- |--LICENSE--|
- |--CHANGELOG--|
- |--...--|
- |--milestone-2--|
- |--config.json--|
- |--NOTICE--|
- |--LICENSE--|
- |--CHANGELOG--|
- |--...--|
- |--...--|
-```
-
-This OpenWhisk release project is a Github project, and it is targeting the
release managers of OpenWhisk as the users.
-We would like to keep the development process of this repository the same as
we contribute to any other Github project:
-Release manager creates a fork of this repository, clones the source code
locally, changes the code after switching to
-a new branch, and submits the change as a pull request to the master branch of
this repository.
-
-The directory called _releases_ is created to maintain the configurations for
all the releases. The directory called _current_
-under _releases_ is the only directory to work on, before release manager
proposing any release or sub-release. The release
-manager use _current_ as the working directory to try out the hash values or
tags to be picked from OpenWhisk repositories.
-When OpenWhisk is about to have a new release, a directory named after the
release name will be created, to host all the
-configuration files for this release. If there is a sub-release, a directory
named after the sub-release name will be
-created under the corresponding directory with the release name, to host all
the configuration files for this sub-release.
-
-## How does the release manager work on this repository to propose a OpenWhisk
release/candidate?
-
-Since the directory _current_ is the only place to work on before any release
or sub-release is determined, the release
-manager can add or change a certain OpenWhisk project's name, with a hash
value or a tag by editing the configuration
-file, change the NOTICE, LICENSE, CHANGELOG, or any other necessary release
document within this folder.
-
-The configuration files under the directory _current_ will help the release
manager find out a combo of OpenWhisk projects
-with hash values or tags as a qualified candidate to release. Each time a
change is submitted as a pull request to master
-branch, Travis build will be triggered to verify that combination of hash
values or tags mapping to different OpenWhisk
-projects. If the Travis build passes, the aggregation of OpenWhisk projects
works.
-
-Once the release manager feels confident in a certain the project set, a
release can be proposed. For example, the next release
-name of OpenWhisk is _version_, and there is no sub-release name. We can copy
all the files under _releases/current_ into
-the directory _releases/version_(create one if it is missing), and submit this
change as a PR to this master branch. When
-this PR is merged into master and becomes a valid commit, the release manager
can tag it with the name _version_, in order
-to kick off a Travis build to publish the packages into Apache/staging
repository.
-
-## TBD:
-**We can publish the packaged artifacts into staging repository before sending
out the note for the community to vote on.
-After we reach an agreement for this release, move the packaged artifacts from
the staging repository to the public
-Apache directory for release.** (Thinking in progress)
-
-## How do we make Travis builds select different configuration files as input,
based on different releases?
-
-There are three types of event-driven Travis builds for this repository, we
can take full advantage of.
-
-* **PR-based Travis build**: the Travis build triggered by a pull request.
Pull request is a change request, so we do not
-need this type of build to pack and publish the packages. This type of Travis
build pulls down the source based on the defined
-hash values of each repository of OpenWhisk projects, verify the code
compliance, deploy the OpenWhisk environment, and test
-the OpenWhisk environment. It always runs based on the configuration files
under **_releases/current_**.
-
-* **Push-based Travis build**: the Travis build triggered by a push into
master branch. A push event to the master is the
-affirmation of a pull request, this type of build will definitely do the same
thing as PR-based Travis build does, based on
-the configuration files under **_releases/current_**. However, it still does
not need to pack and publish the packages.
-
-* **Tag-based Travis build**: the Travis build triggered by git tag.
Adding/changing a git tag can kick off the Travis build,
-which will be used by the release manager to trigger a release for OpenWhisk.
This type of build needs to pack and publish the
-packages into the Apache directory/staging repository, in addition to what
PR-based Travis build or push-based Travis
-build has done. We propose to have a stringent naming convention for the git
tags. It must include the same release name
-as the OpenWhisk release name, and the sub-release name, so that this type of
Travis build can pick up and find the
-configuration files under **the directory named after the release name**.
-
-For example, if the major release of OpenWhisk is _1.0_, and the sub-release
is milestone-1, the release manager should
-create a directory named _1.0_ under _releases_, and a directory _milestone-1_
under _1.0_. After copy all the configuration
-files under _releases_/_current_ (because the release manager has used this
directory to develop a new groups of hashes or
-tags for the coming release) into _releases_/_1.0_/_milestone-1_, the release
manager submit a PR with the changes. When
-the PR is merged, a new commit in master branch is generated. The new tag
named _1.0_-_milestone-1_ needs to be created,
-to kick off the Travis build, which will run based on the configuration files
under _releases_/_1.0_/_milestone-1_.
-
-There are plenty of Travis built-in variables we can use to identify the type
of Travis build. We pick up different source
-code of OpenWhisk as the input to the Travis build pipeline, according to the
type.
-
-
-
diff --git a/docs/package_artifacts.md b/docs/package_artifacts.md
deleted file mode 100644
index 1361d43..0000000
--- a/docs/package_artifacts.md
+++ /dev/null
@@ -1,53 +0,0 @@
-<!--
-#
-# 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.
-#
--->
-
-# Package the artifacts
-
-## Verify the source code
-
-Before generating any release artifacts, it is recommended to verify the
source code by checking the license headers and
-the existence of LICENSE and NOTICE files under each repository. This step can
be done by running the following script
-under the directory _tools_:
-```
-$ ./verify_source_code.sh
-```
-This script will generate a RAT report called rat.txt under the directory
<local_release_dir>/stagingArea/sources/target. You can find the status of
license
-header in this RAT report. In addition, you can check the existence of LICENSE
and NOTICE from the terminal, after
-running this script.
-
-## Making the release artifacts
-
-The artifacts to be made in this step consists of the source code packages,
binary packages and docker image packages.
-As the deliverable of the [first
phase](general_spec.md#different-phases-of-implementations), we currently only
build the
-source code packages. Binary and docker image are on our future agenda.
-
-After downloading the source code, we can run the following script under
_tools_ to generate the artifacts for each OpenWhisk project:
-```
-$ ./package_source_code.sh
-```
-This script will create a source code package file of source code suffixed
with tar.gz for each project, under
<local_release_dir>/sources/openwhisk/apache-openwhisk-\<version\>.
-The key version is defined in _config.json_.
-
-## Adding or updating the documents
-
-We can run the following script under _tools_ to add or update the documents
for the current release:
-```
-$ ./package_doc.sh
-```
-This script will copy all the files under releases/<current version> into the
designated directory,
<local_release_dir>/sources/openwhisk/apache-openwhisk-\<version\>/doc/.
diff --git a/docs/pick_up_source_code.md b/docs/pick_up_source_code.md
deleted file mode 100644
index a8cdd06..0000000
--- a/docs/pick_up_source_code.md
+++ /dev/null
@@ -1,86 +0,0 @@
-<!--
-#
-# 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.
-#
--->
-
-# Picking up source code
-
-## Edit the configuration file
-
-The only file that a release manager needs to edit is the JSON-format
configuration file named _config.json_ under the
-folder _tools_. You can specify the the staging url, release url, the list of
projects to be release, the repository url,
-branch name, and hash value of the source code for each project, etc.
-
-Template of [_config.json_](../tools/config.json):
-
-```
-{
- "publish_stage": "false",
- "stage_url": "https://dist.apache.org/repos/dist/dev/openwhisk",
- "release_url": "https://dist.apache.org/repos/dist/release/openwhisk",
- "versioning": {
- "version": "",
- "pre_release_version": "rc1"
- },
- "RepoList": [
- "openwhisk",
- "openwhisk-wskdeploy",
- "openwhisk-cli"
- ],
- "openwhisk": {
- "hash": "a891e06",
- "repository": "https://github.com/apache/openwhisk.git",
- "branch": "master"
- },
- "openwhisk_wskdeploy": {
- "hash": "1425456",
- "repository": "https://github.com/apache/openwhisk-wskdeploy.git",
- "branch": "master"
- },
- "openwhisk_cli": {
- "hash": "1448d31",
- "repository": "https://github.com/apache/openwhisk-cli.git",
- "branch": "master"
- }
-}
-```
- - **publish_stage**: the field to specify whether the Travis build in master
will upload the new artifacts to the staging
- URL or not. If it is set to false, the Travis build in master will not
upload the artifacts. If it is set to true, the
- Travis build in master will upload the artifacts.
- - **stage_url**: the field to specify the staging url, where to upload the
artifacts.
- - **release_url**: the field to specify the Apache release directory url,
where to finally release the artifacts.
- - **versioning**: the key to define the release name, with both a version
and a pre-release version name.
- - **RepoList**: the key to define the list of OpenWhisk projects to be
released. Based on this key, we need to add other
- keys below with each of them matching each project name. For example, we
define three projects in _RepoList_, so we
- have three other keys below to match each project.
- - **<project_name>**: the key used to match one OpenWhisk project. If there
is any hyphen(-) sign in the project name, we need
- to convert it into underscore(_). Hash key defines the hash value,
repository defines the url of the project repository,
- and branch defines the branch name in the project repository. We can
precisely locate a version of the source code to
- pick up for the release.
-
-## Download the source code to a local directory
-
-Run the following script to download source code based on the configuration in
_config.json_:
-
-```
-$ ./download_source_code.sh
-```
-
-After this script is executed, a directory called _stagingArea_ will be
created under the home directory of openwhisk
-release tool, if it is not available. The directory _stagingArea_ will save
the output files, including the source code
-of all the OpenWhisk repositories, packages to be rleased, signature,
checksums, etc, when we run any bash script of this
-release tool.
diff --git a/docs/prepare_release.md b/docs/prepare_release.md
deleted file mode 100644
index 7966518..0000000
--- a/docs/prepare_release.md
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-#
-# 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.
-#
--->
-
-# Prepare OpenWhisk projects for a release
-
- 1. Make sure all unit and integration tests are passing in all the projects
to be released. Check the [project list](../README.md#project-status).
- 2. Make sure the license file LICENSE.txt and the notice file NOTICE.txt
exist in each project repository. The license
- file contains the Apache V2.0 license and the notice file includes the
dependencies.
- 3. Update the release notes. (It is still to be determined where to publish
the release notes)
- 4. Update the changelog file CHANGELOG.txt for each project, including the
new commits based on the previous release.
diff --git a/docs/sign_artifacts.md b/docs/rcverify.md
similarity index 53%
rename from docs/sign_artifacts.md
rename to docs/rcverify.md
index 0efcbb2..2a9b4e4 100644
--- a/docs/sign_artifacts.md
+++ b/docs/rcverify.md
@@ -17,18 +17,15 @@
#
-->
-# Sign the artifacts
+## Release verification tools
-Each package needs to be accompanied by cryptographic signatures according to
Apache release policy.
+The script [rcverify.sh](../tools/rcverify.sh) is available to automate the
process of verifying a release.
-## Sign the artifacts:
+The script will download the release candidate, verify signatures, notice, and
license. The tool assumes that are no executable files in the release and will
flag any executable that it finds. If the tool discovers an issue during
verification, it will try to emit useful information for you to further inspect
the findings. The release is left on your disk for you to further inspect and
you must delete the scratch space when finished.
-All the artifacts can be signed by running the following script under _tools_:
-
-```
-$ ./sign_artifacts.sh <SVN_USERNAME> <SVN_PASSWORD>
+Example of how to use `rcverify.sh`:
```
-
-If you have configured your local SVN with the username and the password, you
can run the above script without the parameters.
+rcverify.sh openwhisk-client-js 'OpenWhisk Client Js' 3.20.0 rc2
-This script generates a file of the SHA512 checksum suffixed with .sha512, and
a signature file suffixed with .asc for each package.
+TODO: put updated script output here
+```
diff --git a/docs/release_instructions.md b/docs/release_instructions.md
index 9a7f572..252e3be 100644
--- a/docs/release_instructions.md
+++ b/docs/release_instructions.md
@@ -19,146 +19,165 @@
# Instructions for Release Managers
-## Step-by-Step instructions for the Release Process
-
- 1. [Preparing for a release](prepare_release.md) - how to prepare OpenWhisk
projects for a release
- 3. [Picking up the source code](pick_up_source_code.md) - determine the
branch and hash value for each OpenWhisk project to release
- 4. [Making the release artifacts](package_artifacts.md)
- 5. [Signing the release artifacts](sign_artifacts.md)
- 7. [Publish the release artifacts to the staging
directory](push_stage_url.md)
- 8. Vote on the [email protected] list
- 9. If the vote fails - configure the file config.json and resume from step
3. If the vote passes, continue with step 10.
- 10. [Publish the release artifacts to Apache release
directory](publish_apache_directory.md)
- 11. [Tag the commit IDs in the Github repository for the
project](tag_release.md)
- 12. [Generate the release notes](generate_release_notes.md)
- 13. Announce the release
- 14. Cleanup the artifacts from the release process:
- a. Remove the rc files from staging.
- b. If there is a previous released version, remove it from Apache
release directory
- (it will automatically still be available via the Apache archive
server).
-
-## Key requirements for producing releases
-
-As a Release Manager, please know that most of these requirements are
addressed via the release process automation provided in this project; however,
some steps are manual. Regardless of automation, it is good to understand all
the key considerations and requirements that a release manager is ultimately
responsible for.
+## Background Information
+
+If you are acting as a Release Manager, you should be familiar with
+the Apache Software Foundation's (ASF)
+[Release Creation Process](http://www.apache.org/dev/release-publishing.html)
and
+[Release Policy](http://www.apache.org/legal/release-policy.html).
+The detailed instructions and scripts we provide for Release Managers
+are designed to implement the ASF's policies and procedures in the
+specific context of the OpenWhisk project. However, it is still
+essential that each Release Manager understands the rationale underlying
+the steps they are executing.
### Licensing requirements
-All released source code has to be compliant with Apache Licensing Policy, by
adding the LICENSE file, NOTICE file to each repository and the release
package, and adding Licensing headers to each source code file.
-- Please see [License Compliance](license_compliance.md) for detailed
information on Apache OpenWhisk project policies, rules and guidelines.
+All released source code has to be compliant with Apache Licensing
+Policy. In part this is done by adding the LICENSE file and NOTICE file
+to each git repository and by adding Licensing headers to each source code
+file. Please see [License Compliance](license_compliance.md) for
+detailed information on Apache OpenWhisk project policies, rules and
+guidelines.
### Artifact requirements
-Artifacts for project repository source code and any compiled binaries are
packaged separately with each artifact being signed cryptographically.
+Artifacts for project repository source code and any compiled binaries
+are packaged separately with each artifact being signed
+cryptographically.
-Source code needs to provide the installation script for users to deploy a
full OpenWhisk environment.
+### Release Approval
-### Release distribution requirements
+All Releases must be formally approved via a PMC vote on the dev list.
+A successful release vote must have a minimum of three positive binding
+votes and more positive than negative binding votes MUST be cast.
-These steps have been **automated** for the Release Manager.
+### Release distribution requirements
-All release artifacts must be uploaded to project’s designated subdirectory in
the Apache distribution channel (i.e.,
[https://dist.apache.org/repos/dist/](https://dist.apache.org/repos/dist/)).
+All release artifacts must be uploaded to project’s designated subdirectory in
the Apache distribution channel
([https://dist.apache.org/repos/dist/](https://dist.apache.org/repos/dist/)).
-Specifically, the Apache OpenWhisk project has paths to publish both candidate
(staged) releases:
--
[https://dist.apache.org/repos/dist/dev/openwhisk/](https://dist.apache.org/repos/dist/dev/openwhisk/)
+Specifically, the Apache OpenWhisk project has a subdirectory to publish both
candidate (staged) releases:
+[https://dist.apache.org/repos/dist/dev/openwhisk/](https://dist.apache.org/repos/dist/dev/openwhisk/)
+and approved releases:
+[https://dist.apache.org/repos/dist/release/openwhisk/](https://dist.apache.org/repos/dist/release/openwhisk/).
-and the approved release path:
--
[https://dist.apache.org/repos/dist/release/openwhisk/](https://dist.apache.org/repos/dist/release/openwhisk/).
+Release announcements should not directly refer to the main Apache dist server
for mirrored artifacts (the sources.tar.gz files). Instead they should refer to
the OpenWhisk project download page
[https://apache.openwhisk.org/downloads](https://openwhisk.apache.org/downloads)
which is configured to redirect download requests to Apache dist mirrors or
otherwise incorporate a mirroring enabled URL.
-### Release Approval
+# Step-by-Step Instructions for the Release Process
-These steps are **manual** and must be performed by the Release Manager.
- - Starting the Vote: The Release manager for Apache OpenWhisk sends a release
note to the OpenWhisk mailing for votes, and opens the mail for 72 hours.
Apache requires a minimum of three positive votes and more positive than
negative votes MUST be cast, in order to release.
+### Preparing to Make a Release
- - Wait for the Results
+Before creating release artifacts, the Release Manager should initiate a
community discussion to confirm that we are ready to release the component(s).
It is also good practice to do a quick check of the repositories to confirm
they are release-ready to reduce the odds of needing multiple release
candidates.
+ 1. Start a [DISCUSS] thread on the dev list proposing the release. Allow at
least 24 hours for feedback.
+ 2. Make sure all unit and integration tests are passing in the repositories
that are being released. Check the [project status
list](../README.md#project-status).
+ 3. If a component being released includes a changelog or release notes file,
make sure they are up-to-date.
-#### Starting the Vote
+### Defining the Release Contents
-Propose a vote on the dev list. Use the tools/gen-release-vote.py script to
create the body of the voting email.
+The contents of a release are defined by a JSON configuration file.
+To create one for your release, make a copy of
[config_template.json](../tools/config_template.json)
+and edit to provide the version information, list of repositories, and details
for each repository.
+After creating your config, commit it to
[../release-configs](../release-configs) to
+provide historical documentation of project releases.
-#### Wait for the Results
+```
+{
+ "versioning": {
+ "version": "X.Y.Z",
+ "pre_release_version": "rc1"
+ },
+ "RepoList": [
+ "openwhisk-repo-name-one",
+ "openwhisk-repo-name-two"
+ ],
+ "openwhisk_repo_name_one": {
+ "name": "Apache OpenWhisk Repo Name",
+ "hash": "<GIT COMMIT HASH>",
+ "repository": "https://github.com/apache/openwhisk-<REPO-NAME-ONE>.git",
+ "branch": "master"
+ },
+ "openwhisk_repo_name_two": {
+ "name": "Apache OpenWhisk Repo Two",
+ "hash": "<GIT COMMIT HASH>",
+ "repository": "https://github.com/apache/openwhisk-<REPO-NAME-TWO>.git",
+ "branch": "master"
+ }
+}
+```
+ - **versioning**: Defines the release version and the release candidate
number.
+ - **RepoList**: Defines the list of OpenWhisk repositories being released.
+ - For every repository in `RepoList`, we name-mangle it to convert `-` into
`_` and use the
+ mangled name as a key whose value is an object that defines
+ - name: User level name of the component
+ - hash: git commit hash being released
+ - repository: URL of the repository
+ - branch: git branch being released
+
+### Create Release Candidates
+
+From the [tools directory](../tools), execute the script
+[build_release.sh](../tools/build_release.sh)
+providing the config.json file as an argument.
+Using ../stagingArea as scratch space, this script will clone the
+source repositories, package them into compressed tarballs, and create
+the checksum and detached PGP signature files.
+```
+./build_release.sh ../release-configs/<MY_RELEASE_CONFIG>.json
+```
-From [Votes on Package Releases](http://www.apache.org/foundation/voting.html):
+Next, verify the release artifacts by running
[local_verify.sh](../tools/local_verify.sh). This
+script will run rcverify.sh against your local artifacts.
```
-Votes on whether a package is ready to be released follow a format
-similar to majority approval -- except that the decision is officially
-determined solely by whether at least three +1 votes were
-registered. Releases may not be vetoed. Generally the community will
-table the vote to release if anyone identifies serious problems, but
-in most cases the ultimate decision, once three or more positive votes
-have been garnered, lies with the individual serving as release
-manager. The specifics of the process may vary from project to
-project, but the 'minimum of three +1 votes' rule is universal.
+./local_verify.sh ../release-configs/<MY_RELEASE_CONFIG>.json
```
-The list of binding voters is available on the Project Team page.
+TODO: We should also run Apache Rat as part of local_verify.sh; for now it is
+a recommended best practice to run Apache Rat by hand on each of your .tar.gz
files.
-If the vote is successful, post the result to the dev list - for example:
+If the release candidates pass all checks, commit them to the staging svn:
+```
+./upload_to_staging.sh ../release-configs/<MY_RELEASE_CONFIG>.json
```
-To: "OpenWhisk Developers List" <[email protected]>
-Subject: [RESULT] [VOTE] Release Apache OpenWhisk {ABC} version {X.Y.Z}
-Hi,
+### Initiate a Release Vote
-The vote has passed with the following result:
+Initiate a release vote on the dev list.
+Use the [gen-release-vote.py](../tools/gen-release-vote.py)
+script to create the body of the voting email.
-+1 (binding): <<list of names>>
-+1 (non binding): <<list of names>>
-```
+### Report Vote Result
-Be sure to include all votes in the list and indicate which votes were
binding. Consider -1 votes very carefully. While there is technically no veto
on release votes, there may be reasons for people to vote -1. So sometimes it
may be better to cancel a release when someone, especially a member of the PMC,
votes -1.
+When the vote can be closed (at least 72 hours and minimum number of
+binding votes cast), the Release Manager will respond to the voting
+thread modifying the subject to start with `[RESULT][VOTE]...`
+announcing the result of the vote. If the vote has sufficient -1 votes
+cast, the Release Manager may declare that the vote has failed without
+waiting the full 72 hours.
-If the vote is unsuccessful, you need to fix the issues and restart the
process. Note that any changes to the artifacts under vote require a restart of
the process, no matter how trivial. When restarting a vote version numbers must
not be reused, since binaries might have already been copied around.
+If the vote is successful, the Release Manager proceeds with
+publishing the release and cleaning up as described below.
-#### Release verification tool
+It the vote is unsuccessful, correct whatever issues were raised and
+restart the process with new candidate releases. Update your
+`config.json` file by incrementing the `rc` number and changing git
+hashes.
-The script [rcverify.sh](../tools/rcverify.sh) is available to automate the
process of verifying a release.
-The script will download the release candidate, verify signatures,
discalaimer, notice, and license. The tool assumes that are no executable files
in the release and will flag any executable that it finds. If the tool
discovers an issue during verification, it will try to emit useful information
for you to further inspect the findings. The release is left on your disk for
you to further inspect and you must delete the scratch space when finished.
+### Publishing a Successful Release
-Example of how to use `rcverify.sh`:
-```
-rcverify.sh openwhisk-client-js 'OpenWhisk Client Js' 3.20.0 rc2
-```
+TODO: This portion of the documentation and scripting still needs to be
updated.
-Example output from `rcverify.sh`:
-```
-working in the following directory:
-/var/folders/8c/zvj0nsxx2rgc_km8nvf8k0c00000gn/T/tmp.S8okDNye
-fetching tarball and signatures from
https://dist.apache.org/repos/dist/dev/openwhisk/apache-openwhisk-3.20.0-rc2
-fetching openwhisk-client-js-3.20.0-sources.tar.gz
-fetching openwhisk-client-js-3.20.0-sources.tar.gz.asc
-fetching openwhisk-client-js-3.20.0-sources.tar.gz.sha512
-fetching release keys
-importing keys
-gpg: key 72AF0CC22C4CF320: "Vincent Hou (Release manager of OpenWhisk)
<[email protected]>" not changed
-gpg: key 22907064147F886E: "Dave Grove <[email protected]>" not changed
-gpg: key 44667BC927C86D51: "Rodric Rabbah <[email protected]>" not changed
-gpg: key B1457C3D7101CC78: "James Thomas <[email protected]>" not changed
-gpg: Total number processed: 4
-gpg: unchanged: 4
-unpacking tar ball
-cloning scancode
-Cloning into 'incubator-openwhisk-utilities'...
-remote: Enumerating objects: 55, done.
-remote: Counting objects: 100% (55/55), done.
-remote: Compressing objects: 100% (41/41), done.
-remote: Total 55 (delta 21), reused 29 (delta 11), pack-reused 0
-Unpacking objects: 100% (55/55), done.
-computing sha512 for openwhisk-client-js-3.20.0-sources.tar.gz
-SHA512: openwhisk-client-js-3.20.0-sources.tar.gz:
-5FEF999E 532BD0C1 6C8BC0A1 F5232C93 964A30CF F14B2D82 1C8A2E1D 1106339C
E2457918
- C9873B3B 26FB4711 4FBA6F1C 8C8A62A8 3D50592C F9617EA5 54827EBA
-validating sha512... passed
-verifying asc... passed (signed-by: James Thomas <[email protected]>)
-verifing notice... passed
-verifying absence of DISCLAIMER.txt passed
-verifying license... passed
-verifying sources have proper headers... passed
-scanning for executable files... passed
-scanning for non-text files... passed
-scanning for archives... passed
-scanning for packages... passed
-```
-
-### Create Release notes
+ 10. [Publish the release artifacts to Apache release
directory](publish_apache_directory.md)
+ You should receive an email from reporter.apache.org asking you to add
your version data
+ to its database shortly after you commit to the dist svn. Please follow
the link and
+ add the information (this is useful for generating board reports).
+ 11. [Tag the commit IDs in the Github repository for the
project](tag_release.md)
+ 12. [Generate the release notes](generate_release_notes.md)
+ 13. If appropriate, update dockerhub `latest` tags.
+ 14. If appropriate update deploy-kube and docker-compose tag info to pick up
new images.
+ 15. Submit a PR to update the downloads page.
-An example of the release note can be found at the following link: [example of
release
note](https://github.com/apache/cordova-coho/blob/master/docs/coho-release-process.md).
+ 20. Announce the release -- must wait until website PR is merged and Jenkins
publishes site.
+ 30. Cleanup the artifacts from the release process:
+ a. Remove the rc files from staging.
+ b. Remove the previous If there is a previous released version, remove
it from Apache release directory
+ (it will automatically still be available via the Apache archive
server).
diff --git a/docs/release_manager_setup.md b/docs/release_manager_setup.md
index 4f96050..b02ed02 100644
--- a/docs/release_manager_setup.md
+++ b/docs/release_manager_setup.md
@@ -48,9 +48,9 @@ avoid accidential commits of generated artifacts.
The Apache distribution servers are managed by commiting/removing
files from project-specific directory trees in an svn repository.
-You can run the script tools/clone-dist-svns.sh to create a local
-checkout of these repositories at the path expected by the rest of the
-scripts.
+You can run the script [tools/checkout_svn.sh](../tools/checkout_svn.sh)
+to create a local checkout of these repositories at the path expected
+by the rest of the scripts.
## Signing Keys
@@ -71,10 +71,11 @@ Currently ASF recommends using a 4096 bit RSA key to sign
releases.
### Publish your public key to the project KEYS file.
-Once you have your PGP key pair, append your public key to our KEYS
-file and commit it to svn.
+Once you have your PGP key pair, append your public key to our
+[KEYS file](https://dist.apache.org/repos/dist/release/openwhisk/KEYS)
+in your local svn clone and commit the change.
-** Our KEYS file is append only. Once a key has been used to sign a release it
cannot be removed from the project's KEYS file. **
+**Our KEYS file is append only. Once a key has been used to sign a release it
cannot be removed from the KEYS file.**
The commands to export your key (depending on your PGP client) can be found at
the very top of the KEYS file,
and are also replicated below:
diff --git a/docs/upload_public_key.md b/docs/upload_public_key.md
deleted file mode 100644
index eee92a5..0000000
--- a/docs/upload_public_key.md
+++ /dev/null
@@ -1,39 +0,0 @@
-<!--
-#
-# 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.
-#
--->
-
-# Upload the public PGP key
-
-The public PGP key file is named _KEYS_ available under the [release
directory](https://dist.apache.org/repos/dist/release/openwhisk/). If you
generate a new key to
-sign the artifacts, you need to update the file of public key in the release
directory for further use to verify the
-artifacts. Checkout the [release
directory](https://dist.apache.org/repos/dist/release/openwhisk/) via
subversion,
-modify the file KEYS by appending your local public key, and commit it back to
the release directory. Please refer to the
-[svn commands](http://svnbook.red-bean.com/en/1.7/svn.ref.html) to checkout,
and commit.
-
-You can export your public PGP key by running the following command:
-
-```
-$ pgp --export <key_id>
-```
-
-The parameter <key_id> can be either the key id or the email address you used
to generate the key. For detailed information
-on PGP keys, please visit [how to create and manage PGP
keys](https://support.symantec.com/en_US/article.HOWTO41935.html).
-
-## How to commit to the staging directory
-
-Under the home directory of openwhisk release tool, you can find the local SVN
directory openwhisk_release/
\ No newline at end of file
diff --git a/release-configs/apigateway-0.11.0.config
b/release-configs/apigateway-0.11.0.config
new file mode 100644
index 0000000..1617d1c
--- /dev/null
+++ b/release-configs/apigateway-0.11.0.config
@@ -0,0 +1,15 @@
+{
+ "versioning": {
+ "version": "0.11.0",
+ "pre_release_version": "rc1"
+ },
+ "RepoList": [
+ "openwhisk-apigateway"
+ ],
+ "openwhisk_apigateway": {
+ "name": "OpenWhisk API Gateway",
+ "hash": "b80ce4db0828f9cc4250688023214103199235c2",
+ "repository": "https://github.com/apache/openwhisk-apigateway.git",
+ "branch": "master"
+ }
+}
diff --git a/tools/verify_local_artifacts.sh b/tools/build_release.sh
similarity index 79%
rename from tools/verify_local_artifacts.sh
rename to tools/build_release.sh
index 6f5b38e..5353b1e 100755
--- a/tools/verify_local_artifacts.sh
+++ b/tools/build_release.sh
@@ -18,17 +18,8 @@
set -e
-echo "Verify the local artifacts with the KEYS"
-
-echo "THIS SCRIPT NEEDS TO BE UPDATED"
-
-exit 1
-
-
-
SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
-source "$SCRIPTDIR/load_config.sh" $1 $2 $3
-
-cd $OPENWHISK_SVN/$REMOTE_PATH
-import_key_verify_signature $STAGE_URL/KEYS
+"$SCRIPTDIR"/download_source_code.sh $@
+"$SCRIPTDIR"/package_source_code.sh $@
+"$SCRIPTDIR"/sign_artifacts.sh $@
diff --git a/tools/checkout_svn.sh b/tools/checkout_svn.sh
index 0ed24a9..fe3dae6 100755
--- a/tools/checkout_svn.sh
+++ b/tools/checkout_svn.sh
@@ -21,7 +21,7 @@ set -e
echo "Checkout staging and release SVN to the working directory."
SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
-source "$SCRIPTDIR/load_config.sh" $1 $2
+source "$SCRIPTDIR/define_vars.sh"
mkdir -p "$OPENWHISK_WORKING_AREA"
diff --git a/tools/config.json b/tools/config.json
deleted file mode 100644
index e43ea5f..0000000
--- a/tools/config.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "versioning": {
- "version": "X.Y.Z",
- "pre_release_version": "rc1"
- },
- "RepoList": [
- "openwhisk-repo-name"
- ],
- "openwhisk_repo_name": {
- "name": "Apache OpenWhisk Repo Name",
- "hash": "<GIT COMMIT HASH>",
- "repository": "https://github.com/apache/openwhisk-<REPO-NAME>.git",
- "branch": "master"
- }
-}
diff --git a/tools/config_template.json b/tools/config_template.json
new file mode 100644
index 0000000..556ee4f
--- /dev/null
+++ b/tools/config_template.json
@@ -0,0 +1,22 @@
+{
+ "versioning": {
+ "version": "X.Y.Z",
+ "pre_release_version": "rc1"
+ },
+ "RepoList": [
+ "openwhisk-repo-name-one",
+ "openwhisk-repo-name-two"
+ ],
+ "openwhisk_repo_name_one": {
+ "name": "Apache OpenWhisk Repo Name",
+ "hash": "<GIT COMMIT HASH>",
+ "repository": "https://github.com/apache/openwhisk-<REPO-NAME-TWO>.git",
+ "branch": "master"
+ },
+ "openwhisk_repo_name_two": {
+ "name": "Apache OpenWhisk Repo Two",
+ "hash": "<GIT COMMIT HASH>",
+ "repository": "https://github.com/apache/openwhisk-<REPO-NAME-ONE>.git",
+ "branch": "master"
+ }
+}
diff --git a/tools/load_config.sh b/tools/define_vars.sh
old mode 100755
new mode 100644
similarity index 68%
copy from tools/load_config.sh
copy to tools/define_vars.sh
index 97e06eb..4da6c55
--- a/tools/load_config.sh
+++ b/tools/define_vars.sh
@@ -17,7 +17,6 @@
#
SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
-
CURRENTDIR="$(cd $(dirname "$0")/ && pwd)"
PARENTDIR="$(dirname "$CURRENTDIR")"
@@ -30,22 +29,3 @@ STAGE_URL="https://dist.apache.org/repos/dist/dev/openwhisk"
STAGE_SVN_DIR="$OPENWHISK_WORKING_AREA/svn_staging"
RELEASE_URL="https://dist.apache.org/repos/dist/release/openwhisk"
RELEASE_SVN_DIR="$OPENWHISK_WORKING_AREA/svn_release"
-
-source "$SCRIPTDIR/util.sh"
-
-CONFIG=$(read_file $SCRIPTDIR/config.json)
-
-repos=$(echo $(json_by_key "$CONFIG" "RepoList") | sed 's/[][]//g')
-
-version_key="versioning"
-version_json=$(json_by_key "$CONFIG" ${version_key}.version)
-version=${5:-"$version_json"}
-pre_release_version=$(json_by_key "$CONFIG" ${version_key}.pre_release_version)
-full_version=$version_json
-
-if [ ! -z "$pre_release_version" ]; then
- pre_release_version_no_space="$(echo -e "${pre_release_version}" | tr -d
'[[:space:]]')"
- if [ ! -z "$pre_release_version_no_space" ]; then
- full_version=$full_version-$pre_release_version_no_space
- fi
-fi
diff --git a/tools/download_source_code.sh b/tools/download_source_code.sh
index c0f7d42..dd6491e 100755
--- a/tools/download_source_code.sh
+++ b/tools/download_source_code.sh
@@ -19,9 +19,9 @@
set -e
SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
-source "$SCRIPTDIR/load_config.sh"
+source "$SCRIPTDIR/load_config.sh" "$1"
-clone_depth=${1:-"100"}
+clone_depth=${2:-"100"}
function git_clone_repo() {
PROJECT_NAME=$1
@@ -31,11 +31,10 @@ function git_clone_repo() {
git clone --depth $clone_depth -b $BRANCH $REPO
$OPENWHISK_SOURCE_DIR/$PROJECT_NAME
cd $OPENWHISK_SOURCE_DIR/$PROJECT_NAME
git reset --hard $HASH
- #rm -rf .git
}
-rm -rf $OPENWHISK_SOURCE_DIR/*
mkdir -p $OPENWHISK_SOURCE_DIR
+rm -rf $OPENWHISK_SOURCE_DIR/*
for repo in $(echo $repos | sed "s/,/ /g")
do
diff --git a/tools/load_config.sh b/tools/load_config.sh
index 97e06eb..d024eb2 100755
--- a/tools/load_config.sh
+++ b/tools/load_config.sh
@@ -16,8 +16,9 @@
# limitations under the License.
#
-SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
+CONFIG_FILE=$1
+SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
CURRENTDIR="$(cd $(dirname "$0")/ && pwd)"
PARENTDIR="$(dirname "$CURRENTDIR")"
@@ -33,7 +34,7 @@ RELEASE_SVN_DIR="$OPENWHISK_WORKING_AREA/svn_release"
source "$SCRIPTDIR/util.sh"
-CONFIG=$(read_file $SCRIPTDIR/config.json)
+CONFIG=$(read_file $CONFIG_FILE)
repos=$(echo $(json_by_key "$CONFIG" "RepoList") | sed 's/[][]//g')
diff --git a/tools/upload_artifacts.sh b/tools/local_verify.sh
similarity index 68%
rename from tools/upload_artifacts.sh
rename to tools/local_verify.sh
index 3d31e0c..e7f2ae9 100755
--- a/tools/upload_artifacts.sh
+++ b/tools/local_verify.sh
@@ -18,20 +18,15 @@
set -e
-echo "Upload the artifacts."
-
-echo "THIS SCRIPT NEEDS TO BE UPDATED"
-
-exit 1
-
+echo "Checking the artifacts with rcverify.sh"
SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
-source "$SCRIPTDIR/load_config.sh" $1 $2
-
-cd $OPENWHISK_SVN/$REMOTE_PATH
-
-svn add --force *
-svn commit -m "Staging Apache OpenWhisk release ${full_version}."
-
-# Disconnect $REMOTE_PATH with the remote staging server.
-rm -rf .svn
+source "$SCRIPTDIR/load_config.sh" "$1"
+
+for repo in $(echo $repos | sed "s/,/ /g")
+do
+ repo_name=$(echo "$repo" | sed -e 's/^"//' -e 's/"$//')
+ NAME_KEY=${repo_name//-/_}.name
+ NAME=$(json_by_key "$CONFIG" $NAME_KEY)
+ LOCAL_DIR="$OPENWHISK_ARTIFACT_DIR" DL=0 "$SCRIPTDIR"/rcverify.sh
$repo_name "$NAME" $version $pre_release_version
+done
diff --git a/tools/package_binaries.sh b/tools/package_binaries.sh
deleted file mode 100755
index d7eac66..0000000
--- a/tools/package_binaries.sh
+++ /dev/null
@@ -1,38 +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
-
-echo "Package the binaries."
-
-SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
-source "$SCRIPTDIR/load_config.sh" $1 $2 $3
-
-for repo in $(echo $repos | sed "s/,/ /g")
-do
- repo_name=$(echo "$repo" | sed -e 's/^"//' -e 's/"$//')
- # Build the binaries
- BINARIES=${repo_name//-/_}.binaries
- PUBLISH_BINARIES=$(json_by_key "$CONFIG" $BINARIES)
- if [ "$PUBLISH_BINARIES" == "yes" ] ; then
- cd $OPENWHISK_SOURCE_DIR/$repo_name
- ./gradlew releaseBinaries -PpackageVersion=${version}
- # Copy all the binary artifacts into the directory
${CURRENT_VERSION_DIR}
- cp -r release/. ${CURRENT_VERSION_DIR}/
- fi
-done
diff --git a/tools/package_source_code.sh b/tools/package_source_code.sh
index 822b25f..9ebe6dc 100755
--- a/tools/package_source_code.sh
+++ b/tools/package_source_code.sh
@@ -21,15 +21,17 @@ set -e
echo "Package the artifacts."
SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
-source "$SCRIPTDIR/load_config.sh" $1 $2 $3
+source "$SCRIPTDIR/load_config.sh" $1
mkdir -p $OPENWHISK_ARTIFACT_DIR
+rm -rf $OPENWHISK_ARTIFACT_DIR/*
-# Clean up all the source code by excluding unnecessary files and folders
-# Remove all the hidden files and folder
-# Remove bin and build folders
mkdir -p $OPENWHISK_CLEANED_SOURCE_DIR
rm -rf $OPENWHISK_CLEANED_SOURCE_DIR/*
+
+# Clean up all the source code by excluding unnecessary files and folders
+# Remove hidden files and folder
+# Remove bin and build folders
rsync -rtp --exclude gradle/wrapper/gradle-\*.jar --exclude .bin --exclude
.jshintrc --exclude .pydevproject --exclude .rat-excludes --exclude .git\*
--exclude .travis.yml --exclude credentials.json.enc --exclude build --exclude
specification/archive --exclude specification/diagrams $OPENWHISK_SOURCE_DIR/.
$OPENWHISK_CLEANED_SOURCE_DIR
for repo in $(echo $repos | sed "s/,/ /g")
diff --git a/tools/rcverify.sh b/tools/rcverify.sh
index 3c4a5f2..c4355d8 100755
--- a/tools/rcverify.sh
+++ b/tools/rcverify.sh
@@ -41,6 +41,9 @@ RC=${4:-rc1}
# set to non-zero to download the artifacts to verify, this is the default
DL=${DL:-1}
+# set to local dir containing artifacts; only used if DL is 0
+# LOCAL_DIR=${LOCAL_DIR:-.}
+
# set to non-zero to import the release keys, this is the default
IMPORT=${IMPORT:-1}
@@ -68,7 +71,7 @@ echo working in the following directory:
echo "$(tput setaf 6)$DIR$(tput sgr0)"
if [ $DL -ne 0 ]; then
- SRC=$RC_DIST/apache-openwhisk-$V-$RC
+ SRC=$RC_DIST/$RC
echo fetching tarball and signatures from $SRC
echo fetching $TGZ
@@ -79,6 +82,11 @@ if [ $DL -ne 0 ]; then
echo fetching $TGZ.sha512
curl $SRC/$TGZ.sha512 -s -o "$DIR/$TGZ.sha512"
+else
+ echo copying from $LOCAL_DIR
+ cp "$LOCAL_DIR/$TGZ" "$DIR/$TGZ" || exit 1
+ cp "$LOCAL_DIR/$TGZ.asc" "$DIR/$TGZ.asc" || exit 1
+ cp "$LOCAL_DIR/$TGZ.sha512" "$DIR/$TGZ.sha512" || exit 1
fi
if [ $IMPORT -ne 0 ]; then
diff --git a/tools/sign_artifacts.sh b/tools/sign_artifacts.sh
index 693244b..93914c0 100755
--- a/tools/sign_artifacts.sh
+++ b/tools/sign_artifacts.sh
@@ -20,10 +20,8 @@ set -e
echo "Sign the artifacts with PGP."
-passphrase=${1:-"openwhisk"}
-
SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
-source "$SCRIPTDIR/load_config.sh"
+source "$SCRIPTDIR/load_config.sh" "$1"
# Sign all the artifacts with the PGP key.
export GPG_TTY=$(tty)
@@ -38,13 +36,7 @@ echo "Sign the artifacts with the private key."
for artifact in *.tar.gz *.zip *.tgz; do
if [ "${artifact}" != "*.tar.gz" ] && [ "${artifact}" != "*.zip" ] && [
"${artifact}" != "*.tgz" ] ; then
gpg --print-md SHA512 ${artifact} > ${artifact}.sha512
-
- if [ $sysOS == "Darwin" ];then
- # The option --passphrase-fd does not work on Mac.
- `gpg --yes --armor --output ${artifact}.asc --detach-sig
${artifact}`
- elif [ $sysOS == "Linux" ];then
- `echo $passphrase | gpg --passphrase-fd 0 --yes --armor --output
${artifact}.asc --detach-sig ${artifact}`
- fi
+ gpg --yes --armor --output ${artifact}.asc --detach-sig ${artifact}
fi
done
diff --git a/tools/verify_remote_artifacts.sh b/tools/upload_to_staging.sh
similarity index 64%
rename from tools/verify_remote_artifacts.sh
rename to tools/upload_to_staging.sh
index 109ea41..7536029 100755
--- a/tools/verify_remote_artifacts.sh
+++ b/tools/upload_to_staging.sh
@@ -18,26 +18,25 @@
set -e
-echo "Verify the remote artifacts with the KEYS"
-
-echo "THIS SCRIPT NEEDS TO BE UPDATED"
-
-exit 1
+echo "Upload release candidates to staging."
+SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
+source "$SCRIPTDIR/load_config.sh" $1
+cd "$STAGE_SVN_DIR"
-SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
-source "$SCRIPTDIR/load_config.sh" $1 $2 $3
+svn update
-rm -rf $OPENWHISK_SVN
-mkdir -p $OPENWHISK_SVN/$REMOTE_PATH
-cd $OPENWHISK_SVN
+if [ ! -d "$pre_release_version" ]; then
+ mkdir "$pre_release_version"
+ svn add --force "$pre_release_version"
+fi
-# Remove the local folder, because we are about to download the artifacts from
the staging folder.
-rm -rf $REMOTE_PATH
+cd "$pre_release_version"
-# Check out the artifacts.
-svn co $CURRENT_VERSION_URL $REMOTE_PATH
-cd $REMOTE_PATH
+for artifact in `ls "$OPENWHISK_ARTIFACT_DIR"`; do
+ mv "$OPENWHISK_ARTIFACT_DIR"/$artifact $artifact
+ svn add --force $artifact
+done
-import_key_verify_signature $STAGE_URL/KEYS
+svn commit -m "Staging Apache OpenWhisk release candidates from $1."
diff --git a/tools/verify_source_code.sh b/tools/verify_source_code.sh
deleted file mode 100755
index 09b30cb..0000000
--- a/tools/verify_source_code.sh
+++ /dev/null
@@ -1,39 +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.
-#
-
-echo "Generate the report regarding the source code headers."
-
-SCRIPTDIR="$(cd $(dirname "$0")/ && pwd)"
-source "$SCRIPTDIR/load_config.sh"
-PARENTDIR="$(dirname "$SCRIPTDIR")"
-
-# run Apache rat to check headers
-cd $OPENWHISK_SOURCE_DIR
-cp $SCRIPTDIR/lib/pom.xml ./
-# Comment out the rat check, since it has been applied in the release process
-mvn clean apache-rat:check
-
-echo "Check the existence of LICENSE and NOTICE."
-
-for repo in $(echo $repos | sed "s/,/ /g")
-do
- repo_name=$(echo "$repo" | sed -e 's/^"//' -e 's/"$//')
- project_name="$repo_name"
- echo "Check the repository $project_name"
- cd $OPENWHISK_SOURCE_DIR/$project_name && ls {LICENSE*,NOTICE*}
-done