第 1 章 为 OpenShift Pipelines 观察使用 Tekton 结果
Tekton Results 是一个用于归档每个管道运行和任务运行的完整信息的服务。您可以根据需要修剪 PipelineRun
和 TaskRun
资源,并使用 Tekton Results API 或 opc
命令行工具访问其 YAML 清单以及日志信息。
Tekton Results 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
1.1. Tekton Results 概念
Tekton Results 归档管道运行,并以结果和记录的形式运行任务。
对于完成运行的每个 PipelineRun
和 TaskRun
自定义资源(CR),Tekton Results 会创建一个 记录。
结果 可包含一个或多个记录。记录始终是一个结果的一部分。
结果与管道运行对应,包括 PipelineRun
CR 本身以及作为管道运行一部分启动的所有 TaskRun
CR 的记录。
如果任务运行是直接启动的,不使用管道运行,则会为此任务运行创建一个结果。此结果包含同一任务运行的记录。
每个结果都有一个名称,其中包含创建 PipelineRun
或 TaskRun
CR 的命名空间以及 CR 的 UUID。结果名称的格式是 < namespace_name>/results/<parent_run_uuid
>。在这个格式中,<parent_run_uuid
> 是管道运行的 UUUD,或者直接启动的任务运行的其他部分。
结果名称示例
results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed
每个记录都有一个名称,其中包含记录的结果名称,以及与记录对应的 PipelineRun
或 TaskRun
CR 的 UUID。结果名称的格式是 < namespace_name>/results/<parent_run_uuid>/results/<run_uuid>
。
记录名称示例
results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed/records/e9c736db-5665-441f-922f-7c1d65c9d621
记录包括 TaskRun
或 PipelineRun
CR 的完整 YAML 清单,因为它在运行完成后存在。此清单包含运行的规格、为运行指定的任何注解,以及有关运行结果的某些信息,如完成的时间以及运行是否成功。
当 TaskRun
或 PipelineRun
CR 存在时,您可以使用以下命令查看 YAML 清单:
$ oc get pipelinerun <cr_name> -o yaml
Tekton Results 在 TaskRun
或 PipelineRun
CR 被删除后保留此清单,并使其可用于查看和搜索。
管道在完成后运行的 YAML 清单示例
kind: PipelineRun spec: params: - name: message value: five timeouts: pipeline: 1h0m0s pipelineRef: name: echo-pipeline taskRunTemplate: serviceAccountName: pipeline status: startTime: "2023-08-07T11:41:40Z" conditions: - type: Succeeded reason: Succeeded status: "True" message: 'Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0' lastTransitionTime: "2023-08-07T11:41:49Z" pipelineSpec: tasks: - name: echo-task params: - name: message value: five taskRef: kind: Task name: echo-task-pipeline params: - name: message type: string completionTime: "2023-08-07T11:41:49Z" childReferences: - kind: TaskRun name: echo-pipeline-run-gmzrx-echo-task apiVersion: tekton.dev/v1 pipelineTaskName: echo-task metadata: uid: 62c3b02e-f12b-416c-9771-c02af518f6d4 name: echo-pipeline-run-gmzrx labels: tekton.dev/pipeline: echo-pipeline namespace: releasetest-js5tt finalizers: - chains.tekton.dev/pipelinerun generation: 2 annotations: results.tekton.dev/log: releasetest-js5tt/results/62c3b02e-f12b-416c-9771-c02af518f6d4/logs/c1e49dd8-d641-383e-b708-e3a02b6a4378 chains.tekton.dev/signed: "true" results.tekton.dev/record: releasetest-js5tt/results/62c3b02e-f12b-416c-9771-c02af518f6d4/records/62c3b02e-f12b-416c-9771-c02af518f6d4 results.tekton.dev/result: releasetest-js5tt/results/62c3b02e-f12b-416c-9771-c02af518f6d4 generateName: echo-pipeline-run- managedFields: - time: "2023-08-07T11:41:39Z" manager: kubectl-create fieldsV1: f:spec: .: {} f:params: {} f:pipelineRef: .: {} f:name: {} f:metadata: f:generateName: {} operation: Update apiVersion: tekton.dev/v1 fieldsType: FieldsV1 - time: "2023-08-07T11:41:40Z" manager: openshift-pipelines-controller fieldsV1: f:metadata: f:labels: .: {} f:tekton.dev/pipeline: {} operation: Update apiVersion: tekton.dev/v1 fieldsType: FieldsV1 - time: "2023-08-07T11:41:49Z" manager: openshift-pipelines-chains-controller fieldsV1: f:metadata: f:finalizers: .: {} v:"chains.tekton.dev/pipelinerun": {} f:annotations: .: {} f:chains.tekton.dev/signed: {} operation: Update apiVersion: tekton.dev/v1 fieldsType: FieldsV1 - time: "2023-08-07T11:41:49Z" manager: openshift-pipelines-controller fieldsV1: f:status: f:startTime: {} f:conditions: {} f:pipelineSpec: .: {} f:tasks: {} f:params: {} f:completionTime: {} f:childReferences: {} operation: Update apiVersion: tekton.dev/v1 fieldsType: FieldsV1 subresource: status - time: "2023-08-07T11:42:15Z" manager: openshift-pipelines-results-watcher fieldsV1: f:metadata: f:annotations: f:results.tekton.dev/log: {} f:results.tekton.dev/record: {} f:results.tekton.dev/result: {} operation: Update apiVersion: tekton.dev/v1 fieldsType: FieldsV1 resourceVersion: "126429" creationTimestamp: "2023-08-07T11:41:39Z" deletionTimestamp: "2023-08-07T11:42:23Z" deletionGracePeriodSeconds: 0 apiVersion: tekton.dev/v1
Tekton Results 还会创建一个日志记录,其中包含作为管道运行或任务运行的一部分运行的所有工具的日志信息。
您可以根据其名称访问每个结果和记录。您还可以使用通用表达式语言(CEL)查询根据其包含的信息搜索结果和记录,包括 YAML 清单。