• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 18781055656
51%

Build:
DEFAULT BRANCH: main
Ran 24 Oct 2025 01:26PM UTC
Jobs 1
Files 298
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

24 Oct 2025 01:21PM UTC coverage: 47.176% (+0.02%) from 47.153%
18781055656

push

github

web-flow
Configure chart-testing to install all charts (#2310)

This fixes a critical issue where Helm chart tests fail when PRs only
modify the operator chart without bumping the operator-crds chart version.

Problem:
--------
By default, 'ct install' only installs charts that have changed in a PR
(detected by comparing to the target branch). The operator chart depends
on the operator-crds chart, but this dependency is not explicitly declared
in Chart.yaml. When a PR modifies only the operator chart:

1. ct detects only the operator chart as changed
2. ct installs ONLY the operator chart (not operator-crds)
3. The operator pod starts but immediately crashes with:
   "unable to retrieve the complete list of server APIs:
    toolhive.stacklok.dev/v1alpha1: no matches for toolhive.stacklok.dev/v1alpha1"
4. This happens because the operator tries to create field indexes for
   CRD fields at startup (e.g., MCPServer.Spec.GroupRef in main.go:82-96)

Root Cause:
-----------
The operator and operator-crds charts have an implicit dependency:
- The operator image includes code that requires CRDs to exist at startup
- The charts are separate and the dependency is not declared
- chart-testing's default behavior is to only test changed charts

Previous Workaround:
--------------------
PRs had to manually bump both chart versions together (see PR #2284),
but this is error-prone and not obvious to contributors.

Solution:
---------
Set 'all: true' in ct-install.yaml to ensure chart-testing always
installs all charts in the chart-dirs, regardless of which ones changed.
This ensures the CRDs are always present before the operator starts.

This is the recommended approach when charts have dependencies that
aren't explicitly declared in Chart.yaml dependencies.

Alternative Solutions Considered:
----------------------------------
1. Declare dependency in Chart.yaml - Would work but requires managing
   chart repositories and complicates local development
2. Combine charts - Wou... (continued)

18752 of 39749 relevant lines covered (47.18%)

15.62 hits per line

Uncovered Existing Lines

Lines Coverage ∆ File
3
43.16
-0.7% pkg/transport/stdio.go
4
65.26
10.53% pkg/secrets/keyring/keyctl_linux.go
Jobs
ID Job ID Ran Files Coverage
1 18781055656.1 24 Oct 2025 01:26PM UTC 298
47.18
GitHub Action Run
Source Files on build 18781055656
  • Tree
  • List 298
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #18781055656
  • 5b8af181 on github
  • Prev Build on main (#18777274298)
  • Next Build on main (#18782838268)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc