Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add documentations for the release process of Helm charts #723

Merged
merged 4 commits into from
Nov 15, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions docs/release/helm-chart.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Helm charts release

We host all Helm charts on [kuberay-helm](https://github.com/ray-project/kuberay-helm). This document describes the process for release managers to release Helm charts.

## The end-to-end workflow
### Step 1: Update version in Chart.yaml
Please update the value of `version` in [ray-cluster/Chart.yaml](https://github.com/ray-project/kuberay/blob/master/helm-chart/ray-cluster/Chart.yaml), [kuberay-operator/Chart.yaml](https://github.com/ray-project/kuberay/blob/master/helm-chart/kuberay-operator/Chart.yaml), and [kuberay-apiserver/Chart.yaml](https://github.com/ray-project/kuberay/blob/master/helm-chart/kuberay-apiserver/Chart.yaml) to the new release version (e.g. 0.4.0).

### Step 2: Copy the helm-chart directory from kuberay to kuberay-helm
In [kuberay-helm CI](https://github.com/ray-project/kuberay-helm/blob/main/.github/workflows/chart-release.yaml), `helm/chart-releaser-action` will create releases for all charts in the directory `helm-chart` and update `index.yaml` in the [gh-pages](https://github.com/ray-project/kuberay-helm/tree/gh-pages) branch when the PR is merged into `main`. Note that `index.yaml` is necessary when you run the command `helm repo add`. I recommend removing the `helm-chart` directory in the kuberay-helm repository and creating a new one by copying from the kuberay repository.

### Step 3: Check the correctness
When the PR is merged into `main`, the releases and `index.yaml` will be generated. You can check the correctness by:

* Check whether the [releases](https://github.com/ray-project/kuberay-helm/releases) are created as expectation.
* Check whether [index.yaml](https://github.com/ray-project/kuberay-helm/blob/gh-pages/index.yaml) exists or not.
* Check whether [index.yaml](https://github.com/ray-project/kuberay-helm/blob/gh-pages/index.yaml) has metadata of all releases, including old versions.
* Check the creation/update time of all releases and `index.yaml` to ensure they are updated.

* Install charts from Helm repository.
```sh
helm repo add kuberay https://ray-project.github.io/kuberay-helm/

# List all charts
helm search repo kuberay

# Install charts
helm install kuberay-operator kuberay/kuberay-operator
helm install kuberay-apiserver kuberay/kuberay-apiserver
helm install ray-cluster kuberay/ray-cluster
```

## Delete the existing releases
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need to delete existing releases?

Should we maintain Helm release version for each KubeRay release?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need to delete existing releases?

Because the chart-releaser will only be triggered when the PR is merged into main, maintainers may want to revert some wrong PRs. For example, a release manager of 0.4.0 forgets to update version from 0.3.0 to 0.4.0 in Chart.yaml, so the existing 0.3.0 releases and index.yaml update. In this case, we need to follow the "Delete the existing releases" section to revert.

Should we maintain Helm release version for each KubeRay release?

Yes

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, makes sense -- could you clarify that deleting charts is only for such situations?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, I think it already sufficiently conveys that deleting things is not recommended.

`helm/chart-releaser-action` does not encourage users to delete existing releases; thus, `index.yaml` will not be updated automatically after the deletion. If you really need to do that, please read this section carefully before you do that.

* Delete the [releases](https://github.com/ray-project/kuberay-helm/releases)
* Remove the related tags by the following command. If tags are not properly removed, [ray-project/kuberay/#561](https://github.com/ray-project/kuberay/issues/561) may occur.

```sh
# git remote -v
# upstream [email protected]:ray-project/kuberay-helm.git (fetch)
# upstream [email protected]:ray-project/kuberay-helm.git (push)

# The following command deletes the tag "ray-cluster-0.4.0".
git push --delete upstream ray-cluster-0.4.0
```
* Remove `index.yaml`
* Trigger kuberay-helm CI again to create new releases and new index.yaml.
* Follow "Step3: Check the correctness" to test it.