From 03d5875adc14d03603f06aae06befc7ab3794c08 Mon Sep 17 00:00:00 2001 From: Adam Dyess Date: Wed, 10 Apr 2024 07:09:41 -0500 Subject: [PATCH] Prepare k8s release docs (#57) --- .github/workflows/charm-analysis.yaml | 1 + .github/workflows/promote-charms.yaml | 72 +++++++ .github/workflows/promote_charm.yaml | 26 --- .github/workflows/publish-charms.yaml | 40 ++++ .github/workflows/publish-k8s-worker.yaml | 16 -- .github/workflows/publish-k8s.yaml | 16 -- docs/releases/stable/create-branch-dialog.png | Bin 0 -> 16901 bytes docs/releases/stable/index.md | 192 ++++++++++++++++++ docs/releases/stable/promote-charm.png | Bin 0 -> 50327 bytes 9 files changed, 305 insertions(+), 58 deletions(-) create mode 100644 .github/workflows/promote-charms.yaml delete mode 100644 .github/workflows/promote_charm.yaml create mode 100644 .github/workflows/publish-charms.yaml delete mode 100644 .github/workflows/publish-k8s-worker.yaml delete mode 100644 .github/workflows/publish-k8s.yaml create mode 100644 docs/releases/stable/create-branch-dialog.png create mode 100644 docs/releases/stable/index.md create mode 100644 docs/releases/stable/promote-charm.png diff --git a/.github/workflows/charm-analysis.yaml b/.github/workflows/charm-analysis.yaml index 7c2a732c..75961f9c 100644 --- a/.github/workflows/charm-analysis.yaml +++ b/.github/workflows/charm-analysis.yaml @@ -9,4 +9,5 @@ jobs: uses: canonical/operator-workflows/.github/workflows/test.yaml@main secrets: inherit with: + docs-working-directory: charms self-hosted-runner: false diff --git a/.github/workflows/promote-charms.yaml b/.github/workflows/promote-charms.yaml new file mode 100644 index 00000000..db260ca8 --- /dev/null +++ b/.github/workflows/promote-charms.yaml @@ -0,0 +1,72 @@ +name: Promote charms + +on: + workflow_dispatch: + inputs: + charm: + type: choice + description: 'Charm' + options: + - all + - k8s + - k8s-worker + origin-risk: + type: choice + description: 'Origin Channel' + options: + - edge + - beta + - candidate + destination-risk: + type: choice + description: 'Destination Channel' + options: + - stable + +jobs: + configure-track: + runs-on: ubuntu-latest + outputs: + track: ${{ steps.channel.outputs.track }} + steps: + - name: Determine Channel + id: channel + env: + BRANCH: ${{ github.base_ref || github.ref }} + run: | + BRANCH=${BRANCH#refs/heads/} # strip off refs/heads/ if it exists + if [[ "${BRANCH}" == "main" ]]; then + echo "track=latest" >> "$GITHUB_OUTPUT" + elif [[ "${BRANCH}" =~ "^release-[0-9]+\.[0-9]+$" ]]; then + echo "track=${BRANCH:8}" >> "$GITHUB_OUTPUT" + echo "Promote from $track/${{github.event.inputs.origin-risk}} to $track/${{github.event.inputs.destination-risk}}" + select-charms: + runs-on: ubuntu-latest + outputs: + charms: ${{ steps.charms.outputs.charms }} + steps: + - name: Determine Charms + id: charms + env: + CHOICE: ${{ github.event.inputs.charm }} + run: | + echo "Determines which charms were chosen from $CHOICE" + if [[ "${CHOICE}" == "all" ]]; then + echo "charms=[\"charms/worker\", \"charms/worker/k8s\"]" >> "$GITHUB_OUTPUT" + elif [[ "${CHOICE}" == "k8s" ]]; then + echo "charms=[\"charms/worker/k8s\"]" >> "$GITHUB_OUTPUT" + else + echo "charms=[\"charms/worker\"]" >> "$GITHUB_OUTPUT" + fi + promote-charm: + needs: [configure-track, select-charms] + strategy: + matrix: + charm-directory: ${{ fromJson(needs.select-charms.outputs.charms) }} + uses: canonical/operator-workflows/.github/workflows/promote_charm.yaml@main + with: + origin-channel: ${{needs.configure-track.outputs.track}}/${{ github.event.inputs.origin-risk }} + destination-channel: ${{needs.configure-track.outputs.track}}/${{ github.event.inputs.destination-risk }} + docs-working-directory: ./charms + working-directory: ${{ matrix.charm-directory }} + secrets: inherit diff --git a/.github/workflows/promote_charm.yaml b/.github/workflows/promote_charm.yaml deleted file mode 100644 index 66649de9..00000000 --- a/.github/workflows/promote_charm.yaml +++ /dev/null @@ -1,26 +0,0 @@ -name: Promote charm - -on: - workflow_dispatch: - inputs: - origin-channel: - type: choice - description: 'Origin Channel' - options: - - latest/edge - destination-channel: - type: choice - description: 'Destination Channel' - options: - - latest/stable - secrets: - CHARMHUB_TOKEN: - required: true - -jobs: - promote-charm: - uses: canonical/operator-workflows/.github/workflows/promote_charm.yaml@main - with: - origin-channel: ${{ github.event.inputs.origin-channel }} - destination-channel: ${{ github.event.inputs.destination-channel }} - secrets: inherit diff --git a/.github/workflows/publish-charms.yaml b/.github/workflows/publish-charms.yaml new file mode 100644 index 00000000..5d53bdac --- /dev/null +++ b/.github/workflows/publish-charms.yaml @@ -0,0 +1,40 @@ +name: Publish Charms to 1.xx/edge + +on: + workflow_dispatch: + push: + branches: + - main + - release-* + +jobs: + configure-channel: + runs-on: ubuntu-latest + outputs: + track: ${{ steps.channel.outputs.track }} + risk: ${{ steps.channel.outputs.risk }} + steps: + - name: Determine Channel + id: channel + env: + BRANCH: ${{ github.base_ref || github.ref }} + run: | + BRANCH=${BRANCH#refs/heads/} # strip off refs/heads/ if it exists + if [[ "${BRANCH}" == "main" ]]; then + echo "track=latest" >> "$GITHUB_OUTPUT" + echo "risk=edge" >> "$GITHUB_OUTPUT" + elif [[ "${BRANCH}" =~ "^release-[0-9]+\.[0-9]+$" ]]; then + echo "track=${BRANCH:8}" >> "$GITHUB_OUTPUT" + echo "risk=beta" >> "$GITHUB_OUTPUT" + fi + publish-to-edge: + needs: [configure-channel] + uses: canonical/operator-workflows/.github/workflows/publish_charm.yaml@main + strategy: + matrix: + charm-directory: ["./charms/worker/", "./charms/worker/k8s/"] + secrets: inherit + with: + channel: ${{needs.configure-channel.outputs.track}}/${{needs.configure-channel.outputs.risk}} + working-directory: ${{ matrix.charm-directory }} + tag-prefix: k8s diff --git a/.github/workflows/publish-k8s-worker.yaml b/.github/workflows/publish-k8s-worker.yaml deleted file mode 100644 index 7e043a78..00000000 --- a/.github/workflows/publish-k8s-worker.yaml +++ /dev/null @@ -1,16 +0,0 @@ -name: Publish K8s-worker to edge - -on: - workflow_dispatch: - push: - branches: - - main - -jobs: - publish-to-edge: - uses: canonical/operator-workflows/.github/workflows/publish_charm.yaml@main - secrets: inherit - with: - channel: latest/edge - working-directory: ./charms/worker/ - tag-prefix: k8s-worker \ No newline at end of file diff --git a/.github/workflows/publish-k8s.yaml b/.github/workflows/publish-k8s.yaml deleted file mode 100644 index ada710db..00000000 --- a/.github/workflows/publish-k8s.yaml +++ /dev/null @@ -1,16 +0,0 @@ -name: Publish K8s to edge - -on: - workflow_dispatch: - push: - branches: - - main - -jobs: - publish-to-edge: - uses: canonical/operator-workflows/.github/workflows/publish_charm.yaml@main - secrets: inherit - with: - channel: latest/edge - working-directory: ./charms/worker/k8s/ - tag-prefix: k8s \ No newline at end of file diff --git a/docs/releases/stable/create-branch-dialog.png b/docs/releases/stable/create-branch-dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..728217e9eabedd230793f7ab7fe698c729b6d4e6 GIT binary patch literal 16901 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 literal 0 HcmV?d00001 diff --git a/docs/releases/stable/index.md b/docs/releases/stable/index.md new file mode 100644 index 00000000..416304df --- /dev/null +++ b/docs/releases/stable/index.md @@ -0,0 +1,192 @@ +# Creating a stable release +This document outlines the process for publishing a Canonical Kubernetes stable release. + +## Background + +### Repository Branching +This repositories used by Canonical Kubernetes has a branch scheme to provide a +consistent release experience. Any external or shared repositories are forked +into the `charmed-kubernetes` github organization and have the following branches: + +* `main`: The primary development branch. Merges are made against this branch as they are approved. +* `release_1.xx`: The release branch. New major releases are branched from `main`. +* `release_1.xx`. Bugfix releases have specific commits PR'd to `release_1.xx` from a `bugfix_1.xx_` branch. + +Tags are used to mark releases on the `release_1.xx` branch. + +### Feature Freeze + +In the weeks prior to a stable release the team goes into a feature freeze. At this +time only bugfixes and concentration on resolving any other outstanding issues +will take place for the first week of this freeze. + +The remaining tasks will still be completed at the time of feature freeze giving +Solutions QA a solid base to test from. + +### Conflict resolution + +At the time of the feature freeze, new `release_1.xx` branches are created to match +the default repo branch per the documentation below. During the feature freeze and +Solutions QA period, fixes which need to be applied to address CI or QA failures +(and only those specific fixes) are merged to the respective release branches. + +## Prepare CI + +### $stable++ release + +It may feel early, but part of releasing the next stable version requires +preparing for the release that will follow. This requires opening tracks and +building relevant snaps and charms that will be used in the new `edge` channel. + +Bundle/charm track requests are made by posting to the `charmhub requests` forum +asking for new tracks to be opened for `k8s` and `k8s-worker` charms. For example: + +- https://discourse.charmhub.io/t/request-new-1-30-track-for-all-charmed-k8s-charms-and-bundles/13394 + +ensuring to tag the request with `k8s`, `k8s-worker`, and `canonical-kubernetes` + +## Preparing the release + +### Create release branches for this repo + +* **URL**: https://github.com/canonical/k8s-operator/branches +* **New Branch**: release_1.XX +* **source**: main + +We need to create a `release_1.xx` branch from `main`. +This will be our snapshot from which we test, fix, and subsequently +promote to the new release. + +![Create Branch Dialog](create-branch-dialog.png) + +### Pin snap channel in the release branches + +We need to make sure that the charms have `1.xx/` set as the default snap channel. + +Task: +```sh +git switch release_1.xx +git checkout -b task/snap-risk/release-1.xx/ +# edit the config.options.channel.default = "1.xx/" +edit charms/worker/k8s/charmcraft.yaml +edit charms/worker/charmcraft.yaml +``` + +Where `risk` represents the channel the most stable available risk of the snap. + +For example) `1.30-classic/beta` is the most stable shown below +```sh +⚡ snap info k8s | grep 1.30 + 1.30-classic/stable: -- + 1.30-classic/candidate: -- + 1.30-classic/beta: v1.30.0-beta.0 2024-03-13 (140) 107MB classic + 1.30-classic/edge: ^ +``` + +Commit, and raise a new PR into the `release_1.xx` + +### Pin pip versions of all python dependencies +In order to reproduce charm builds, we should pin the python dependencies of at least +the charm code. The pinning should take place using a specific version of python +in order to ensure compatibility with the base os release. One can use `pyenv` to help +create python environments locally to help freeze the requirements.txt + +| base | python | +| --- | --- | +| ubuntu@20.04 (**focal**) | 3.8 | +| ubuntu@22.04 (**jammy**) | 3.10 | +| ubuntu@24.04 (**noble**) | 3.12 | + +Choose the environment based build-on base in `charms/worker/k8s/charmcraft.yaml` + +In the following example, building on focal yields packages for python 3.8. +```yaml + - build-on: + - name: ubuntu + channel: "20.04" + architectures: [amd64] +``` + +Create a python 3.8 environment, and freeze the libraries. +Then create a PR to merge into the release branch. + +Task: +```sh +pyenv install 3.8 +pyenv virtualenv 3.8 k8s-operator +pyenv activate k8s-operator +git switch release_1.xx +git checkout -b task/pip-pinning/release-1.xx +pip install -r charms/worker/k8s/requirements.txt +pip freeze > charms/worker/k8s/requirements.txt +``` + +### Build charms from the release branches + +Raising a PR, passing the integration tests, and merging into the release +branch should publish the charm to the upstream `1.xx/beta` channel. + +## Internal verification + +### Run **validate-k8s-release-upgrade** job + +**Job**: https://jenkins.canonical.com/k8s-ps5/job/validate-k8s-release-upgrade/ + +This validates the deployment using charms from the `$prev/stable` channel, +then performing an upgrade to `1.xx/beta`. The tests are parameterized to +run on: +* multiple series +* multiple architectures +* multiple clouds (aws/azure/gcp/vsphere) + +### Notify Solutions QA + +At the end of the first week and assuming all major blockers are resolved, the +release is passed over to Solutions QA (SQA) for sign-off. This is done by +[publishing a CI release](https://github.com/charmed-kubernetes/jenkins/releases/new) +with a new `1.xx` tag and informing SQA of that tag. The SQA team will have the +remaining week to test and file bugs so engineering can work towards getting +them resolved prior to stable release. + +### CNCF Conformance + +**Job**: https://jenkins.canonical.com/k8s-ps5/job/conformance-cncf-k8s/ + +Sync `canonical/k8s-conformance` main from upstream. + +- https://github.com/canonical/k8s-conformance + +Confirm passing results, then create a PR against the upstream `k8s-conformance` +repo. + +Next, open an upstream PR: + +- https://github.com/cncf/k8s-conformance/pull/XXXXX + +> **Note**: CNCF requires a sign-off. After confirming results, issue a +`git commit --amend --signoff` on the branch prior to submitting the PR. + +## Performing the release + +### Document release notes + +- Bugfixes +- Enhancements +- Known Limitations/Issues + +### Promote charms to stable +**Job**: https://github.com/canonical/k8s-operator/actions/workflows/promote_charm.yaml + +Run the workflow from a branch, select `release_1.xx`, +* Choose `Charm` - `all` +* Choose `Origin Channel`- `beta` +* Choose `Destination Channel` - `stable` + +![promote charm options](promote-charm.png) + +### Send announcement + +Email announcement to k8s-crew with any relevant information. + + +# Fin \ No newline at end of file diff --git a/docs/releases/stable/promote-charm.png b/docs/releases/stable/promote-charm.png new file mode 100644 index 0000000000000000000000000000000000000000..1d69696c8ad7f7d0a22011889d139f0c0cdaad03 GIT binary patch literal 50327 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

*%*j-a2t^~KzikeJbsZ-PbakI!*3Hnyi`Nmk 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�HmTq*DK|H+cAvrNW*4nz@Oas)Kbnw< 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%0A)$aV5PZu+q4W}q@;{-u3y1{RRMEUn4HcYn% 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 literal 0 HcmV?d00001