覆盖Tekton全局管道运行超时



我遇到了一个问题,我需要同时触发多个Pipeline运行,而这些运行将花费更长的1小时。PipelineRun的全局超时默认为1小时,因此它会失败。管理Openshift集群的团队不想更改全局超时,所以我必须以某种方式覆盖它。

我使用的资源是EventListener、TriggerBinding、TriggerTemplate、Pipeline和PipelineRun。

我曾尝试在管道任务上设置超时,如:

runAfter:
- fetch-repository
taskRef:
kind: ClusterTask
name: buildah
timeout: "3h0m0s"

但是PipelineRun超时似乎具有优先级,因此它不起作用。

  • Openshift版本:4.9.35
  • K8s版本:v1.22.8
  • Tekton似乎安装了Openshift,找不到哪个版本,但可能非常新颖

有什么想法吗?

这是OpenShift的一个已知问题,我向redhat支持部门提交了一份关于这方面的功能请求。。。已经一年多了。。。

尽管您提到了使用EventListeners:在这种情况下,您应该能够强制自己的pipelinerun超时,设置TriggerTemplate。

试试这个:

apiVersion: triggers.tekton.dev/v1beta1
kind: TriggerTemplate
metadata:
name: foo
spec:
[...]
resourcetemplates:
- apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
generateName: foo-
spec:
timeout: 2h30m0s
[...]

唯一的问题是,你不能从OpenShift控制台使用它们。您需要确保使用了EventListener,启动该管道(例如:使用curl、oc插件…(,强制执行正确的超时配置。

您可以在PipelineRun:中指定超时

spec:
...
timeout: 12h0m0s

如果将其设置为0,则在遇到错误时会立即失败。目前,它在OpenShift Pipelines上工作,但可能会像在Tekton中一样被弃用(不是完全弃用,只是语法更改(。

最新更新