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.

Informações da origem

Repositório
tektoncd/pruner
Última atividade na origem
8 de junho de 2026 às 07:46
Idioma detectado do SKILL.md
inglês
Estrelas
6
Forks
20

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
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
Ver no GitHub