Skip to content

Latest commit

 

History

History
150 lines (100 loc) · 4.59 KB

File metadata and controls

150 lines (100 loc) · 4.59 KB

Releasing process

Testing current "main"

Start a Kind cluster (kind create cluster), then:

USER=netobserv make helm-install
make helm-configure-flowcollector
make helm-expose-console

Draft release - related components

All components deployed by this operator can be released separatly, at their own pace.

To release them, a tag in the format "v1.6.0-community" or "v1.6.0-crc0" must be set on the desired clean HEAD state (generally, up-to-date main branch; "crc" stands for "community release candidate"), then pushed. It applies to the console plugin, flowlogs-pipeline and netobserv-ebpf-agent.

E.g:

version="v1.12.0-community"
git tag -a "$version" -m "$version"
git push upstream --tags

The release script should be triggered (check github actions). It will automatically draft a new release, with artifacts attached.

Draft release - operator

We can then proceed with the operator. Edit the Makefile to update BUNDLE_VERSION.

BUNDLE_SET_DATE=true make update-bundle

# Set desired operator version - CAREFUL, no leading "v" here
version="1.12.0-community"
vv=v$version
test_branch=test-$vv

git commit -a -m "Prepare release $vv"
# Push to a test branch, and tag for release
git push upstream HEAD:$test_branch
git tag -a "$version" -m "$version"
git push upstream --tags

The release script should be triggered (check github actions).

Check for helm dependency updates

Check if there are available updates on dependencies (kube-prometheus-stack and loki-stack); e.g. renovate might have opened PRs.

Update dependency versions accordingly in Chart.yaml, then run:

cd helm && helm dependency update --skip-refresh ; cd ..

Testing

When all component drafts are ready, you can test the helm chart on your cluster:

make helm-install-release
make helm-configure-flowcollector

# Check component images:
kubectl get pods -oyaml | grep image:
kubectl get pods -n netobserv-privileged -oyaml | grep image:

make helm-expose-console

Then open http://localhost:9001/ in your browser, and do some manual smoke tests.

To clean up:

make helm-cleanup

Commit operator changes

When everything is ok, push to main and delete the test branch

git push upstream HEAD:main
git push upstream :$test_branch

Publish releases - related components

Use the github interface to accept the releases, via:

Edit the draft, set the previous tag then click the "Generate release notes" button.

If you think the "Dependencies" section is too long, you can surround it in a <details> block, to make it collapsed. E.g:

<details>
<summary><b>Dependencies</b></summary>

* Bump [...] from [...] by @dependabot in...
* ...
</details>

Publish releases - operator

Use the github interface to accept the release, via:

Edit the draft, set the previous tag then click the "Generate release notes" button. Like previously, don't hesitate to surround Dependencies in a <details> block.

Grab related components release notes by running:

make related-release-notes

The script should fetch and copy the content in the clipboard. Paste it at the end of the auto-generated release note in GitHub.

Check the "Create a discussion for this release" option, in category "Announcements".

Click on "Publish release".

Publishing the Helm chart

From the operator repository:

helm package helm/
index_path=/path/to/netobserv.github.io/static/helm
mkdir -p $index_path/new && mv netobserv-operator-1.12.0.tgz $index_path/new && cd $index_path
helm repo index --merge index.yaml new/ --url https://netobserv.io/static/helm/
mv new/* . && rmdir new

# Now, check there's nothing wrong in the generated files before commit (comparing last 2 versions)
colordiff <(yq '.entries.netobserv-operator[1]' index.yaml) <(yq '.entries.netobserv-operator[0]' index.yaml)

git add netobserv-operator-1.12.0.tgz index.yaml
git commit -m "Publish helm 1.12.0-community"
git push upstream HEAD:main

Check ArtifactHub for update after a few minutes: https://artifacthub.io/packages/helm/netobserv/netobserv-operator