This is an automated email from the ASF dual-hosted git repository.
mrutkowski 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 79084ef Continue to refine release manager instructions (#380)
79084ef is described below
commit 79084efe2b09712191c89da01ae48c2e660dae74
Author: Matt Rutkowski <[email protected]>
AuthorDate: Tue Mar 16 10:27:14 2021 -0500
Continue to refine release manager instructions (#380)
* Continue to refine release manager instructions
* Continue to refine release manager instructions
* Continue to refine release manager instructions
* Continue to refine release manager instructions
* Continue to refine release manager instructions
* Continue to refine release manager instructions
* Continue to refine release manager instructions
* Continue to refine release manager instructions
* Continue to refine release manager instructions
* Continue to refine release manager instructions
* Continue to refine release manager instructions
* Continue to refine release manager instructions
---
docs/release_instructions.md | 98 +++++++++++++++++++++++++++++++++----
docs/release_manager_setup.md | 2 +-
docs/tag_release.md | 109 ++++++++++++------------------------------
3 files changed, 119 insertions(+), 90 deletions(-)
diff --git a/docs/release_instructions.md b/docs/release_instructions.md
index 42f70e9..1bf994d 100644
--- a/docs/release_instructions.md
+++ b/docs/release_instructions.md
@@ -217,7 +217,7 @@ Use the [gen-release-vote.py](../tools/gen-release-vote.py)
script to create the
This script accepts a [mailer configuration
file](https://github.com/apache/openwhisk-release/blob/master/tools/mail-config-template.yaml)
which you can use to also send the vote email directly to the mailing list.
_You should dry run this command with `-n` to sanity check the vote notice
before it is sent._
-```
+```sh
./gen-release-vote.py ../release-configs/<MY_RELEASE_CONFIG>.json -mc
<MY_MAILER_CONFIG>.yaml
```
@@ -246,10 +246,15 @@ If this is not true (e.g., multiple parallel release
votes), then the upload mus
```
Assuming the expected set of files were added, commit them:
-```
+
+```sh
cd ../stagingArea/svn_release && svn commit -m "Apache OpenWhisk X.Y.Z
release of <Component Description>"
```
+You can verify your commit to the Apache OpenWhisk official release folder:
+
+- https://dist.apache.org/repos/dist/release/openwhisk/
+
Relatively soon after doing the svn commit, you should receive an email like
the one shown below from reporter.apache.org asking you to add release data to
its database information.
```text
@@ -270,23 +275,96 @@ and add your release data (version and date) to the
database.
Please follow the link and perform the update; this information is quite
useful for drafting our periodic reports to the ASF Board.
-### Tag GitHub repos
+### Tag GitHub repositories
-Each GitHub repository needs to be tagged. Unfortunately, the naming
conventions for tagging vary across the OpenWhisk project repositories and
therefore we have not yet attempted to automate this step.
+Each GitHub repository needs to be tagged.
+
+> **Note** Some naming conventions for tagging vary across the OpenWhisk
project repositories and therefore we have not yet attempted to automate this
step.
+
+For each released repository, the Release Manager should tag each released
project using the same hash values specified in the release configuration file
(i.e., `openwhisk-release/release-configs/<release config>.json`) and approved
by member email `[VOTE]`.
+
+Open a terminal, go the home directory of the OpenWhisk project to be released
and run the following commands:
+
+```sh
+git tag -s -a <tag> -m "OpenWhisk <project name> v<tag>" <commit hash>
+git push <remote_url_var> <tag>
+```
-For each released repository, the Release Manager should examine the existing
set of tags (`git tag`) and then add a new tag following the same convention
using the git commit hash from <MY_RELEASE_CONFIG>.json. After tagging a repo,
push the tag.
+- [*Optional*] It is good practice to sign release tags using your GPG key by
adding the `-s` flag which will use your system default key from your operating
system keychain.
+ - See [Signing tags using GPG keys](#signing-tags-using-gpg-keys) below.
+- Replace `<tag>` with the tag name for the release of the current project
(e.g., 1.1.0).
+- Update the commit message, `-m` to reflect the project name and version
which should match the release tag
+- Replace `<commit hash>` with the commit hash (ID) you designated for the
release of the current project. This can either be the full commit hash or the
first 8 letters of the hash (to assure unique lookup).
+- Replace `<remote_url_var>` to the remote repository label of the OpenWhisk
project which is typically set to `upstream` for a project Committer and maps
to the full GitHub URL (e.g., `[email protected]:apache/<project name>`)
+
+### Signing tags using GPG keys
+
+First [add your public GPG key to your GitHub
Settings](https://docs.github.com/en/github/authenticating-to-github/telling-git-about-your-signing-key)
and also [verify your key's associated `apache.org`
email](https://docs.github.com/en/github/setting-up-and-managing-your-github-user-account/adding-an-email-address-to-your-github-account).
Then add it to your repository's local `git` configuration:
+
+```sh
+gpg --list-secret-keys --keyid-format LONG
+git config user.signingkey <your GPG key ID>
+```
+
+Assure your repository's local `git` email is set to your `apache.org` email
which matches your GPG key:
+
+```sh
+git config user.email <Apache username>@apache.org
+```
+
+You can verify your configuration by examining your local repository's
`.git/config` file either manually or with:
+
+```sh
+git config --list
+```
+
+#### Deleting a tag
+
+If a mistake is made, you can delete the undesired tags and start over:
+
+```sh
+git tag -d <tag>
+```
+
+Run the following command to remove a remote tag:
+
+```sh
+git push --delete <remote_url_var> <tag>
+```
+
+or try:
+
+```sh
+git push <remote_url_var> :refs/tags/<tag>
+```
+
+where `<remote_url_var>` is typically set to `upstream` for a project
Committer.
+
+> You can attempt to use the force `-f` flag if a normal `push` fails
+
+#### Syncing release tags
+
+If your fork's tags do not match those in the Apache project repository, you
can sync them much like rebasing:
+
+```sh
+git fetch --tags upstream
+git push -f --tags origin master
+```
+
+where `upstream` is the remote label for the Apache project repo. and `origin`
is the remote label for your fork.
+
+### Automated build of tagged binary release artifacts
Many of the GitHub repositories are configured to build binary artifacts in
response to new tags being committed. Monitor the build process and ensure
that all expected artifacts are created for each tag you commit.
-There are some slightly outdated, but much more detailed comments on [release
tagging](tag_release.md) available if you need a reminder of the git commands
to use.
+There are some slightly dated, but much more detailed comments on [Verifying
release binaries](tag_release.md#verifying-release-binaries) available if you
need a reminder of the git commands to use.
### Create GitHub releases
After pushing the tags, you should go to the GitHub Releases for each released
project and "Draft a new release" using the tag you just pushed.
-Update the project's:
-
-- `CHANGELOG` or `RELEASENOTES` to include the release versions, description
and a list of all commits since the last release. Copy that information into
the release description.
+- If you have not already done so prior to voting on the release, update the
project's `CHANGELOG` or `RELEASENOTES` to include the release versions,
description and a list of all commits since the last release.
+- Copy that same information information into the release description in
GitHub.
### Dockerhub updates
@@ -296,7 +374,7 @@ If the components you released build docker images, then
you should build the do
Push the new images to the [openwhisk
dockerhub](https://hub.docker.com/u/openwhisk) using the whiskbot dockerhub id,
and update the `latest` tag to point to the new images.
-### Rippling changes for openwhisk-runtime-- releases
+### Rippling changes for `openwhisk-runtime-xxx` releases
If you are releasing a new version of an openwhisk runtime (e.g.,
`openwhisk-runtime-python`), then once the updated images are available on
[dockerhub](https://hub.docker.com/u/openwhisk) you should submit a PR to
openwhisk-deploy-kube to update the docker imageTags in that project's
`helm/openwhisk/runtimes.json`.
diff --git a/docs/release_manager_setup.md b/docs/release_manager_setup.md
index dea6c16..8256776 100644
--- a/docs/release_manager_setup.md
+++ b/docs/release_manager_setup.md
@@ -124,7 +124,7 @@ Append both your key's signature and ASCII-armored public
key to the KEYS file:
(gpg --list-sigs <your name> && gpg --armor --export <your name>) >> KEYS
```
-> *In recent releases of GnuPG, the- `gpg` and `gpg2` *commands utilize the
same code and should be viewed as equivalent in any legacy instructions.*
+> *In recent releases of GnuPG, the `gpg` and `gpg2` commands utilize the same
code and should be viewed as equivalent in any legacy instructions.*
#### PGPK Example
diff --git a/docs/tag_release.md b/docs/tag_release.md
index 306eaf4..4e720b5 100644
--- a/docs/tag_release.md
+++ b/docs/tag_release.md
@@ -17,66 +17,22 @@
#
-->
-# Tag the commit IDs in the Github repository for the project
-
-All the hash values are available in the configuration file config.json for
each OpenWhisk project. We need to tag them
-with the name of the release, e.g: \<version\>-\<pre_release_version\>. Since
different OpenWhisk projects may have different
-naming conventions to tag their commits, this step is currently done in a
manual way, but it is very important for the
-release process.
-
-Open a terminal, go the home directory of the OpenWhisk project to be released
and run the following commands to tag a
-certain commit:
-```
-git tag <tag> <commit ID>
-git push <remote_url_var> <tag>
-```
-
-Replace the notation \<tag\> with the tag name for the release of the current
project. As a release manager, you should be
-familiar with the tag's naming convention for the module to be released. Take
the Nodejs runtime as example, you need to use
-the tag like \<node kind\>@\<version\>-\<pre_release_version\>. The notation
\<node kind\> should be 8 or 10 for a specific
-Nodejs version, but for OpenWhisk, you can directly use
\<version\>-\<pre_release_version\> as the tag. Please make sure
-you use the correct format of tags, when you release OpenWhisk modules. If you
are not sure how to name the tag, ask the
-OpenWhisk community.
-
-Replace the notation \<commit ID\> with the commit ID you designated for the
release of the current project. For \<commit ID\>,
-you can either choose the full commit ID or the first 7 letters.
-
-Replace the notation \<remote_url_var\> with the local variable linking to the
remote repository of the OpenWhisk project.
-Take OpenWhisk module as an example, we usually link the variable "origin" to
the fork we are working on, and the
-variable "upstream" to the remote repository of official OpenWhisk project. To
push a tag, we run "git push remote \<tag\>".
-
-To add a variable, you can run the following command as an example:
-```
-git remote add <remote_url_var> <full_remote_url>
-```
-
-To change an existing variable, you can run the following command as an
example:
-```
-git remote set-url <remote_url_var> <full_remote_url>
-```
-
-If you are releasing OpenWhisk, the \<full_remote_url\> will be
"[email protected]:apache/openwhisk.git" or
-"https://github.com/apache/openwhisk.git".
-
-In case of making mistakes, you may need to remove tags. You can run the
following command to remove a local tag:
-```
-git tag -d <tag>
-```
-
-Run the following command to remove a remote tag:
-```
-git push --delete <remote_url_var> <tag>
-```
-
-### Be aware of Travis builds that failed for tags
-
-After you push a tag to a Github repository for OpenWhisk project, it will
kick off a Travis build job, which probably will
-push the built docker images for that project into [Docker
Hub](https://hub.docker.com/u/openwhisk/). If the Travis job fails,
-we will fail to push the docker images, which lead to image inconsistency for
our release. When you push a release tag into
-each OpenWhisk project, don't forget to verify whether the Travis build
succeed or not.
-
-If the Travis job succeeds, you are all set for this step; if the Travis job
fails, you need to find out the reason,
-why it has failed. Empirically, it fails due to that you pushed a tag, not
compliant with naming convention for that project.
+## Verifying release binaries
+
+### Verify Travis builds succeed after tagging
+
+After you push a tag to a Github repository for OpenWhisk project, it will
kick off a Travis build job, which probably will push the built docker images
for that project into [Docker Hub](https://hub.docker.com/u/openwhisk/).
+
+> **Important!** Don't forget to verify whether the Travis build succeed or
not.
+
+- **If the Travis job fails**, we will fail to push the docker images, which
lead to image inconsistency for our release.
+
+ You need to find out the reason, why it has failed. Empirically, it fails
due to that you pushed a tag, not compliant with naming convention for that
project.
+
+- **If the Travis job succeeds**, you are all set for this step.
+
+#### Example: Runtime Go
+
Let's take the Go runtime as an example, if you name the tag after
"[email protected]", the Travis build will fail,
like the error result
[here](https://travis-ci.org/apache/openwhisk-runtime-go/builds/532326848). The
correct tag for Go runtime in this case is like "[email protected]",
and the successful
build is located
[here](https://travis-ci.org/apache/openwhisk-runtime-go/builds/533325334).
@@ -85,29 +41,24 @@ Another reason that the Travis build fails can be there is
really a bug with the
the tag you have pushed in the Github repository, but log this issue as well.
One way to compensate is to run the "docker push"
manually on your local machine to upload the image into Docker Hub. Here are
the steps you need to follow for this situation:
-1. Visit the private SVN repository to access the credentials for Docker Hub
+1. Visit the private SVN repository to access the credentials for Docker Hub.
If you are a PMC member, your credentials with Apache should give you the
access to the [private SVN
repository](https://svn.apache.org/repos/private/pmc/openwhisk/accounts).
-After you login with your credentials, open the file called dockerhub.txt, and
you will see the username and password to
-push your local docker images. DON'T misuse it.
+After you login with your credentials, open the file called `dockerhub.txt`,
and you will see the username and password to push your local docker images.
**DON'T misuse it.**
+
+1. On your local machine, run the command as below to login the Docker Hub:
-2. On your local machine, run the command as below to login the Docker Hub:
+ ```sh
+ docker login --username <openwhisk_username>
+ ```
-```shell
-docker login --username <openwhisk_username>
-```
+ The argument \<openwhisk_username\> is the username you retrieve in the
file dockerhub.txt. This command asks you to enter the password, we can get in
the file dockerhub.txt as well.
-The argument \<openwhisk_username\> is the username you retrieve in the file
dockerhub.txt. This command asks you to enter
-the password, we can get in the file dockerhub.txt as well.
+1. Build the docker image locally with correct version number and push it into
the Docker hub. You need to go to the home directory of the specific OpenWhisk
project, and run the following command:
-3. Build the docker image locally with correct version number and push it into
the Docker hub. You need to
-go to the home directory of the specific OpenWhisk project, and run the
following command:
+ ```sh
+ ./gradlew :core:<runtime_kind>:distDocker -PdockerRegistry=docker.io
-PdockerImagePrefix=openwhisk -PdockerImageTag=<tag>
+ ```
-```shell
-./gradlew :core:<runtime_kind>:distDocker -PdockerRegistry=docker.io
-PdockerImagePrefix=openwhisk -PdockerImageTag=<tag>
-```
+ The argument \<runtime_kind\> is the folder name for each version of the
runtime. You can find the name by checking what are under the folder core. For
example, your want to find the runtime kind for the runtime Ruby, there are
`ruby2.5Action` and `ruby2.6ActionLoop` under the [core
folder](https://github.com/apache/openwhisk-runtime-ruby/tree/master/core).
-The argument \<runtime_kind\> is the folder name for each version of the
runtime. You can find the name by checking what
-are under the folder core. For example, your want to find the runtime kind for
the runtime Ruby, there are ruby2.5Action
-and ruby2.6ActionLoop under the [core
folder](https://github.com/apache/openwhisk-runtime-ruby/tree/master/core). The
candidates
-for \<runtime_kind\> will be ruby2.5Action or ruby2.6ActionLoop. The argument
\<tag\> is usually \<version\>-\<pre_release_version\>,
-the real full version we specify for each release.
+ The candidates for \<runtime_kind\> will be `ruby2.5Action` or
`ruby2.6ActionLoop`. The argument \<tag\> is usually
\<version\>-\<pre_release_version\>, the real full version we specify for each
release.