This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
See AGENTS.md for detailed code style guidelines, test patterns, and advanced examples.
Helm charts repository for SUSE Observability. The main product chart is stable/suse-observability/. Charts with "stackstate" in the name are deprecated and should be ignored.
Published charts live under stable/. Subcharts consumed only as file:// deps of a published parent live under local/ and are pinned to version: "*" — they do not need version bumps when modified, and changes to them trigger a rebuild + auto pre-release bump of their parent.
go test ./stable/suse-observability/test/... # All tests for main chart
go test ./stable/suse-observability/test/... -run TestFeatureName # Single test
go test -v ./stable/suse-observability/test/... -run TestFeatureName # Verbose
go test ./stable/<chart>/itest/... # Integration tests
go test ./... # All testshelm dependencies build stable/suse-observability # Update dependencies
./stable/suse-observability/update-chart-dependencies.sh # Helper for subchart deps
helm lint stable/suse-observability # Lint chart
helm template my-release stable/suse-observability -f values.yaml # Render templatespre-commit install && pre-commit install-hooks # Setup
pre-commit run --all-files # Run all hooks
pre-commit run helmlint --all-files # Run specific hookFor tasks involving updatecli pipelines — adding/removing tracked images, changing tag filters, modifying the update pipeline, or debugging image version bumps — see UPDATECLI.md for full documentation of the pipeline architecture, target chain, tag format patterns, and local testing workflow.
stable/- Independently published Helm charts. Key charts:suse-observability(main),suse-observability-agent,suse-observability-values, plus internal operations charts.local/- Local-only subcharts consumed viafile://deps by published charts (common,elasticsearch,hbase,kafka,clickhouse,zookeeper,victoria-metrics-single,anomaly-detection,opentelemetry-collector,prometheus-elasticsearch-exporter,pull-secret,kafkaup-operator,kubernetes-rbac-agent,suse-observability-sizing). Pinned toversion: "*"by consumers, so theirChart.yamlversion field does not need to be bumped on changes. The membership oflocal/is enforced by.jsonnet-libs/extras/helm_chart_repo/variables.libsonnet(public_charts/internal_chartsmaps).helmtestutil/- Custom Go test utilities wrapping Terratest. ProvidesRenderHelmTemplate(),RenderHelmTemplateError(),RenderHelmTemplateOptsNoError(), andNewKubernetesResources()for parsing rendered output into typed K8s objects (Deployments, StatefulSets, ConfigMaps, Services, etc.).gitlab-ci.jsonnet- CI pipeline source. Generates.gitlab-ci.yml(auto-generated, never edit manually). Build/test/publish jobs are generated only for published charts (stable/); local charts get lightweight validate/test jobs but no version-bump check or publish.scripts/- Build/publish/version-bump scripts
Tests live in stable/<chart>/test/ with test value files in test/values/. Test values use descriptive naming: feature_enabled.yaml, feature_missing_required.yaml, feature_invalid_value.yaml.
// Successful render
output := helmtestutil.RenderHelmTemplate(t, "suse-observability", "values/full.yaml", "values/feature.yaml")
resources := helmtestutil.NewKubernetesResources(t, output)
// Expected error
err := helmtestutil.RenderHelmTemplateError(t, "suse-observability", "values/invalid.yaml")
// With helm.Options for SetValues overrides
output := helmtestutil.RenderHelmTemplateOptsNoError(t, "suse-observability", &helm.Options{
ValuesFiles: []string{"values/full.yaml"},
SetValues: map[string]string{"global.backup.enabled": "true"},
})- README.md files in chart directories are auto-generated from
README.md.gotmplvia helm-docs. Never edit them manually. .gitlab-ci.ymlis auto-generated from.gitlab-ci.jsonnet. Never edit manually.- Document values in
values.yamlusing helm-docs comment format:# key.subkey -- Description. - Go imports order: stdlib, external, internal (
gitlab.com/StackVista/DevOps/helm-charts/helmtestutil). - Test naming:
Test<Feature><Scenario>(e.g.,TestAuthenticationLdapMissingValues). - YAML: 2-space indent, camelCase keys, quote ambiguous strings, newline at EOF.
- Shell scripts: Must pass shellcheck. Use
gawkinstead ofawk. - Go version: 1.24.0+