Skip to content

Release v0.36.0#1428

Merged
kvaps merged 1 commit intomainfrom
release-0.36.0
Sep 17, 2025
Merged

Release v0.36.0#1428
kvaps merged 1 commit intomainfrom
release-0.36.0

Conversation

@cozystack-bot
Copy link
Member

@cozystack-bot cozystack-bot commented Sep 17, 2025

This PR prepares the release v0.36.0.

Summary by CodeRabbit

  • Chores
    • Promoted images from v0.36.0-beta.4 to stable v0.36.0 across the platform (installer, controller, API, dashboard, Kamaji, kubeovn-webhook, kubeovn-plunger, object storage components, SeaweedFS sidecar, matchbox, e2e).
    • Updated image digests for multiple components to latest builds (nginx cache, KubeVirt CSI driver, S3 manager, KubeOVN).
  • Style
    • Dashboard now displays app version v0.36.0.

Signed-off-by: cozystack-bot <[email protected]>
@cozystack-bot cozystack-bot added the release Releasing a new Cozystack version label Sep 17, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 17, 2025

Walkthrough

Updates multiple image references from v0.36.0-beta.4 to v0.36.0 and refreshes several SHA256 digests. Also updates cozystackVersion and dashboard appVersion to v0.36.0. No structural or logic changes.

Changes

Cohort / File(s) Summary
Release bump to v0.36.0 (stable)
packages/core/installer/values.yaml, packages/core/testing/values.yaml, packages/extra/bootbox/images/matchbox.tag, packages/extra/seaweedfs/images/objectstorage-sidecar.tag, packages/system/cozystack-api/values.yaml, packages/system/cozystack-controller/values.yaml, packages/system/dashboard/charts/kubeapps/templates/dashboard/configmap.yaml, packages/system/dashboard/values.yaml, packages/system/kamaji/values.yaml, packages/system/kubeovn-plunger/values.yaml, packages/system/kubeovn-webhook/values.yaml, packages/system/objectstorage-controller/values.yaml, packages/system/seaweedfs/values.yaml
Move from v0.36.0-beta.4 to v0.36.0 with updated digests where provided; update version fields (cozystackVersion, appVersion) accordingly.
KubeVirt CSI image digest alignment
packages/apps/kubernetes/images/kubevirt-csi-driver.tag, packages/system/kubevirt-csi-node/values.yaml
Update kubevirt-csi-driver digest to sha256:cae43eae…; tag remains 0.29.0.
KubeOVN image digest refresh
packages/system/kubeovn/values.yaml
Update kubeovn image digest; tag remains v1.14.5.
Nginx cache image digest refresh
packages/apps/http-cache/images/nginx-cache.tag
Update digest; tag remains 0.7.0.
S3 manager image digest refresh
packages/system/bucket/images/s3manager.tag
Update digest only.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • lllamnyp
  • klinch0
  • kvaps

Poem

A rabbit taps the tags in place,
From beta’s waltz to stable grace.
New digests stitched, a tidy seam,
Versions aligned like fields of green.
Hop, commit—release we go!
Burrow built on v0.36.0.
🐇✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title "Release v0.36.0" is concise and accurately reflects the PR's stated objective to prepare the v0.36.0 release and the changeset (primarily updating various image tags/digests from beta to v0.36.0); it clearly communicates the primary change for someone scanning PR history.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch release-0.36.0

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
  pre_merge_checks:
    custom_checks:
      - name: "Undocumented Breaking Changes"
        mode: "warning"
        instructions: |
          Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Summary of Changes

Hello @cozystack-bot, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request serves as the final preparation for the v0.36.0 release. It systematically updates all references to container images and version strings across the Cozystack ecosystem, transitioning them from their beta release candidates to the official stable v0.36.0 tag. This ensures that all deployed components will utilize the finalized and validated images for the new release.

Highlights

  • Image Tag Updates: All container image tags across various components have been updated from their v0.36.0-beta.4 (or similar beta) versions to the stable v0.36.0 release tag.
  • SHA256 Digest Refresh: Corresponding SHA256 digests for all updated images have been refreshed to reflect the final v0.36.0 builds, ensuring image integrity and immutability.
  • Version String Consistency: The cozystackVersion in cozystack-controller and appVersion in the dashboard configuration have been aligned to v0.36.0.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request prepares for the v0.36.0 release by updating version numbers and image digests across various configuration files. The changes are mostly correct and consistent with a release process. However, I've identified two instances where an image tag was updated but the corresponding image digest was not, which could lead to deploying an incorrect version of the software. Please review the specific comments for details.

registry: ghcr.io/cozystack/cozystack
repository: dashboard
tag: v0.36.0-beta.4
tag: v0.36.0
Copy link
Contributor

Choose a reason for hiding this comment

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

high

The image tag has been updated to v0.36.0, but the corresponding digest on the next line has not been changed. This likely means the old image (v0.36.0-beta.4) will be used. Please update the digest to match the new tag.

objectstorage:
controller:
image: "ghcr.io/cozystack/cozystack/objectstorage-controller:v0.36.0-beta.4@sha256:aa0000265ae58155aebefedac72d0a6acc45437b8668bb9739bf11edefec067a"
image: "ghcr.io/cozystack/cozystack/objectstorage-controller:v0.36.0@sha256:aa0000265ae58155aebefedac72d0a6acc45437b8668bb9739bf11edefec067a"
Copy link
Contributor

Choose a reason for hiding this comment

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

high

The image tag has been updated to v0.36.0, but the image digest has not been updated. This could result in deploying the wrong image version. Please ensure the digest corresponds to the v0.36.0 tag.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
packages/system/dashboard/charts/kubeapps/templates/dashboard/configmap.yaml (1)

79-79: Avoid hardcoding appVersion; template it from the image tag to prevent future drift.
Hardcoding requires manual bumps each release. Render from values instead.

-      "appVersion": "v0.36.0",
+      "appVersion": {{ .Values.dashboard.image.tag | quote }},
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d10b363 and f5c575d.

📒 Files selected for processing (18)
  • packages/apps/http-cache/images/nginx-cache.tag (1 hunks)
  • packages/apps/kubernetes/images/kubevirt-csi-driver.tag (1 hunks)
  • packages/core/installer/values.yaml (1 hunks)
  • packages/core/testing/values.yaml (1 hunks)
  • packages/extra/bootbox/images/matchbox.tag (1 hunks)
  • packages/extra/seaweedfs/images/objectstorage-sidecar.tag (1 hunks)
  • packages/system/bucket/images/s3manager.tag (1 hunks)
  • packages/system/cozystack-api/values.yaml (1 hunks)
  • packages/system/cozystack-controller/values.yaml (1 hunks)
  • packages/system/dashboard/charts/kubeapps/templates/dashboard/configmap.yaml (1 hunks)
  • packages/system/dashboard/values.yaml (2 hunks)
  • packages/system/kamaji/values.yaml (2 hunks)
  • packages/system/kubeovn-plunger/values.yaml (1 hunks)
  • packages/system/kubeovn-webhook/values.yaml (1 hunks)
  • packages/system/kubeovn/values.yaml (1 hunks)
  • packages/system/kubevirt-csi-node/values.yaml (1 hunks)
  • packages/system/objectstorage-controller/values.yaml (1 hunks)
  • packages/system/seaweedfs/values.yaml (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Prepare environment
🔇 Additional comments (17)
packages/system/kubeovn-plunger/values.yaml (1)

3-3: LGTM: image bumped and digest pinned

Upgrade to v0.36.0 with digest pin looks correct.

packages/system/cozystack-api/values.yaml (1)

2-2: LGTM: cozystack-api moved to v0.36.0 with digest pin

Nothing else changed; consistent with the release PR.

packages/apps/http-cache/images/nginx-cache.tag (1)

1-1: LGTM: nginx-cache digest refresh

Tag stays at 0.7.0; new sha256 pinned.

packages/system/bucket/images/s3manager.tag (1)

1-1: LGTM: s3manager digest updated (tag v0.5.0 unchanged)

No issues spotted.

packages/apps/kubernetes/images/kubevirt-csi-driver.tag (1)

1-1: LGTM: kubevirt-csi-driver digest aligned with system node values

Consistent pin across files.

packages/system/kubevirt-csi-node/values.yaml (1)

3-3: LGTM: kubevirt-csi-driver digest updated (tag unchanged — 0.29.0)

Both locations are in sync: packages/system/kubevirt-csi-node/values.yaml:3 and packages/apps/kubernetes/images/kubevirt-csi-driver.tag:1 contain ghcr.io/cozystack/cozystack/kubevirt-csi-driver:0.29.0@sha256:cae43eae09fc39e5f2140d30ef55253f871cc565b8b7a564a54077b7cbd92212

packages/system/objectstorage-controller/values.yaml (1)

3-3: Digest unchanged while bumping to v0.36.0 — cannot verify anonymously

Anonymous manifest fetch returned 401. Run docker buildx imagetools inspect ghcr.io/cozystack/cozystack/objectstorage-controller:v0.36.0 (or an authenticated manifest request) and confirm the tag digest equals the pinned sha256:aa0000265ae58155aebefedac72d0a6acc45437b8668bb9739bf11edefec067a in packages/system/objectstorage-controller/values.yaml (image line).

packages/core/installer/values.yaml (1)

2-2: LGTM — installer bumped to v0.36.0 (sha256-pinned). Validate GHCR tag→digest repo-wide.

Sandbox couldn't fetch GHCR manifests; run the provided repo-wide check script locally or run:
docker buildx imagetools inspect ghcr.io/cozystack/cozystack/installer:v0.36.0
and confirm the tag digest equals sha256:d9bf8443ccf8fafdc89133bcebdea41d4cade297dfabf615c219e1d179fa86ba.

Location: packages/core/installer/values.yaml:2

packages/core/testing/values.yaml (1)

2-2: Stable e2e image pinned with digest — LGTM.

Looks consistent with the release bump.

Covered by the repo-wide verification script in my comment on packages/system/cozystack-controller/values.yaml.

packages/extra/seaweedfs/images/objectstorage-sidecar.tag (1)

1-1: Sidecar image moved to v0.36.0 with digest — LGTM.

Ensure this stays in sync with seaweedfs values (see packages/system/seaweedfs/values.yaml Line 121).

Verified by the repo-wide script included in this review.

packages/system/seaweedfs/values.yaml (1)

121-121: COSI sidecar pinned to v0.36.0 — LGTM.

Matches packages/extra/seaweedfs/images/objectstorage-sidecar.tag.

Repo-wide checks will confirm digest consistency across files.

packages/system/kubeovn/values.yaml (1)

67-67: Kube-OVN digest bump under global.images — LGTM.

No other Kube-OVN params touched. Consider validating multi-arch availability if you run mixed nodes.

Included in the repo-wide check script.

packages/extra/bootbox/images/matchbox.tag (1)

1-1: matchbox updated to v0.36.0 with digest — LGTM.

No issues spotted.

packages/system/kamaji/values.yaml (1)

6-6: Kamaji image and --migrate-image aligned to same v0.36.0 digest — LGTM.

Good consistency across both fields.

The repo-wide script validates both entries resolve to a single digest.

Also applies to: 16-16

packages/system/kubeovn-webhook/values.yaml (1)

3-3: kubeovn-webhook moved to final v0.36.0 — LGTM.

No config drift beyond the image line.

packages/system/dashboard/values.yaml (2)

51-52: LGTM — verify kubeapps-apis tag↔digest pairing

Automated check in the sandbox failed (missing skopeo/crane/sha256sum/tee). Run locally and confirm the digest equals sha256:29e8e15c8725ccc0cddd4ffa4a28ec70b485e1cdb85b2eb1c4e40b70241e7d1e:

#!/bin/bash
set -euo pipefail
if command -v crane >/dev/null 2>&1; then
  crane digest ghcr.io/cozystack/cozystack/kubeapps-apis:v0.36.0
else
  skopeo inspect --raw docker://ghcr.io/cozystack/cozystack/kubeapps-apis:v0.36.0 | sha256sum | awk '{print "sha256:"$1}'
fi | tee /dev/stderr | grep -x 'sha256:29e8e15c8725ccc0cddd4ffa4a28ec70b485e1cdb85b2eb1c4e40b70241e7d1e'

22-22: LGTM — verify GHCR digest for ghcr.io/cozystack/cozystack/dashboard:v0.36.0
Verification script failed: neither 'crane' nor 'skopeo' available (output: Install 'crane' or 'skopeo' to verify digests.). Run one of: crane digest ghcr.io/cozystack/cozystack/dashboard:v0.36.0 or skopeo inspect --raw docker://ghcr.io/cozystack/cozystack/dashboard:v0.36.0 | sha256sum | awk '{print "sha256:"$1}' and confirm the digest equals sha256:54906b3d2492c8603a347a5938b6db36e5ed5c4149111cae1804ac9110361947.

@@ -1,5 +1,5 @@
cozystackController:
image: ghcr.io/cozystack/cozystack/cozystack-controller:v0.36.0-beta.4@sha256:f4f8fa8e2f33f66d90b99398025d0da1328b530a622a9b420c993e51e1302992
image: ghcr.io/cozystack/cozystack/cozystack-controller:v0.36.0@sha256:61f78e3b8225af0481c99d0626a08523f85c35c76ad51a581082406a370980d0
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

🧩 Analysis chain

Controller image + cozystackVersion set to v0.36.0 — LGTM.

Providing a quick repo-wide guard to catch stray beta tags and digest drift.

Run this script from the repo root:

Also applies to: 5-5


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "1) Ensuring no beta tags remain..."
if rg -nP ':[^@\s"]*beta' -g '!**/CHANGELOG*' -g '!**/*.md'; then
  echo "ERROR: Found beta-tagged images above."
  exit 1
fi
echo "OK: No beta tags."

echo "2) Ensuring digest consistency for updated v0.36.0 images..."
patterns=(
  'ghcr\.io/cozystack/cozystack/e2e-sandbox:v0\.36\.0@sha256:[a-f0-9]{64}'
  'ghcr\.io/cozystack/cozystack/objectstorage-sidecar:v0\.36\.0@sha256:[a-f0-9]{64}'
  'ghcr\.io/cozystack/cozystack/matchbox:v0\.36\.0@sha256:[a-f0-9]{64}'
  'ghcr\.io/cozystack/cozystack/kamaji:v0\.36\.0@sha256:[a-f0-9]{64}'
  'ghcr\.io/cozystack/cozystack/kubeovn-webhook:v0\.36\.0@sha256:[a-f0-9]{64}'
)
for pat in "${patterns[@]}"; do
  ds=$(rg -oPN "$pat" | awk -F'@' '{print $2}' | sort -u)
  n=$(printf "%s\n" "$ds" | sed '/^$/d' | wc -l | tr -d ' ')
  if [ "$n" -gt 1 ]; then
    echo "ERROR: Multiple digests found for image pattern: $pat"
    printf "%s\n" "$ds"
    exit 1
  fi
done
echo "OK: Digests are consistent for v0.36.0 images."

echo "3) Verifying Kamaji image == --migrate-image digest..."
k_cnt=$(rg -n 'cozystack/cozystack/kamaji:v0\.36\.0@sha256:' packages/system/kamaji/values.yaml | wc -l | tr -d ' ')
if [ "$k_cnt" -lt 2 ]; then
  echo "ERROR: Expected both image.tag and --migrate-image to be pinned; found $k_cnt occurrence(s)."
  exit 1
fi
k_dig_unique=$(rg -oPN 'cozystack/cozystack/kamaji:v0\.36\.0@(?<d>sha256:[a-f0-9]{64})' packages/system/kamaji/values.yaml | awk -F'@' '{print $2}' | sort -u | wc -l | tr -d ' ')
if [ "$k_dig_unique" -ne 1 ]; then
  echo "ERROR: Kamaji digest differs between image and migrate-image."
  rg -n 'cozystack/cozystack/kamaji:v0\.36\.0@sha256:' packages/system/kamaji/values.yaml
  exit 1
fi
echo "OK: Kamaji entries aligned."

echo "4) Verifying objectstorage-sidecar digest is single-valued across repo..."
o_u=$(rg -oPN 'objectstorage-sidecar:v0\.36\.0@(?<d>sha256:[a-f0-9]{64})' | awk -F'@' '{print $2}' | sort -u | wc -l | tr -d ' ')
if [ "$o_u" -gt 1 ]; then
  echo "ERROR: Multiple digests for objectstorage-sidecar:v0.36.0:"
  rg -n 'objectstorage-sidecar:v0\.36\.0@sha256:' 
  exit 1
fi
echo "OK: objectstorage-sidecar digest is consistent."

echo "5) Sanity: cozystackVersion set to v0.36.0 in controller values..."
rg -nP '\bcozystackVersion:\s*"v0\.36\.0"' packages/system/cozystack-controller/values.yaml >/dev/null
echo "All checks passed."

Length of output: 452


Action: Pin Kamaji image and migrate-image to the same digest

Verification failed — only one occurrence of cozystack/cozystack/kamaji:v0.36.0@sha256:… was found. Update packages/system/kamaji/values.yaml so both the image.tag and the --migrate-image are pinned to the identical sha256 digest, then re-run the checks.

🤖 Prompt for AI Agents
In packages/system/cozystack-controller/values.yaml around line 2 and
packages/system/kamaji/values.yaml (update both), the Kamaji image digest is not
consistently pinned: set packages/system/kamaji/values.yaml so both image.tag
and the --migrate-image flag are pinned to the identical sha256 digest (use the
same sha256 from cozystack-controller:
sha256:61f78e3b8225af0481c99d0626a08523f85c35c76ad51a581082406a370980d0),
updating the image.tag value and the migrate-image argument to match exactly,
save and re-run the verification checks.

@kvaps kvaps merged commit a1a107a into main Sep 17, 2025
20 checks passed
@kvaps kvaps deleted the release-0.36.0 branch September 17, 2025 14:45
This was referenced Oct 6, 2025
@coderabbitai coderabbitai bot mentioned this pull request Jan 20, 2026
@coderabbitai coderabbitai bot mentioned this pull request Feb 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Releasing a new Cozystack version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants