docs(release): add some improvements from 1.0.0 release round (#12633)

This commit is contained in:
Ville Brofeldt 2021-01-21 17:52:48 +02:00 committed by GitHub
parent 734fb75219
commit df8bb3bb18
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 67 additions and 68 deletions

View File

@ -60,8 +60,8 @@ need to be done at every release.
## Setting up the release environment (do every time) ## Setting up the release environment (do every time)
As the vote process takes a minimum of 72h (community vote) + 72h (IPMC) vote, As the vote process takes a minimum of 72h, sometimes stretching over several weeks
often stretching over several weeks calendar time if votes don't pass, chances are of calendar time if votes don't pass, chances are
the same terminal session won't be used for crafting the release candidate and the the same terminal session won't be used for crafting the release candidate and the
final release. Therefore, it's a good idea to do the following every time you final release. Therefore, it's a good idea to do the following every time you
work on a new phase of the release process to make sure you aren't releasing work on a new phase of the release process to make sure you aren't releasing
@ -71,33 +71,33 @@ and execute the `set_release_env.sh` script with the relevant parameters:
Usage (BASH): Usage (BASH):
```bash ```bash
. set_release_env.sh <SUPERSET_RC_VERSION> <PGP_KEY_FULLNAME> . set_release_env.sh <SUPERSET_RC_VERSION> <PGP_KEY_FULLNAME>
``` ```
Usage (ZSH): Usage (ZSH):
```bash ```bash
source set_release_env.sh <SUPERSET_RC_VERSION> <PGP_KEY_FULLNAME> source set_release_env.sh <SUPERSET_RC_VERSION> <PGP_KEY_FULLNAME>
``` ```
Example: Example:
```bash ```bash
source set_release_env.sh 0.38.0rc1 myid@apache.org source set_release_env.sh 0.38.0rc1 myid@apache.org
``` ```
The script will output the exported variables. Here's example for 0.38.0rc1: The script will output the exported variables. Here's example for 0.38.0rc1:
``` ```
Set Release env variables Set Release env variables
SUPERSET_VERSION=0.38.0 SUPERSET_VERSION=0.38.0
SUPERSET_RC=1 SUPERSET_RC=1
SUPERSET_GITHUB_BRANCH=0.38 SUPERSET_GITHUB_BRANCH=0.38
SUPERSET_PGP_FULLNAME=myid@apache.org SUPERSET_PGP_FULLNAME=myid@apache.org
SUPERSET_VERSION_RC=0.38.0rc1 SUPERSET_VERSION_RC=0.38.0rc1
SUPERSET_RELEASE=apache-superset-0.38.0 SUPERSET_RELEASE=apache-superset-0.38.0
SUPERSET_RELEASE_RC=apache-superset-0.38.0rc1 SUPERSET_RELEASE_RC=apache-superset-0.38.0rc1
SUPERSET_RELEASE_TARBALL=apache-superset-0.38.0-source.tar.gz SUPERSET_RELEASE_TARBALL=apache-superset-0.38.0-source.tar.gz
SUPERSET_RELEASE_RC_TARBALL=apache-superset-0.38.0rc1-source.tar.gz SUPERSET_RELEASE_RC_TARBALL=apache-superset-0.38.0rc1-source.tar.gz
SUPERSET_TMP_ASF_SITE_PATH=/tmp/superset-site-0.38.0 SUPERSET_TMP_ASF_SITE_PATH=/tmp/superset-site-0.38.0
``` ```
## Crafting a source release ## Crafting a source release
@ -134,18 +134,18 @@ section for the new release.
Finally bump the version number on `superset-frontend/package.json` (replace with whichever version is being released excluding the RC version): Finally bump the version number on `superset-frontend/package.json` (replace with whichever version is being released excluding the RC version):
```json ```json
"version": "0.38.0" "version": "0.38.0"
``` ```
Commit the change with the version number, then git tag the version with the release candidate and push to the branch: Commit the change with the version number, then git tag the version with the release candidate and push to the branch:
``` ```
# add changed files and commit # add changed files and commit
git add ... git add ...
git commit ... git commit ...
# push new tag # push new tag
git tag ${SUPERSET_VERSION_RC} git tag ${SUPERSET_VERSION_RC}
git push upstream ${SUPERSET_VERSION_RC} git push upstream ${SUPERSET_VERSION_RC}
``` ```
## Preparing the release candidate ## Preparing the release candidate
@ -156,9 +156,9 @@ release on Superset's repo (MAJOR.MINOR branch), the following script will clone
the tag and create a signed source tarball from it: the tag and create a signed source tarball from it:
```bash ```bash
# make_tarball will use the previously set environment variables # make_tarball will use the previously set environment variables
# you can override by passing arguments: make_tarball.sh <SUPERSET_VERSION> <SUPERSET_VERSION_RC> "<PGP_KEY_FULLNAME>" # you can override by passing arguments: make_tarball.sh <SUPERSET_VERSION> <SUPERSET_VERSION_RC> "<PGP_KEY_FULLNAME>"
./make_tarball.sh ./make_tarball.sh
``` ```
Note that `make_tarball.sh`: Note that `make_tarball.sh`:
@ -172,10 +172,10 @@ This can be overriden by setting `SUPERSET_SVN_DEV_PATH` environment var to a di
To build and run the **local copy** of the recently created tarball: To build and run the **local copy** of the recently created tarball:
```bash ```bash
# Build and run a release candidate tarball # Build and run a release candidate tarball
./test_run_tarball.sh local ./test_run_tarball.sh local
# you should be able to access localhost:5001 on your browser # you should be able to access localhost:5001 on your browser
# login using admin/admin # login using admin/admin
``` ```
### Shipping to SVN ### Shipping to SVN
@ -183,19 +183,19 @@ To build and run the **local copy** of the recently created tarball:
Now let's ship this RC into svn's dev folder Now let's ship this RC into svn's dev folder
```bash ```bash
cd ~/svn/superset_dev/ cd ~/svn/superset_dev/
svn add ${SUPERSET_VERSION_RC} svn add ${SUPERSET_VERSION_RC}
svn commit -m "Release ${SUPERSET_VERSION_RC}" svn commit -m "Release ${SUPERSET_VERSION_RC}"
``` ```
### Build and test from SVN source tarball ### Build and test from SVN source tarball
To build and run the recently created tarball **from SVN**: To build and run the recently created tarball **from SVN**:
```bash ```bash
# Build and run a release candidate tarball # Build and run a release candidate tarball
./test_run_tarball.sh ./test_run_tarball.sh
# you should be able to access localhost:5001 on your browser # you should be able to access localhost:5001 on your browser
# login using admin/admin # login using admin/admin
``` ```
### Voting ### Voting
@ -206,17 +206,17 @@ https://lists.apache.org/thread.html/e60f080ebdda26896214f7d3d5be1ccadfab95d48fb
To easily send a voting request to Superset community, still on the `superset/RELEASING` directory: To easily send a voting request to Superset community, still on the `superset/RELEASING` directory:
```bash ```bash
# Note: use Superset's virtualenv # Note: use Superset's virtualenv
(venv)$ python send_email.py vote_pmc (venv)$ python send_email.py vote_pmc
``` ```
The script will interactively ask for extra information so it can authenticate on the Apache Email Relay. The script will interactively ask for extra information so it can authenticate on the Apache Email Relay.
The release version and release candidate number are fetched from the previously set environment variables. The release version and release candidate number are fetched from the previously set environment variables.
```bash ```
Sender email (ex: user@apache.org): your_apache_email@apache.org Sender email (ex: user@apache.org): your_apache_email@apache.org
Apache username: your_apache_user Apache username: your_apache_user
Apache password: your_apache_password Apache password: your_apache_password
``` ```
Once 3+ binding votes (by PMC members) have been cast and at Once 3+ binding votes (by PMC members) have been cast and at
@ -226,21 +226,21 @@ https://lists.apache.org/thread.html/50a6b134d66b86b237d5d7bc89df1b567246d125a71
To easily send the result email, still on the `superset/RELEASING` directory: To easily send the result email, still on the `superset/RELEASING` directory:
```bash ```bash
# Note: use Superset's virtualenv # Note: use Superset's virtualenv
(venv)$ python send_email.py result_pmc python send_email.py result_pmc
``` ```
The script will interactively ask for extra information needed to fill out the email template. Based on the The script will interactively ask for extra information needed to fill out the email template. Based on the
voting description, it will generate a passing, non passing or non conclusive email. voting description, it will generate a passing, non passing or non conclusive email.
here's an example: here's an example:
```bash ```
Sender email (ex: user@apache.org): your_apache_email@apache.org Sender email (ex: user@apache.org): your_apache_email@apache.org
Apache username: your_apache_user Apache username: your_apache_user
Apache password: your_apache_password Apache password: your_apache_password
A List of people with +1 binding vote (ex: Max,Grace,Krist): Daniel,Alan,Max,Grace A List of people with +1 binding vote (ex: Max,Grace,Krist): Daniel,Alan,Max,Grace
A List of people with +1 non binding vote (ex: Ville): Ville A List of people with +1 non binding vote (ex: Ville): Ville
A List of people with -1 vote (ex: John): A List of people with -1 vote (ex: John):
``` ```
Following the result thread, yet another [VOTE] thread should be Following the result thread, yet another [VOTE] thread should be
@ -251,25 +251,24 @@ https://www.apache.org/info/verification.html
## Publishing a successful release ## Publishing a successful release
Upon a successful vote (community AND IPMC), you'll have to copy the folder Upon a successful vote, you'll have to copy the folder into the non-"dev/" folder.
into the non-"dev/" folder.
```bash ```bash
cp -r ~/svn/superset_dev/${SUPERSET_VERSION_RC}/ ~/svn/superset/${SUPERSET_VERSION}/ cp -r ~/svn/superset_dev/${SUPERSET_VERSION_RC}/ ~/svn/superset/${SUPERSET_VERSION}/
cd ~/svn/superset/ cd ~/svn/superset/
# Rename the RC (0.34.1rc1) to the actual version being released (0.34.1) # Rename the RC (0.34.1rc1) to the actual version being released (0.34.1)
for f in ${SUPERSET_VERSION}/*; do mv "$f" "${f/${SUPERSET_VERSION_RC}/${SUPERSET_VERSION}}"; done for f in ${SUPERSET_VERSION}/*; do mv "$f" "${f/${SUPERSET_VERSION_RC}/${SUPERSET_VERSION}}"; done
svn add ${SUPERSET_VERSION} svn add ${SUPERSET_VERSION}
svn commit -m "Release ${SUPERSET_VERSION}" svn commit -m "Release ${SUPERSET_VERSION}"
``` ```
Then tag the final release: Then tag the final release:
```bash ```bash
# Go to the root directory of the repo, e.g. `~/src/superset` # Go to the root directory of the repo, e.g. `~/src/superset`
cd ~/src/superset/ cd ~/src/superset/
# make sure you're on the correct branch (e.g. 0.34) # make sure you're on the correct branch (e.g. 0.34)
git branch git branch
# Create the release tag # Create the release tag
git tag -f ${SUPERSET_VERSION} git tag -f ${SUPERSET_VERSION}
``` ```
### Update CHANGELOG and UPDATING on superset ### Update CHANGELOG and UPDATING on superset
@ -291,8 +290,8 @@ while requesting access to push packages.
Once it's all done, an [ANNOUNCE] thread announcing the release to the dev@ mailing list is the final step. Once it's all done, an [ANNOUNCE] thread announcing the release to the dev@ mailing list is the final step.
```bash ```bash
# Note use Superset's virtualenv # Note use Superset's virtualenv
(venv)$ python send_email.py announce python send_email.py announce
``` ```
### Github Release ### Github Release