This is an automated email from the ASF dual-hosted git repository. tison pushed a commit to branch refactor in repository https://gitbox.apache.org/repos/asf/incubator-kvrocks-website.git
commit 682b2ad298ebd3fb6f82829b2d54d0cd547dea3d Author: tison <[email protected]> AuthorDate: Fri Dec 16 13:01:25 2022 +0800 Rework Create a Kvrocks release Signed-off-by: tison <[email protected]> --- community/create-a-release.md | 197 ++++++++++++++++++++++++------------------ 1 file changed, 113 insertions(+), 84 deletions(-) diff --git a/community/create-a-release.md b/community/create-a-release.md index 58977b8..ce072a6 100644 --- a/community/create-a-release.md +++ b/community/create-a-release.md @@ -3,40 +3,51 @@ id: create-a-release title: Create a Kvrocks release --- -> This article mainly introduces how the Release Manager releases a new version in accordance with the Apache requirements. +This document mainly introduces how the Release Manager releases a new version in accordance with the Apache requirements. -## Prolegomenon -Source Release is the key point which Apache values, also, is necessary for a release; -Binary Release is optional. Kvrocks can choose whether to release the binary package to the Apache repository or not. +## Introduction + +* Source Release is the key point which Apache values, also, is necessary for a release; +* Binary Release is optional. Kvrocks can choose whether to release the binary package to the Apache repository or not. Note that for binary distribution packages, it is necessary to check that the new version does not contain third-party dependencies. -For more guideline, you can refer the following links: +Please remember that publishing software has legal consequences. This guide complements the foundation-wide policies and guides: + +* [Release Policy](https://www.apache.org/legal/release-policy.html) +* [Release Distribution Policy](https://infra.apache.org/release-distribution) +* [Release Creation Process](https://infra.apache.org/release-publishing.html) -[ASF Release Creation Process](https://infra.apache.org/release-publishing.html) +## Adding GPG KEY -[ASF Release Policy](https://www.apache.org/legal/release-policy.html) +This section is a brief from the [Cryptography with OpenPGP](https://infra.apache.org/openpgp.html) guideline. +:::note -## Adding PG KEY -> Ref:https://infra.apache.org/openpgp.html -**This section is the requirements for release manager who is the first time to be a release manager** +This section is the requirements for release manager who is the first time to be a release manager + +::: ### Install gpg -For more details, please ref to [Official website](https://www.gnupg.org/download/index.html), configurations under Mac OS: + +For more details, please refer to [GPG official website](https://www.gnupg.org/download/index.html). Here shows one approach to install GPG with [Homebrew](https://brew.sh/): + ```shell -$ brew install gpg -$ gpg --version #check the version, should be 2.x +brew install gpg +gpg --version #check the version, should be 2.x ``` + ### Generate gpg Key -#### Attentions: -- Name is best to keep consistent with your full name of Apache ID -- Email should be the Apache email -- Name is best to only use English to avoid garbled -#### Generate the key as prompt -```shell -➜ ~ gpg --full-gen-key +Attentions: + +* Name is best to keep consistent with your full name of Apache ID; +* Email should be the Apache email; +* Name is best to only use English to avoid garbled. + +Run `gpg --full-gen-key` and complete the generation interactively: + +```text gpg (GnuPG) 2.2.20; Copyright (C) 2020 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. @@ -98,69 +109,89 @@ uid [ultimate] hulk <[email protected]> sub rsa4096 2022-07-12 [E] ``` -### upload your key to public gpg keyserver +### Upload your key to public gpg keyserver + +Firstly, list your key: ```shell -➜ ~ gpg --list-keys +gpg --list-keys +``` + +The output is like: + +```text ------------------------------- pub rsa4096 2022-07-12 [SC] F77B887A4F25A9468C513E9AA3008E49B00F626B uid [ultimate] hulk <[email protected]> sub rsa4096 2022-07-12 [E] +``` + +Then, send your key id to key server: -# command for sending your key id to key server -$ gpg --keyserver pgpkeys.mit.edu --send-key <key id> -# Among them, pgpkeys.mit.edu is a randomly selected keyserver, and the keyserver list is: https://sks-keyservers.net/status/, which is automatically synchronized with each other, you can choose any one of them. +```shell +gpg --keyserver keys.openpgp.org --send-key <key-id> # e.g., F77B887A4F25A9468C513E9AA3008E49B00F626B ``` +Among them, `keys.openpgp.org` is a randomly selected keyserver, you can use `keyserver.ubuntu.com` or any other full-featured keyserver. + ### Check whether the key is created successfully -Uploading takes about one minute, after that, you can check by your email at `http://keys.gnupg.net`. Be reminded to tick "the show full-key hashes" under advance. +Uploading takes about one minute, after that, you can check by your email at the corresponding keyserver. + +Uploading keys to the keyserver is mainly for joining a [Web of Trust](https://infra.apache.org/release-signing.html#web-of-trust). ### Add your gpg public key to the KEYS document -> SVN is required for this step -The svn repository of the DEV branch is: https://dist.apache.org/repos/dist/dev/incubator/kvrocks -The svn repository of the Release branch is: https://dist.apache.org/repos/dist/release/incubator/kvrocks +:::info + +SVN is required for this step. + +::: + +The svn repository of the release branch is: https://dist.apache.org/repos/dist/release/incubator/kvrocks + +Please always add the public key to KEYS in the release branch: -#### Add the public key to KEYS in the dev branch to release the RC version ```shell -➜ ~ svn co https://dist.apache.org/repos/dist/dev/incubator/kvrocks kvrocks-dist-dev +svn co https://dist.apache.org/repos/dist/release/incubator/kvrocks kvrocks-dist # As this step will copy all the versions, it will take some time. If the network is broken, please use svn cleanup to delete the lock before re-execute it. -➜ ~ cd kvrocks-dist-dev -➜ kvrocks-dist-dev ~ (gpg --list-sigs [email protected] && gpg --export --armor [email protected]) >> KEYS # Append your key to the KEYS file -➜ kvrocks-dist-dev ~ svn add . # It is not needed if the KEYS document exists before. -➜ kvrocks-dist-dev ~ svn ci -m "add gpg key for YOUR_NAME" # Later on, if you are asked to enter a username and password, just use your apache username and password. +cd kvrocks-dist +(gpg --list-sigs [email protected] && gpg --export --armor [email protected]) >> KEYS # Append your key to the KEYS file +svn add . # It is not needed if the KEYS document exists before. +svn ci -m "add gpg key for YOUR_NAME" # Later on, if you are asked to enter a username and password, just use your apache username and password. ``` -#### Add the public key to the KEYS in the release branch for releasing official version -```shell -➜ ~ svn co https://dist.apache.org/repos/dist/release/incubator/kvrocks kvrocks-dist-release -➜ ~ cd kvrocks-dist-release -➜ kvrocks-dist-release ~ (gpg --list-sigs [email protected] && gpg --export --armor [email protected]) >> KEYS # Append the KEY you generated to the document KEYS, after appending, it is best to check whether it is correct -➜ kvrocks-dist-release ~ svn add . # It is not needed if the KEYS document exists before. -➜ kvrocks-dist-release ~ svn ci -m "Add gpg key for YOUR_NAME" # Later on, if you are asked to enter a username and password, just use your apache username and password. -``` -### Upload the GPG public key to your Github account +### Upload the GPG public key to your GitHub account + 1. Enter https://github.com/settings/keys to add GPG KEYS. -2. Please remember to bind the email address used in the GPG key to your github account (https://github.com/settings/emails)., if you find "unverified" after adding it. +2. Please remember to bind the email address used in the GPG key to your GitHub account (https://github.com/settings/emails) if you find "unverified" after adding it. -### create tag +## Create source releases and stage 1. Checkout to the RELEASE BRANCH and cherry-pick commits to release -2. Use `./x.py package source --version ${release_version}` to create release tarball +2. Use `./x.py package source --version ${release_version}` to create release tarball 3. Make sure it compiles good and push tag to GitHub -### Upload tar file to dist repo -> SVN is need in this step, SVN repo for DEV branch is https://dist.apache.org/repos/dist/dev/incubator/kvrocks +## Upload artifacts to SVN dist repo + +:::info + +SVN is required for this step. + +::: + +The svn repository of the dev branch is: https://dist.apache.org/repos/dist/dev/incubator/kvrocks + +First, checkout Kvrocks to local directory: -### Checkout Kvorcks to local directory ```shell # As this step will copy all the versions, it will take some time. If the network is broken, please use svn cleanup to delete the lock before re-execute it. svn co https://dist.apache.org/repos/dist/dev/incubator/kvrocks kvrocks-dist-dev ``` -### Add public key to KEYS file adn commit to SVN repository +Then, upload the artifacts: + ```shell cd kvrocks-dist-dev mkdir ${release_version} # create a directory named by version @@ -173,16 +204,12 @@ svn commit -m "Prepare for ${release_version}" # commit to SVN remote server ## Voting -- Kvrocks community vote,send email to :`[email protected]` - ### Kvrocks community vote -#### Vote template - -```html -Title:[VOTE] Release Apache Kvrocks(incubating) ${release_version} +Kvrocks community vote,send email to: `[email protected]`: -Content: +```text +[VOTE] Release Apache Kvrocks(incubating) ${release_version} Hello Apache Kvrocks(incubating) PMC and Community, @@ -231,11 +258,10 @@ Hello Apache Kvrocks(incubating) PMC and Community, Thanks ``` -#### Vote Result template -```html -Title:[RESULT][VOTE] Release Apache Kvrocks(incubating) ${release_version} +After at least 72 hours with at least 3 +1 binding vote (from Kvrocks Podling PMC member) and no veto, claim the vote result: -Content: +```text +[RESULT][VOTE] Release Apache Kvrocks(incubating) ${release_version} The vote to release Apache Kvrocks(Incubating) ${release_version} has passed. @@ -262,14 +288,12 @@ Thanks ### Incubator community vote -#### Vote template - -```html -Title:[VOTE] Release Apache Kvrocks(incubating) ${release_version} +Incubator community vote,send email to: `[email protected]`: -Content: +```text +[VOTE] Release Apache Kvrocks(incubating) ${release_version} -Hello IPMC, +Hello Incubator PMC, The Apache Kvrocks community has voted and approved the release of Apache Kvrocks(incubating) ${release_version}. We now kindly request the IPMC members @@ -314,13 +338,12 @@ Please vote accordingly: Thanks ``` -#### Vote Result template -```html -Title:[RESULT][VOTE] Release Apache Kvrocks(incubating) ${release_version} +After at least 72 hours with at least 3 +1 binding vote (from Incubator PMC member) and no veto, claim the vote result: -Content: +```text +[RESULT][VOTE] Release Apache Kvrocks(incubating) ${release_version} -Hi Incubator Community, +Hi Incubator PMC, The vote to release Apache Kvrocks(incubating) ${release_version} has passed with 4 +1 binding and 3 +1 non-binding votes, no +0 or -1 votes. @@ -333,9 +356,7 @@ Binding votes: Non-Binding votes: -- xxx -- yyy -- zzz +- aaa Vote thread: ${incubator_vote_thread_url} @@ -346,21 +367,29 @@ We will proceed with publishing the approved artifacts and sending out the annou ## Officially released -### Move source code and binary package from DEV to release repository on SVN. +### Publish artifacts to SVN RELEASE branch + ```shell svn mv https://dist.apache.org/repos/dist/dev/incubator/kvrocks/${release_version} https://dist.apache.org/repos/dist/release/incubator/kvrocks/${release_version} -m "Release ${release_version}" ``` -### Check whether the dev and release is correct -1. Make sure `${release_version}` is deleted in [dev](https://dist.apache.org/repos/dist/dev/incubator/kvrocks/). -### Update links on official website +### Delete artifacts in SVN DEV branch + +```shell +svn delete https://dist.apache.org/repos/dist/dev/incubator/kvrocks/${release_version} -m "Delete staging ${release_version} artifacts" +``` + +### Update website links -### Send email to `[email protected]` and CC `[email protected]` +Update [releases data file](https://github.com/apache/incubator-kvrocks-website/blob/main/download/releases.json). + +### Send the announcement + +Send the release announcement to `[email protected]` and CC `[email protected]`: -Release announce email template: ```html -Title: [ANNOUNCE] Release Apache Kvrocks(incubating) ${release_version} -Content: +[ANNOUNCE] Release Apache Kvrocks(incubating) ${release_version} + Hi all, The Apache Kvrocks(incubating) community is pleased to announce
