Skip to content

chore(release): v2.21.0#593

Merged
voxelbuildbot merged 28 commits into
mainfrom
release/v2.21.0
Jul 1, 2026
Merged

chore(release): v2.21.0#593
voxelbuildbot merged 28 commits into
mainfrom
release/v2.21.0

Conversation

@mo-getter

Copy link
Copy Markdown
Contributor

No description provided.

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

This PR bumps the FiftyOne Enterprise release version from 2.20.0 to 2.21.0 across the Makefile, docs, and test fixtures/expectations, updates integration test service startup/health check assertions, adds a new post-installation recommended configuration doc, and extends the Helm telemetry sidecar template with extra env vars, extra volumes, and RBAC-disabled handling plus new unit tests.

Changes

Version Bump to 2.21.0

Layer / File(s) Summary
Makefile default version
Makefile
Default VERSION bumped from 2.20.0 to 2.21.0.
Docker/Helm docs version references
docker/README.md, docker/docs/*.md, docs/custom-plugins.md, docs/orchestrators/*.md, helm/docs/upgrading.md, helm/fiftyone-teams-app/README.md
Image tags, SDK versions, and upgrade notes updated from 2.20.0 to 2.21.0 throughout documentation.
Test fixture and unit test expectations
tests/fixtures/docker/*.env, tests/unit/compose/*.go
Environment variables and expected image/version assertions bumped to v2.21.0.
Integration test startup/payload expectations
tests/integration/compose/*.go, tests/integration/helm/*.go, CONTRIBUTING.md
Expected startup log strings changed to explicit "starting up" messages and teams-app response payload updated to {"status":"available"}.

Recommended Post-Install Configuration Docs

Layer / File(s) Summary
README links and next-steps sections
helm/README.md, helm/fiftyone-teams-app/README.md, helm/fiftyone-teams-app/README.md.gotmpl
Adds "Recommended Next Steps" TOC entries and sections linking to new post-install guide.
New post-install configuration guide
helm/docs/post-install-recommended-configuration.md
New doc covering shared storage, dedicated plugins, delegated operators, GPU workloads, orchestrators, job priorities, verification, and plugins.

Telemetry Sidecar Extra Env/Volumes and RBAC Handling

Layer / File(s) Summary
Sidecar template env/volume logic
helm/fiftyone-teams-app/templates/_telemetry.tpl
Adds sidecarEnv support and dynamic volumeMounts construction with extraVolumeMounts for sidecar and native-sidecar.
RBAC-disabled warning
helm/fiftyone-teams-app/templates/NOTES.txt
Adds conditional warning when telemetry enabled but RBAC creation disabled.
Values documentation
helm/fiftyone-teams-app/README.md
Documents telemetry.rbac.create, telemetry.sidecar.extraVolumeMounts, telemetry.sidecar.extraVolumes.
Test helpers and new unit tests
tests/unit/helm/k8s_helpers.go, tests/unit/helm/delegated-operator-instance-deployment_test.go, tests/unit/helm/delegated-operator-job-configmap_test.go, tests/unit/helm/telemetry-rolebinding_test.go, tests/unit/helm/telemetry-sidecar_test.go
Adds shared K8s object helpers and tests for telemetry disabled/omission, GPU env injection, RBAC-disabled rendering, and extra volume mounts.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

Suggested labels

priority-low

Suggested reviewers

  • kevin-dimichel

A rabbit hops through version fields,
2.20 fades, 2.21 yields! 🐇
Sidecars now carry volumes new,
RBAC warnings pop into view.
Docs and tests all line up neat—
a tidy warren, a clean release feat! 🥕

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning No pull request description was provided, so the required template sections are missing. Add the Rationale, Review Priority, Changes, Checklist, and Testing sections from the template, and note how Docker Compose and Helm parity is maintained.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately summarizes the release version bump to v2.21.0.
Docstring Coverage ✅ Passed Docstring coverage is 80.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/v2.21.0

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.12.2)

level=error msg="[linters_context] typechecking error: pattern ./...: directory prefix . does not contain main module or its selected dependencies"


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

kaixi-wang and others added 19 commits June 30, 2026 14:16
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Kevin DiMichel <56850465+kevin-dimichel@users.noreply.github.com>
Signed-off-by: Kacey <kacey@voxel51.com>
…decar-detection' into kacey/fix-k8-gpu-sidecar-detection
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* docs(helm): Add recommended post-installation configuration guide

Signed-off-by: John Duncan <30937261+roboav8r@users.noreply.github.com>
Co-authored-by: Kevin DiMichel <56850465+kevin-dimichel@users.noreply.github.com>
chore: update startup integration tests [AS-1463]
fix: detect gpu metrics in k8 gpu delegated-executor sidecars
@kevin-dimichel kevin-dimichel marked this pull request as ready for review July 1, 2026 01:07
@kevin-dimichel kevin-dimichel requested a review from a team as a code owner July 1, 2026 01:07

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

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 (2)
tests/unit/helm/delegated-operator-instance-deployment_test.go (1)

5783-5895: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Solid new coverage; minor const-reuse nit.

Logic and assertions are correct — proper nil guards before dereferencing sidecar, correct use of the shared findContainer/findVolume/findVolumeMount helpers, and GPU key escaping matches existing conventions in this file.

Line 5798/5803/5872 use the literal "telemetry-sidecar" string instead of the package-level telemetrySidecarName const already defined in telemetry-sidecar_test.go (same package). Reusing the const avoids drift if the sidecar name ever changes.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/unit/helm/delegated-operator-instance-deployment_test.go` around lines
5783 - 5895, The new telemetry tests are correct, but they duplicate the sidecar
name literal instead of reusing the shared telemetrySidecarName constant. Update
TestTelemetryDisabledOmitsSidecar and TestTelemetrySidecarGpuEnv to reference
telemetrySidecarName with the existing findContainer assertions so the name
stays consistent if it changes elsewhere in the package.
tests/unit/helm/delegated-operator-job-configmap_test.go (1)

762-874: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

Correct; near-duplicate of the Deployment-file GPU test.

Assertions and guards are sound (native-sidecar InitContainer lookup, nil-map-safe resource checks, proper Require().NotNil before touching sidecar.Env).

TestTelemetrySidecarGpuEnv here duplicates ~80 lines of TestTelemetrySidecarGpuEnv in delegated-operator-instance-deployment_test.go almost verbatim (only the render/lookup path differs: ConfigMap→Job/InitContainers vs Deployment/Containers). Extracting the shared table-driven case data and assertion logic into a helper parameterized by a "get sidecar" closure would reduce risk of the two suites drifting apart over time.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/unit/helm/delegated-operator-job-configmap_test.go` around lines 762 -
874, The GPU-sidecar test logic in TestTelemetrySidecarGpuEnv is duplicated
almost verbatim in the Deployment test suite, so factor the shared table-driven
cases and assertions into a helper instead of maintaining two copies. Keep the
job-specific lookup in this file by passing a “get sidecar” closure or similar
from TestTelemetrySidecarGpuEnv, and reuse the same helper for the Deployment
variant to avoid drift while preserving the current ConfigMap→Job→InitContainers
flow here.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@helm/docs/post-install-recommended-configuration.md`:
- Around line 34-45: The dedicated plugins example only sets
FIFTYONE_PLUGINS_DIR, but it still needs the shared PVC mounted so /opt/plugins
persists. Update the dedicated plugins configuration to include
pluginsSettings.volumeMounts and pluginsSettings.volumes, and add the matching
apiSettings mount/volume entries so the deployment uses the PVC-backed plugin
directory correctly.

---

Nitpick comments:
In `@tests/unit/helm/delegated-operator-instance-deployment_test.go`:
- Around line 5783-5895: The new telemetry tests are correct, but they duplicate
the sidecar name literal instead of reusing the shared telemetrySidecarName
constant. Update TestTelemetryDisabledOmitsSidecar and
TestTelemetrySidecarGpuEnv to reference telemetrySidecarName with the existing
findContainer assertions so the name stays consistent if it changes elsewhere in
the package.

In `@tests/unit/helm/delegated-operator-job-configmap_test.go`:
- Around line 762-874: The GPU-sidecar test logic in TestTelemetrySidecarGpuEnv
is duplicated almost verbatim in the Deployment test suite, so factor the shared
table-driven cases and assertions into a helper instead of maintaining two
copies. Keep the job-specific lookup in this file by passing a “get sidecar”
closure or similar from TestTelemetrySidecarGpuEnv, and reuse the same helper
for the Deployment variant to avoid drift while preserving the current
ConfigMap→Job→InitContainers flow here.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ec5fbd09-dab4-40b2-88a4-f2e59f4c681f

📥 Commits

Reviewing files that changed from the base of the PR and between 37a7215 and 88a793f.

⛔ Files ignored due to path filters (24)
  • .github/workflows/pre-commit.yml is excluded by !**/*.yml
  • .github/workflows/test-docker-pulls.yml is excluded by !**/*.yml
  • .github/workflows/test-docker.yml is excluded by !**/*.yml
  • .github/workflows/test-helm.yml is excluded by !**/*.yml
  • .github/workflows/test-integration-helm.yml is excluded by !**/*.yml
  • .pre-commit-config.yaml is excluded by !**/*.yaml
  • docker/common-services.yaml is excluded by !**/*.yaml
  • docker/internal-auth/compose.delegated-operators.gpu.yaml is excluded by !**/*.yaml
  • docker/internal-auth/compose.delegated-operators.yaml is excluded by !**/*.yaml
  • docker/legacy-auth/compose.delegated-operators.gpu.yaml is excluded by !**/*.yaml
  • docker/legacy-auth/compose.delegated-operators.yaml is excluded by !**/*.yaml
  • helm/fiftyone-teams-app/Chart.yaml is excluded by !**/*.yaml
  • helm/fiftyone-teams-app/templates/api-deployment.yaml is excluded by !**/*.yaml
  • helm/fiftyone-teams-app/templates/app-deployment.yaml is excluded by !**/*.yaml
  • helm/fiftyone-teams-app/templates/delegated-operator-instance-deployment.yaml is excluded by !**/*.yaml
  • helm/fiftyone-teams-app/templates/delegated-operator-job-configmap.yaml is excluded by !**/*.yaml
  • helm/fiftyone-teams-app/templates/plugins-deployment.yaml is excluded by !**/*.yaml
  • helm/fiftyone-teams-app/templates/telemetry-role.yaml is excluded by !**/*.yaml
  • helm/fiftyone-teams-app/templates/telemetry-rolebinding.yaml is excluded by !**/*.yaml
  • helm/fiftyone-teams-app/values.schema.json is excluded by !**/*.json
  • helm/fiftyone-teams-app/values.yaml is excluded by !**/*.yaml
  • helm/values.yaml is excluded by !**/*.yaml
  • skaffold.yaml is excluded by !**/*.yaml
  • tests/fixtures/helm/integration_values.yaml is excluded by !**/*.yaml
📒 Files selected for processing (29)
  • CONTRIBUTING.md
  • Makefile
  • docker/README.md
  • docker/docs/configuring-gpu-workloads.md
  • docker/docs/upgrading.md
  • docs/custom-plugins.md
  • docs/orchestrators/configuring-databricks-orchestrator.md
  • docs/orchestrators/configuring-kubernetes-orchestrator.md
  • helm/README.md
  • helm/docs/post-install-recommended-configuration.md
  • helm/docs/upgrading.md
  • helm/fiftyone-teams-app/README.md
  • helm/fiftyone-teams-app/README.md.gotmpl
  • helm/fiftyone-teams-app/templates/NOTES.txt
  • helm/fiftyone-teams-app/templates/_telemetry.tpl
  • tests/fixtures/docker/integration_internal_auth.env
  • tests/fixtures/docker/integration_legacy_auth.env
  • tests/integration/compose/docker-compose-internal-auth_test.go
  • tests/integration/compose/docker-compose-legacy-auth_test.go
  • tests/integration/helm/helm-internal-auth_test.go
  • tests/integration/helm/helm-legacy-auth_test.go
  • tests/integration/helm/helm-topology-spread-constraint_test.go
  • tests/unit/compose/docker-compose-internal-auth_test.go
  • tests/unit/compose/docker-compose-legacy-auth_test.go
  • tests/unit/helm/delegated-operator-instance-deployment_test.go
  • tests/unit/helm/delegated-operator-job-configmap_test.go
  • tests/unit/helm/k8s_helpers.go
  • tests/unit/helm/telemetry-rolebinding_test.go
  • tests/unit/helm/telemetry-sidecar_test.go

Comment on lines +34 to +45
Dedicated plugins and delegated operators share a common plugin directory
backed by a Kubernetes PersistentVolume (PV) and PersistentVolumeClaim (PVC).

If you do not already have shared storage configured, refer to
[Adding Shared Storage for FiftyOne Enterprise Plugins](./plugins-storage.md)
for steps on creating a PV and PVC.

The examples below assume:

- PVC name: `plugins-pvc`
- Plugin directory: `/opt/plugins`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
rg -n -C3 'pluginsSettings|FIFTYONE_PLUGINS_DIR|plugins-pvc|teams-plugins' helm/fiftyone-teams-app

Repository: voxel51/fiftyone-teams-app-deploy

Length of output: 50389


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- values.yaml outline ---'
ast-grep outline helm/fiftyone-teams-app/values.yaml --view expanded | sed -n '1140,1365p'

echo '--- template search for pluginsSettings volume wiring ---'
rg -n -C4 'pluginsSettings\.(volumeMounts|volumes|enabled|service|podSecurityContext|fsGroup|persistentVolumeClaim|claimName|mountPath|subPath)|FIFTYONE_PLUGINS_DIR' helm/fiftyone-teams-app/templates helm/fiftyone-teams-app/values.yaml

echo '--- post-install doc relevant section ---'
sed -n '1,120p' helm/docs/post-install-recommended-configuration.md

Repository: voxel51/fiftyone-teams-app-deploy

Length of output: 16150


🏁 Script executed:

#!/bin/bash
set -euo pipefail

rg -n -C3 'delegatedOperatorDeployments\.(template\.)?(volumeMounts|volumes|env|enabled)|FIFTYONE_PLUGINS_DIR' helm/fiftyone-teams-app/templates helm/fiftyone-teams-app/values.yaml helm/docs

Repository: voxel51/fiftyone-teams-app-deploy

Length of output: 11937


🏁 Script executed:

#!/bin/bash
set -euo pipefail

nl -ba helm/docs/post-install-recommended-configuration.md | sed -n '30,90p'
echo '---'
nl -ba helm/docs/post-install-recommended-configuration.md | sed -n '108,132p'

Repository: voxel51/fiftyone-teams-app-deploy

Length of output: 211


Add the PVC mount to the dedicated plugins example The snippet only sets FIFTYONE_PLUGINS_DIR; pluginsSettings.enabled creates the deployment, but shared storage still has to be mounted explicitly via pluginsSettings.volumeMounts and pluginsSettings.volumes (and the matching apiSettings mount) or /opt/plugins won’t persist.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@helm/docs/post-install-recommended-configuration.md` around lines 34 - 45,
The dedicated plugins example only sets FIFTYONE_PLUGINS_DIR, but it still needs
the shared PVC mounted so /opt/plugins persists. Update the dedicated plugins
configuration to include pluginsSettings.volumeMounts and
pluginsSettings.volumes, and add the matching apiSettings mount/volume entries
so the deployment uses the PVC-backed plugin directory correctly.

@kevin-dimichel

kevin-dimichel commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

We'll look into the docker unit tests checks after release. Kacey ran them locally and they passed on one of her PRs.

@voxelbuildbot voxelbuildbot merged commit 5ca0128 into main Jul 1, 2026
40 of 51 checks passed
@voxelbuildbot voxelbuildbot deleted the release/v2.21.0 branch July 1, 2026 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants