3

我在 gitlab 管道中有以下代码,导致某种竞争条件:

kubectl apply -f pipelineRun.yaml
tkn pipelinerun logs -f pipeline-run

tkn命令立即退出,因为 pipelineRun 对象尚未创建。这个问题有一个非常好的解决方案:

kubectl apply -f pipelineRun.yaml
kubectl wait --for=condition=Running --timeout=60s pipelinerun/pipeline-run
tkn pipelinerun logs -f pipeline-run

不幸的是,这没有按预期工作,因为Running它似乎不是 pipelineRun 对象的有效条件。所以我的问题是:pipelineRun 对象的有效条件是什么?

4

2 回答 2

0

TektonTaskRuns并且PipelineRun只使用类型的条件Succeeded

例子:

conditions:
  - lastTransitionTime: "2020-05-04T02:19:14Z"
    message: "Tasks Completed: 4, Skipped: 0"
    reason: Succeeded
    status: "True"
    type: Succeeded

Succeeded文档中提供了适用于该条件的不同状态和消息:

作为旁注,API 中有一个活动超时。但是,CLI 选项并未显示该超时。您可以为此创建一个tkn 功能请求

于 2021-11-08T10:47:56.163 回答
0

我没有搜索太远,但看起来他们只有从 knative.dev 项目导入的两种条件类型?

https://github.com/tektoncd/pipeline/blob/main/vendor/knative.dev/pkg/apis/condition_types.go#L32

上面的链接是从管道源代码中导入的条件类型,看起来 Tekton 只使用“Ready”和“Succeeded”。

const (
    // ConditionReady specifies that the resource is ready.
    // For long-running resources.
    ConditionReady ConditionType = "Ready"
    // ConditionSucceeded specifies that the resource has finished.
    // For resource which run to completion.
    ConditionSucceeded ConditionType = "Succeeded"
)

但在项目的其他地方可能还有其他这种性质的进口。

于 2021-06-29T19:54:29.123 回答