Conversation
Signed-off-by: cozystack-bot <[email protected]>
WalkthroughUpdates 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
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests
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.
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. Comment |
There was a problem hiding this comment.
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 stablev0.36.0release tag. - SHA256 Digest Refresh: Corresponding SHA256 digests for all updated images have been refreshed to reflect the final
v0.36.0builds, ensuring image integrity and immutability. - Version String Consistency: The
cozystackVersionincozystack-controllerandappVersionin thedashboardconfiguration have been aligned tov0.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
-
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. ↩
There was a problem hiding this comment.
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 |
| 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" |
There was a problem hiding this comment.
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
📒 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 pinnedUpgrade 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 pinNothing else changed; consistent with the release PR.
packages/apps/http-cache/images/nginx-cache.tag (1)
1-1: LGTM: nginx-cache digest refreshTag 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 valuesConsistent 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 anonymouslyAnonymous 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 pairingAutomated 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.0orskopeo 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 | |||
There was a problem hiding this comment.
🧩 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.
This PR prepares the release
v0.36.0.Summary by CodeRabbit