1.3. 使用 opc 命令行工具查询 Tekton Results


您可以使用 opc 命令行工具查询 Tekton 结果以获取结果和记录。要安装 opc 命令行工具,请为 tkn 命令行工具安装软件包。有关安装此软件包的步骤,请参阅安装 tkn

您可以使用记录的名称和结果来检索其中的数据。

您可以使用通用表达式语言(CEL)查询搜索结果和记录。这些搜索显示结果或记录的 UUID。您可以使用提供的示例来创建对常见搜索类型的查询。您还可以使用参考信息来创建其他查询。

1.3.1. 准备 opc 工具环境以查询 Tekton Results

在查询 Tekton 结果前,您必须为 opc 工具准备环境。

先决条件

  • 已安装 opc 工具。

流程

  1. 输入以下命令将 RESULTS_API 环境变量设置为到 Tekton Results API 的路由:

    $ export RESULTS_API=$(oc get route tekton-results-api-service -n openshift-pipelines --no-headers -o custom-columns=":spec.host"):443
    Copy to clipboard
  2. 输入以下命令为 Tekton Results API 创建身份验证令牌:

    $ oc create token <service_account>
    Copy to clipboard

    保存此命令输出的字符串。

  3. 可选:创建 ~/.config/tkn/results.yaml 文件以使用 Tekton Results API 自动身份验证。该文件必须具有以下内容:

    address: <tekton_results_route> 1
    token: <authentication_token> 2
    ssl:
       roots_file_path: /home/example/cert.pem 3
       server_name_override: tekton-results-api-service.openshift-pipelines.svc.cluster.local 4
     service_account:
       namespace: service_acc_1 5
       name: service_acc_1 6
    Copy to clipboard
    1
    到 Tekton Results API 的路由。使用与 RESULTS_API 设置的值相同的值。
    2
    oc create token 命令创建的身份验证令牌。如果您提供此令牌,它会覆盖 service_account 设置,并且 opc 使用这个令牌进行身份验证。
    3
    带有您为 API 端点配置的 SSL 证书的文件位置。
    4
    如果您为 OpenShift Pipelines 配置了一个自定义目标命名空间,请将 openshift-pipelines 替换为此命名空间的名称。
    5 6
    用于使用 Tekton Results API 进行身份验证的服务帐户名称。如果您提供了身份验证令牌,则不需要提供 service_account 参数。

    或者,如果您没有创建 ~/.config/tkn/results.yaml 文件,您可以使用- authtoken 选项将令牌传递给每个 opc 命令。

1.3.2. 根据名称查询结果和记录

您可以使用其名称列出和查询结果和记录。

先决条件

  • 已安装 opc 工具,并准备好其环境来查询 Tekton Results。
  • 安装了 jq 软件包。
  • 如果要查询日志信息,请将日志转发配置为 LokiStack。

流程

  1. 列出与管道运行和在命名空间中创建的任务对应的结果的名称。输入以下命令:

    $ opc results list --addr ${RESULTS_API} <namespace_name>
    Copy to clipboard

    示例命令

    $ opc results list --addr ${RESULTS_API} results-testing
    Copy to clipboard

    输出示例

    Name                                                          Start                                   Update
    results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed  2023-06-29 02:49:53 +0530 IST           2023-06-29 02:50:05 +0530 IST
    results-testing/results/ad7eb937-90cc-4510-8380-defe51ad793f  2023-06-29 02:49:38 +0530 IST           2023-06-29 02:50:06 +0530 IST
    results-testing/results/d064ce6e-d851-4b4e-8db4-7605a23671e4  2023-06-29 02:49:45 +0530 IST           2023-06-29 02:49:56 +0530 IST
    Copy to clipboard

  2. 输入以下命令列出结果中所有记录的名称:

    $ opc results records list --addr ${RESULTS_API} <result_name>
    Copy to clipboard

    示例命令

    $ opc results records list --addr ${RESULTS_API} results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed
    Copy to clipboard

    输出示例

    Name                                                                                                   Type                                    Start                                   Update
    results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed/records/e9c736db-5665-441f-922f-7c1d65c9d621  tekton.dev/v1.TaskRun              2023-06-29 02:49:53 +0530 IST           2023-06-29 02:49:57 +0530 IST
    results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed/records/5de23a76-a12b-3a72-8a6a-4f15a3110a3e  results.tekton.dev/v1alpha2.Log         2023-06-29 02:49:57 +0530 IST           2023-06-29 02:49:57 +0530 IST
    results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed/records/57ce92f9-9bf8-3a0a-aefb-dc20c3e2862d  results.tekton.dev/v1alpha2.Log         2023-06-29 02:50:05 +0530 IST           2023-06-29 02:50:05 +0530 IST
    results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed/records/e9a0c21a-f826-42ab-a9d7-a03bcefed4fd  tekton.dev/v1.TaskRun              2023-06-29 02:49:57 +0530 IST           2023-06-29 02:50:05 +0530 IST
    results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed/records/04e2fbf2-8653-405f-bc42-a262bcf02bed  tekton.dev/v1.PipelineRun          2023-06-29 02:49:53 +0530 IST           2023-06-29 02:50:05 +0530 IST
    results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed/records/e6eea2f9-ec80-388c-9982-74a018a548e4  results.tekton.dev/v1alpha2.Log         2023-06-29 02:50:05 +0530 IST           2023-06-29 02:50:05 +0530 IST
    Copy to clipboard

  3. 输入以下命令从记录中检索管道运行或任务的 YAML 清单:

    $ opc results records get --addr ${RESULTS_API} <record_name> \
      | jq -r .data.value | base64 -d | \
      xargs -0 python3 -c 'import sys, yaml, json; j=json.loads(sys.argv[1]); print(yaml.safe_dump(j))'
    Copy to clipboard

    示例命令

    $ opc results records get --addr ${RESULTS_API} \
      results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed/records/e9c736db-5665-441f-922f-7c1d65c9d621 | \
      jq -r .data.value | base64 -d | \
      xargs -0 python3 -c 'import sys, yaml, json; j=json.loads(sys.argv[1]); print(yaml.safe_dump(j))'
    Copy to clipboard

  4. 可选:使用日志记录名称从记录中检索任务运行的日志信息。要获取日志记录名称,请将 记录 替换为记录名称中的日志。输入以下命令:

    $ opc results logs get --addr ${RESULTS_API} <log_record_name> | jq -r .data | base64 -d
    Copy to clipboard

    示例命令

    $ opc results logs get --addr ${RESULTS_API} \
      results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed/logs/e9c736db-5665-441f-922f-7c1d65c9d621 | \
      jq -r .data | base64 -d
    Copy to clipboard

1.3.3. 搜索结果

您可以使用通用表达式语言(CEL)查询来搜索结果。例如,您可以找到管道运行的结果,这些结果没有成功。但是,大多数相关信息都不包含在结果对象中;若要根据名称、完成时间和其他数据搜索,请搜索记录。

先决条件

  • 已安装 opc 工具,并准备好其环境来查询 Tekton Results。

流程

  • 输入以下命令使用 CEL 查询来搜索结果:

    $ opc results list --addr ${RESULTS_API} --filter="<cel_query>" <namespace-name>
    Copy to clipboard

将 &lt ;namespace_name > 替换为管道运行或任务运行的命名空间。

表 1.1. 对结果的 CEL 查询示例
用途CEL 查询

所有失败的结果

!(summary.status == SUCCESS)

结果所有管道运行包含注解 an1ann2

summary.annotations.contains ('ann1')&& summary.annotations.contains ('ann2')&& summary.type=='PIPELINE_RUN'

1.3.4. 搜索记录

您可以使用通用表达式语言(CEL)查询搜索记录。因为每个记录包含管道运行或任务运行的完整 YAML 信息,您可以根据许多不同的条件查找记录。

先决条件

  • 已安装 opc 工具,并准备好其环境来查询 Tekton Results。

流程

  • 输入以下命令使用 CEL 查询搜索记录:

    $ opc results records list --addr ${RESULTS_API} --filter="<cel_query>" <namespace_name>/result/-
    Copy to clipboard

    将 &lt ;namespace_name > 替换为管道运行或任务运行的命名空间。或者,输入以下命令搜索单个结果中的记录:

    $ opc results records list --addr ${RESULTS_API} --filter="<cel_query>" <result_name>
    Copy to clipboard

    <result_name > 替换为结果的全名。

表 1.2. CEL 查询记录示例
用途CEL 查询

所有任务运行或管道运行的记录

!(data.status.conditions[0].status == 'True')

运行1的 TaskRunPipelineRun 自定义资源(CR)的名称的记录

data.metadata.name == 'run1'

所有由名为 run1PipelineRun CR 启动的任务记录

data_type == 'TASK_RUN' && data.metadata.labels['tekton.dev/pipelineRun'] == 'run1'

所有管道运行和任务运行的记录从名为 pipeline1Pipeline CR 创建

data.metadata.labels['tekton.dev/pipeline'] == 'pipeline1'

所有管道运行的记录都从名为 pipeline1Pipeline CR 创建

data.metadata.labels['tekton.dev/pipeline'] == 'pipeline1' && data_type == 'PIPELINE_RUN'

所有任务的记录,其中 TaskRun CR 名称使用 hello不足的位置

data.metadata.name.startsWith ('hello')&& data_type=='TASK_RUN'

完成所有管道运行的记录时间超过五分钟

data.status.completionTime - data.status.startTime > duration ('5m')&& data_type == 'PIPELINE_RUN'

所有管道运行和任务运行的记录在 2023 年 10 月 7 日完成

data.status.completionTime.getDate ()== 7 && data.status.completionTime.getMonth ()== 10 && data.status.completionTime.getFullYear ()== 2023

所有管道运行的记录包括三个或更多任务

size(data.status.pipelineSpec.tasks) >= 3 && data_type == 'PIPELINE_RUN'

具有 an1 注解的所有管道运行的记录

data.metadata.annotations.contains('ann1') && data_type == 'PIPELINE_RUN'

所有管道运行的记录,其中包含 an1 以及以 hello开头的 PipelineRun CR 的名称

data.metadata.annotations.contains ('ann1')&& data.metadata.name.startsWith ('hello')&& data_type == 'PIPELINE_RUN'

1.3.5. 搜索结果的参考信息

您可以使用通用表达式语言(CEL)查询中的以下字段进行结果:

表 1.3. CEL 查询结果中的字段
CEL 字段描述

创建 PipelineRunTaskRun 自定义资源(CR)的命名空间。

uid

结果的唯一标识符。

annotations

添加到 PipelineRunTaskRun CR 的注解。

summary

结果摘要。

create_time

结果的创建时间。

update_time

结果的最后更新时间。

您可以使用 summary.status 字段来确定管道运行是否成功。此字段可以有以下值:

  • UNKNOWN
  • SUCCESS
  • 失败
  • TIMEOUT (超时)
  • CANCELLED
注意

不要使用引号字符,如 "' 来为此字段提供值。

1.3.6. 搜索记录的参考信息

您可以使用 Common Expression Language (CEL)查询记录中的以下字段:

表 1.4. CEL 查询记录中的字段
CEL 字段描述

名称

记录名称

 

data_type

记录类型标识符

tekton.dev/v1.TaskRunadministrative_RUNtekton.dev/v1.PipelineRunPIPELINE_RUNresults.tekton.dev/v1alpha2.Log

data

任务运行或管道运行的 YAML 数据。在日志记录中,此字段包含日志输出。

 

因为 data 字段包含任务运行或管道运行的整个 YAML 数据,所以您可以在 CEL 查询中使用此数据的所有元素。例如,data.status.completionTime 包含任务运行或管道运行的完成时间。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat, Inc.