第 1 章 为 OpenShift Pipelines 观察使用 Tekton 结果


Tekton Results 是一个用于归档每个管道运行和任务运行的完整信息的服务。您可以根据需要修剪 PipelineRunTaskRun 资源,并使用 Tekton Results API 或 opc 命令行工具访问其 YAML 清单以及日志信息。

重要

Tekton Results 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

1.1. Tekton Results 概念

Tekton Results 归档管道运行,并以结果和记录的形式运行任务。

对于完成运行的每个 PipelineRunTaskRun 自定义资源(CR),Tekton Results 会创建一个 记录

结果 可包含一个或多个记录。记录始终是一个结果的一部分。

结果与管道运行对应,包括 PipelineRun CR 本身以及作为管道运行一部分启动的所有 TaskRun CR 的记录。

如果任务运行是直接启动的,不使用管道运行,则会为此任务运行创建一个结果。此结果包含同一任务运行的记录。

每个结果都有一个名称,其中包含创建 PipelineRunTaskRun CR 的命名空间以及 CR 的 UUID。结果名称的格式是 < namespace_name>/results/<parent_run_uuid >。在这个格式中,<parent_run_uuid > 是管道运行的 UUUD,或者直接启动的任务运行的其他部分。

结果名称示例

results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed

每个记录都有一个名称,其中包含记录的结果名称,以及与记录对应的 PipelineRunTaskRun 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

记录包括 TaskRunPipelineRun CR 的完整 YAML 清单,因为它在运行完成后存在。此清单包含运行的规格、为运行指定的任何注解,以及有关运行结果的某些信息,如完成的时间以及运行是否成功。

TaskRunPipelineRun CR 存在时,您可以使用以下命令查看 YAML 清单:

$ oc get pipelinerun <cr_name> -o yaml

Tekton Results 在 TaskRunPipelineRun 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 清单。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.