From f93fcb794c4f25f7241d87df4ab1830d5f5c4b19 Mon Sep 17 00:00:00 2001 From: Harshith-umesh Date: Thu, 23 Jul 2026 12:40:36 -0400 Subject: [PATCH 1/2] docs: document Tekton timeout configuration Add a Timeouts subsection to Section 8 (Tekton Pipelines and Tasks) explaining the PipelineRun-level timeouts set by Fournos and the cluster-wide default-timeout-minutes ConfigMap that can override individual TaskRun timeouts. Co-authored-by: Cursor --- Fournos_Design_Document.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Fournos_Design_Document.md b/Fournos_Design_Document.md index 061fa5c..4d2c8d2 100644 --- a/Fournos_Design_Document.md +++ b/Fournos_Design_Document.md @@ -318,6 +318,27 @@ Every Pipeline must carry a `fournos.dev/resolve-image` annotation with the full Completion detection is handled by the operator's timer polling PipelineRun conditions — no callback task is needed. +### Timeouts + +Fournos sets PipelineRun-level timeouts when creating the Tekton PipelineRun (see `fournos/core/tekton.py`): + +| Timeout scope | Default | Description | +| ------------- | ------- | ----------- | +| `pipeline` | 25h | Overall PipelineRun deadline | +| `tasks` | 24h | Maximum wall-clock time for all non-finally tasks | +| `finally` | 1h | Maximum wall-clock time for finally tasks (cleanup, artifact export) | + +**Cluster-wide Tekton default**: Tekton also applies a cluster-wide `default-timeout-minutes` from the `config-defaults` ConfigMap in the `openshift-pipelines` namespace. This default applies to **individual TaskRuns** that do not have an explicit timeout. If this value is lower than the PipelineRun `tasks` timeout, TaskRuns will be killed early even though the PipelineRun allows more time. + +To prevent this, set the cluster-wide default higher than the PipelineRun task timeout: + +```bash +oc patch configmap config-defaults -n openshift-pipelines \ + -p '{"data":{"default-timeout-minutes":"5940"}}' # 99 hours +``` + +This ensures individual TaskRuns never hit the cluster default before the PipelineRun-level timeout. + ## 9. Kueue configuration [config/kueue-cluster-config.yaml](config/kueue-cluster-config.yaml): From 988ab1cc65254dd389c834f41ea6c0ec42abcba9 Mon Sep 17 00:00:00 2001 From: Harshith-umesh Date: Thu, 23 Jul 2026 16:20:18 -0400 Subject: [PATCH 2/2] docs: reference Fournos settings fields for timeout config Co-authored-by: Cursor --- Fournos_Design_Document.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Fournos_Design_Document.md b/Fournos_Design_Document.md index 4d2c8d2..65fe1cd 100644 --- a/Fournos_Design_Document.md +++ b/Fournos_Design_Document.md @@ -320,17 +320,19 @@ Completion detection is handled by the operator's timer polling PipelineRun cond ### Timeouts -Fournos sets PipelineRun-level timeouts when creating the Tekton PipelineRun (see `fournos/core/tekton.py`): +Fournos sets PipelineRun-level timeouts when creating the Tekton PipelineRun (see [`fournos/core/tekton.py`](fournos/core/tekton.py)). The values are configured via the operator settings in [`fournos/settings.py`](fournos/settings.py): -| Timeout scope | Default | Description | -| ------------- | ------- | ----------- | -| `pipeline` | 25h | Overall PipelineRun deadline | -| `tasks` | 24h | Maximum wall-clock time for all non-finally tasks | -| `finally` | 1h | Maximum wall-clock time for finally tasks (cleanup, artifact export) | +| Setting field | Tekton scope | Default | Description | +| -------------------------- | ------------ | ---------- | ----------- | +| `pipeline_timeout` | `pipeline` | `25h0m0s` | Overall PipelineRun deadline | +| `pipeline_tasks_timeout` | `tasks` | `24h0m0s` | Maximum wall-clock time for all non-finally tasks | +| `pipeline_finally_timeout` | `finally` | `1h0m0s` | Maximum wall-clock time for finally tasks (cleanup, artifact export) | -**Cluster-wide Tekton default**: Tekton also applies a cluster-wide `default-timeout-minutes` from the `config-defaults` ConfigMap in the `openshift-pipelines` namespace. This default applies to **individual TaskRuns** that do not have an explicit timeout. If this value is lower than the PipelineRun `tasks` timeout, TaskRuns will be killed early even though the PipelineRun allows more time. +These are Go duration strings and can be overridden via environment variables (`FOURNOS_PIPELINE_TIMEOUT`, `FOURNOS_PIPELINE_TASKS_TIMEOUT`, `FOURNOS_PIPELINE_FINALLY_TIMEOUT`) or by modifying the operator Deployment. -To prevent this, set the cluster-wide default higher than the PipelineRun task timeout: +**Cluster-wide Tekton default**: Tekton also applies a cluster-wide `default-timeout-minutes` from the `config-defaults` ConfigMap in the `openshift-pipelines` namespace. This default applies to **individual TaskRuns** that do not have an explicit timeout. If this value is lower than `pipeline_tasks_timeout`, TaskRuns will be killed early even though the PipelineRun allows more time. + +To prevent this, set the cluster-wide default higher than `pipeline_tasks_timeout`: ```bash oc patch configmap config-defaults -n openshift-pipelines \