diff --git a/community/create-a-kvrocks-controller-release.md b/community/create-a-kvrocks-controller-release.md new file mode 100644 index 00000000..48c46096 --- /dev/null +++ b/community/create-a-kvrocks-controller-release.md @@ -0,0 +1,212 @@ +--- +id: create-a-kvrocks-controller-release +title: Create a kvrocks controller release +--- + +This document mainly introduces how the Release Manager releases a new version in accordance with the Apache requirements. + +## Introduction + +Apache Kvrocks™ Controller is a cluster management tool for Apache Kvrocks™. And the release process and policy of Apache Kvrocks Controller is similar to Apache Kvrocks™: + +* Source Release is the key point which Apache values, also, is necessary for a release; +* Binary Release is optional. Apache Kvrocks™ Controller 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. + +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) + +For the first release manager, you need to add your PGP key to the KEYS file in the repository, please refer to [Adding GPG KEY](https://kvrocks.apache.org/community/create-a-release/#adding-gpg-key). + +## Create source releases and stage + +1. Checkout to the RELEASE BRANCH and cherry-pick commits to release +2. Use `./x.py package source -v ${release_version} -rc ${candidate_number}` to create release tarball +3. Make sure it compiles good and push tag to GitHub + +## 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/kvrocks/kvrocks-controller + +First, checkout Kvrocks controller 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/kvrocks/kvrocks-controller kvrocks-controller-dist-dev +``` + +Then, upload the artifacts: + +```shell +cd kvrocks-controller-dist-dev +mkdir ${release_version} # create a directory named by version +cp ${repo_dir}/apache-kvrocks-controller-${release_version}-src.tar.gz* ${release_version}/ # copy source code and signature package to the versioned directory +svn status # check svn status +svn add ${release_version} # add to svn +svn status # check svn status +svn commit -m "Prepare for ${release_version}" # commit to SVN remote server +``` + +## Draft release note + +[Draft a new release note](https://github.com/apache/kvrocks-controller/releases/new). + +You should choose the current release candidate tag. GitHub can automatically generate the content of release note, but you need to group it. + +For some important content, highlight it at the beginning. + +## Voting + +### Kvrocks community vote + +Kvrocks community vote,send email to: `dev@kvrocks.apache.org`: + +```text +[VOTE] Release Apache Kvrocks Controller ${release_version} + +Hello Apache Kvrocks PMC and Community, + + This is a call for a vote to release Apache Kvrocks Controller version ${release_version}. + + The tag to be voted on is ${release_version}-rc${candidate_number}. + + The release candidate: + + https://dist.apache.org/repos/dist/dev/kvrocks/kvrocks-controller/${release_version}/ + + + Keys to verify the release candidate: + + https://downloads.apache.org/kvrocks/KEYS + + + Git tag for the release: + + https://github.com/apache/kvrocks-controller/releases/tag/${release_version}-rc${candidate_number} + + Please download, verify, and test. + + The VOTE will remain open for at least 72 hours. + + [ ] +1 approve + [ ] +0 no opinion + [ ] -1 disapprove with the reason + + To learn more about apache kvrocks, please see + https://kvrocks.apache.org/ + + Checklist for reference: + + [ ] Download links are valid. + [ ] Checksums and signatures. + [ ] LICENSE/NOTICE files exist + [ ] No unexpected binary files + [ ] All source files have ASF headers + [ ] Can compile from source + [ ] All Tests Passed + + More detailed checklist please refer to: + https://kvrocks.apache.org/community/verify-a-release-candidate + +Thanks +``` + +After at least 72 hours with at least 3 +1 binding vote (from Kvrocks PMC member) and no veto, claim the vote result: + +```text +[RESULT][VOTE] Release Apache Kvrocks Controller ${release_version} + +The vote to release Apache Kvrocks Controller ${release_version} has passed. + +The vote PASSED with xxx binding +1 and 0 -1 votes: + +Binding votes: +- XXX +- XXX +- XXX + +No Binding votes: +- XXX +- XXX +- XXX + +Vote thread: + +${vote_thread_url} + +Thank you to all the above members to help us to verify and vote for the +${release_version} release. + +Thanks +``` + +## Officially released + +### Publish artifacts to SVN RELEASE branch + +```shell +svn mv https://dist.apache.org/repos/dist/dev/kvrocks/kvrocks-controller/${release_version} https://dist.apache.org/repos/dist/release/kvrocks/kvrocks-controller/${release_version} -m "Release ${release_version}" +``` + +### Publish release note + +Edit the title of the draft release note and use the new ${release_version} tag, which github will create automatically. + +Then, publish release. + +### Update website links + +Update [releases data file](https://github.com/apache/kvrocks-website/blob/main/src/components/Releases/kvrocks-controller.tsx). + +### Send the announcement + +Send the release announcement to `dev@kvrocks.apache.org` and CC `announce@apache.org`: + +> You have to use `${name}@apache.org` post email to `announce@apache.org` + +```html +[ANNOUNCE] Release Apache Kvrocks Controller ${release_version} + +Hi all, + +The Apache Kvrocks community is pleased to announce +that Apache Kvrocks Controller ${release_version} has been released! + +Apache Kvrocks Controller is a cluster management tool for Apache Kvrocks, including the following key features: + +- Failover - controller will failover or remove the master/slave node when probing failed +- Scale out the cluster in one line command +- Manage many clusters in one controller cluster +- Support multi metadata storages like etcd and so on + +This release contains a number of new features, bug fixes and +improvements compared to the last version released before. +The notable changes since ${release_version} include: +1. xxxxx +2. yyyyyy +3. zzzzzz + +Please refer to the change log for the complete list of changes: +https://github.com/apache/kvrocks-controller/releases/tag/v${release_version} + +Apache Kvrocks website: https://kvrocks.apache.org/ + +Download Links: https://kvrocks.apache.org/download/kvrocks-controller + +Kvrocks Resources: +- Issue: https://github.com/apache/kvrocks-controller/issues +- Mailing list: dev@kvrocks.apache.org + +Thanks +On behalf of Apache Kvrocks community +``` diff --git a/community/verify-a-release-candidate.md b/community/verify-a-release-candidate.md index 7c26516c..3ae30ff1 100644 --- a/community/verify-a-release-candidate.md +++ b/community/verify-a-release-candidate.md @@ -24,10 +24,18 @@ However, you should clearly state which checks you did. The release manager need Use the following command to download all artifacts, replace "${release_version}-${rc_version}" with the version ID of the version to be released: +### Kvrocks + ```shell svn co https://dist.apache.org/repos/dist/dev/kvrocks/${release_version}-${rc_version}/ ``` +### Kvrocks Controller + +```shell +svn co https://dist.apache.org/repos/dist/dev/kvrocks/kvrocks-controller/${release_version}-${rc_version}/ +``` + ## Verify signature and hash Start the verification process, which includes but is not limited to the following content and verification methods. @@ -140,6 +148,8 @@ fi ``` 2. verify the sign and checksum +### Kvrocks + ```shell ./release-verify.sh apache-kvrocks-${release_version}-src.tar.gz ``` diff --git a/download/kvrocks-controller.mdx b/download/kvrocks-controller.mdx new file mode 100644 index 00000000..2a9514fb --- /dev/null +++ b/download/kvrocks-controller.mdx @@ -0,0 +1,20 @@ +--- +title: Kvrocks Controller Official Download +--- + +## Apache Kvrocks™ Controller Downloads + +Apache Kvrocks™ Controller is released as a source artifact. We are pleased to announce our release as below. + +### Kvrocks Controller Source Releases + +````mdx-code-block +import Releases from "../src/components/Releases/kvrocks-controller"; + + +```` + +Choose a source distribution in the *tar* format, and [verify](https://www.apache.org/dyn/closer.cgi#verify) using the corresponding *pgp* signature (using the committer file in [KEYS](https://downloads.apache.org/kvrocks/KEYS)). If you cannot do that, the *sha512* hash file may be used to check that the download has completed OK. + +For fast downloads, current source distributions are hosted on mirror servers; older source distributions are in the +[archive](https://archive.apache.org/dist/kvrocks/kvrocks-controller). If a download from a mirror fails, retry, and the second download will likely succeed. diff --git a/sidebarsCommunity.js b/sidebarsCommunity.js index 476935f6..0fdae38a 100644 --- a/sidebarsCommunity.js +++ b/sidebarsCommunity.js @@ -23,6 +23,7 @@ const sidebars = { }, items: [ 'create-a-release', + 'create-a-kvrocks-controller-release', 'verify-a-release-candidate', ] }, diff --git a/src/components/Releases/kvrocks-controller.tsx b/src/components/Releases/kvrocks-controller.tsx new file mode 100644 index 00000000..9fec5df3 --- /dev/null +++ b/src/components/Releases/kvrocks-controller.tsx @@ -0,0 +1,47 @@ +import React from "react"; + +const controller_versions = [] + +type ReleaseData = { + name: string, + archive: string, + checksum: string, + signature: string, +} + +function createReleaseData(version: string, vtag?: string): ReleaseData { + const fixedVTag = vtag ?? version; + const archive = `https://downloads.apache.org/kvrocks/kvrocks-controller/${version}/apache-kvrocks-controller-${fixedVTag}-src.tar.gz` + return { + name: fixedVTag, + archive: archive, + checksum: `${archive}.sha512`, + signature: `${archive}.asc`, + }; +} + +export default function Releases(): JSX.Element { + const releases = controller_versions.map(({ version, vtag }) => createReleaseData(version, vtag)) + return <> + + + + + + + + + + + {releases.map(v => ( + + + + + + + ))} + +
NameArchiveChecksumSignature
{v.name}tarballsha512asc
+ +}