Skip to main content

pruner-config

Understand, author, validate, or debug tekton-pruner ConfigMap configuration. Use when working with TTL-based or history-based pruning rules, namespace overrides, resource-group selectors, or per-resource annotations. Covers the full spec format, validation rules, and hierarchical override semantics.

Informations de source

Dépôt
tektoncd/pruner
Dernière activité de la source
8 juin 2026 à 07:46
Langue détectée de SKILL.md
anglais
Étoiles
6
Forks
20

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
pruner-config
description
Understand, author, validate, or debug tekton-pruner ConfigMap configuration. Use when working with TTL-based or history-based pruning rules, namespace overrides, resource-group selectors, or per-resource annotations. Covers the full spec format, validation rules, and hierarchical override semantics.
license
Apache-2.0
metadata
{"project":"tekton-pruner"}
allowed-tools
Read Bash(kubectl get:*) Bash(kubectl apply:*) Bash(kubectl describe:*)
# Pruner Configuration tekton-pruner is configured via a `ConfigMap` named `tekton-pruner-default-spec` in the `tekton-pipelines` namespace, plus optional per-namespace annotations. ## Configuration Hierarchy Settings are resolved in this order (most specific wins): ``` per-resource annotation └─ namespace-level ConfigMap entry └─ cluster-level default (tekton-pruner-default-spec) ``` See `docs/tutorials/namespace-configuration.md` and `docs/tutorials/history-based-pruning.md` for worked examples. ## ConfigMap Structure ```yaml apiVersion: v1 kind: ConfigMap metadata: name: tekton-pruner-default-spec namespace: tekton-pipelines data: global-config: | enforcedConfigLevel: global ttlSecondsAfterFinished: 3600 # delete 1h after completion successfulHistoryLimit: 3 failedHistoryLimit: 3 historyLimit: 100 namespaces: my-namespace: ttlSecondsAfterFinished: 600 successfulHistoryLimit: 5 ``` > **Note:** The global ConfigMap only reads the `global-config` data key. > Namespace overrides are nested under `namespaces:` within that key. > For selector-based rules, use the separate namespace ConfigMap > (`tekton-pruner-namespace-spec`) instead — see Resource-Group Selectors below. ## Key Fields | Field | Type | Description | |-------|------|-------------| | `enforcedConfigLevel` | string | Config level enforcement (`global`, `namespace`, or `resource`) | | `ttlSecondsAfterFinished` | int | Seconds after completion before deletion (0 = disabled) | | `successfulHistoryLimit` | int | Max successful runs (PipelineRun or TaskRun) to keep | | `failedHistoryLimit` | int | Max failed runs (PipelineRun or TaskRun) to keep | | `historyLimit` | int | Max runs to keep regardless of status (fallback when granular limits are not set) | ## Validation The admission webhook (`pkg/webhook/configmapvalidation.go`) validates all ConfigMap entries on create/update. Common validation errors: - Negative values for any limit field - TTL and history limit both set to `0` (would delete everything immediately) - Unknown keys in the spec YAML Validate locally by reviewing `pkg/config/config_validation_test.go`. ## Apply and Verify ```bash # Apply config kubectl apply -f config/600-tekton-pruner-default-spec.yaml # Check the webhook accepted it kubectl get configmap tekton-pruner-default-spec -n tekton-pipelines -o yaml # Watch controller logs for pruning activity kubectl -n tekton-pipelines logs deployment/tekton-pruner-controller -f | grep -E "pruned|TTL|history" ``` ## Resource-Group Selectors Advanced scoping by label selector — see `docs/tutorials/resource-groups.md`. **Important:** Selectors only work in **namespace-level ConfigMaps** (`tekton-pruner-namespace-spec`), not in the global ConfigMap. Selectors in global ConfigMaps are silently ignored. ```yaml apiVersion: v1 kind: ConfigMap metadata: name: tekton-pruner-namespace-spec namespace: my-namespace labels: app.kubernetes.io/part-of: tekton-pruner pruner.tekton.dev/config-type: namespace data: ns-config: | pipelineRuns: - selector: - matchLabels: pipeline: nightly-build successfulHistoryLimit: 1 ``` ## Per-Resource Annotations Override config at the individual resource level: ```yaml annotations: pruner.tekton.dev/ttlSecondsAfterFinished: "300" pruner.tekton.dev/successfulHistoryLimit: "2" pruner.tekton.dev/failedHistoryLimit: "1" ``` Annotation keys are defined in `pkg/config/constants.go`. Never hardcode annotation strings elsewhere. ## References - `docs/tutorials/getting-started.md` — first-time setup - `docs/tutorials/time-based-pruning.md` — TTL examples - `docs/tutorials/history-based-pruning.md` — history limit examples - `docs/configmap-validation.md` — validation rules reference - `config/600-tekton-pruner-default-spec.yaml` — default ConfigMap shipped with the release
Voir sur GitHub