Skip to content

Add Kueue compatibility scraper and chart image regression coverage - #4138

Open
williamgritti wants to merge 1 commit into
pluralsh:masterfrom
williamgritti:contrib/kueue-compatibility
Open

Add Kueue compatibility scraper and chart image regression coverage#4138
williamgritti wants to merge 1 commit into
pluralsh:masterfrom
williamgritti:contrib/kueue-compatibility

Conversation

@williamgritti

Copy link
Copy Markdown

Kueue currently has no compatibility entry. This adds its metadata, manifest registration, a scraper, and a generated table covering published stable Helm charts from 0.9.5 through 0.19.3. The shared reducer retains 12 representative rows.

The scraper discovers stable tags from the official OCI registry, then reads each release's tagged README. Its kube values are the explicitly documented E2E test versions. It does not expand an open-ended installation minimum into assumed compatibility. For example, v0.19.3 records 1.34, 1.35, and 1.36, although its installation minimum is 1.29. Signature, attestation, build-metadata, and prerelease tags are excluded; a missing or changed source fails before writing.

Live Helm templating exposed an existing image-extraction crash on CRD schema properties named image. A one-line type guard handles those objects while preserving actual image strings; regression tests cover this path.

Sources:

Related discussion: #4137. Maintainer confirmation is requested for the tested-minor interpretation and coverage before merging.

Test Plan

  • 14 offline unit/integration tests on Python 3.13.9, including old/new README layouts, numeric tag sorting, source failures, actual YAML writing/reduction, CRD image fields, and repeatable output.
  • Live scraper generation and Helm 4.2.4 templating produced 12 rows with image references.
  • Generated table and manifest pass the repository JSON schema.
  • Scoped GitHub Actions workflow runs the offline tests using the existing scraper requirements.
  • Kubernetes deployment testing is outside this data/scraper change; no live cluster was used.

Checklist

  • I have added a meaningful title and summary to convey the impact of this PR to a user.
  • If required, I have updated the Plural documentation accordingly.
  • I have added tests to cover my changes.
  • I have deployed the agent to a test environment and verified that it works as expected (required only when changing agent code; not applicable).

Plural Flow: console

Could maintainers confirm eligibility for the advertised $300 new-scraper contributor reward and whether it can be paid through PayPal? I understand that a reward depends on your review and acceptance. Payment details can be provided privately after confirmation.

@soffi-ai

soffi-ai Bot commented Sep 8, 2026

Copy link
Copy Markdown
Soffi AI Summary

This PR adds Kueue to the platform's compatibility tracking system, which maps Kubernetes add-ons to their tested Kubernetes versions. Kueue had no prior entry in the compatibility database, so this contribution closes that gap by adding the full pipeline: scraper logic, fixture data, a generated compatibility table (12 representative rows from v0.9.5 through v0.19.3), and a manifest registration entry.

The scraper discovers stable chart versions from the official OCI registry (registry.k8s.io/kueue/charts/kueue), then reads each release's tagged README to extract the explicitly documented E2E-tested Kubernetes versions from the "Production Readiness status" section — deliberately avoiding expanding an open-ended installation minimum into assumed compatibility. Signature, attestation, build-metadata, and pre-release tags are filtered out; any missing or structurally changed source causes the scraper to fail before writing, preserving the existing file.

A pre-existing latent bug in the shared chart image extraction utility was discovered during live Helm templating: CRD schema properties named image (objects, not strings) caused a crash. A one-line type guard was added to skip non-string values while preserving actual image references.

The PR also introduces a scoped GitHub Actions workflow that runs the 14 offline unit/integration tests (covering both old and new README layouts, tag sorting, source failures, YAML writing/reduction, the CRD image-field crash, and repeatable output) using Python 3.13 and the existing scraper requirements file.

Changes

Kueue compatibility scraper and coverage

  • Adds the end-to-end Kueue compatibility pipeline: a Python scraper that discovers stable Helm chart versions from the official OCI registry and extracts E2E-tested Kubernetes versions from tagged READMEs, the generated static/compatibilities/kueue.yaml table (v0.9.5–v0.19.3), a manifest registration entry, fixture files for both old and new README formats, 14 offline tests (including a regression test for a crash on CRD schema properties named image), a fix for that crash in the shared image-extraction utility, a test-coverage README, and a scoped GitHub Actions workflow to run the offline tests on every relevant change. (7770a76)

Updated: 2026-09-08 08:26 UTC

Deploy in Soffi

@greptile-apps

greptile-apps Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds Kueue to the compatibility catalog and implements an OCI/tagged-README scraper for its explicitly tested Kubernetes versions. It also hardens Helm image extraction against non-string CRD schema fields and adds focused offline CI coverage.

  • Registers a generated 12-row Kueue compatibility table.
  • Filters stable OCI tags and fails closed when tagged compatibility sources are missing or malformed.
  • Prevents non-string image fields from crashing image collection.
  • Adds parser, writer, failure-preservation, and image-extraction regression tests.
  • The new workflow would benefit from immutable action and Python dependency resolution.

Confidence Score: 4/5

The functional changes appear safe to merge, with two non-blocking CI supply-chain hardening opportunities.

The Kueue scraper, generated compatibility data, and image-extraction fix have focused regression coverage and no established correctness failure; remaining comments concern reproducibility and hardening of the new test workflow.

Files Needing Attention: .github/workflows/compatibility-scraper-tests.yaml

Security Review

The workflow has read-only repository permissions and exposes no secrets, but its mutable action references and unconstrained exa-py/openai installations leave avoidable CI supply-chain variability.

Important Files Changed

Filename Overview
utils/compatibility/scrapers/kueue.py Adds stable chart-tag discovery, tagged README parsing, fail-closed source validation, and compatibility generation for Kueue.
utils/compatibility/utils.py Restricts collected image references to string-valued image fields while continuing traversal through structured values.
utils/compatibility/tests/test_kueue.py Covers tag filtering, both documented README layouts, source failures, repeatable YAML output, and rendered image extraction.
utils/compatibility/tests/test_chart_images.py Adds regression coverage for CRD schema properties and other non-string image fields.
static/compatibilities/kueue.yaml Adds generated Kueue metadata and representative compatibility rows from chart versions 0.9.5 through 0.19.3.
.github/workflows/compatibility-scraper-tests.yaml Adds scoped offline scraper tests with least-privilege permissions, but resolves actions and two installed dependencies mutably.

Reviews (1): Last reviewed commit: "Add Kueue compatibility scraper and char..." | Re-trigger Greptile

Comment on lines +22 to +23
- uses: actions/checkout@v6
- uses: actions/setup-python@v6

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.

P2 security Mutable action references

The new workflow resolves actions/checkout and actions/setup-python through mutable major-version tags. If either v6 tag is moved after review, pull-request and master jobs will execute different action code than was reviewed. Pin both actions to full commit SHAs so the CI code is immutable.

How this was verified: Both setup steps use mutable @v6 references and execute before the tests under a token limited to read-only repository contents.

cache: pip
cache-dependency-path: utils/compatibility/requirements.txt
- name: Install scraper dependencies
run: python -m pip install -r utils/compatibility/requirements.txt

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.

P2 security Unconstrained CI dependencies

This new pull-request workflow installs the shared requirements file even though exa-py and openai have no version constraints. Every matching CI run can therefore download and execute dependency versions published after the PR was reviewed. Add exact constraints or install from a lock file to make these test runs reproducible and reduce the dependency supply-chain surface.

How this was verified: The changed install step consumes utils/compatibility/requirements.txt, where exa-py and openai are unconstrained.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

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.

1 participant