1.3. 查询结果和记录的 Tekton 结果
您可以使用 opc 命令行工具查询 Tekton 结果以获取结果和记录。要安装 opc 命令行工具,请为 tkn 命令行工具安装软件包。有关安装此软件包的步骤,请参阅安装 tkn。
您可以使用记录的名称和结果来检索其中的数据。
您可以使用通用表达式语言(CEL)查询搜索结果和记录。这些搜索显示结果或记录的 UUID。您可以使用提供的示例来创建对常见搜索类型的查询。您还可以使用参考信息来创建其他查询。
1.3.1. 准备 opc 工具环境以查询 Tekton Results 复制链接链接已复制到粘贴板!
在查询 Tekton 结果前,您必须为 opc 工具准备环境。
先决条件
-
已安装
opc工具。 -
使用 OpenShift CLI (
oc)登录到 OpenShift Container Platform 集群。
流程
输入以下命令将
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
$ export RESULTS_API=$(oc get route tekton-results-api-service -n openshift-pipelines --no-headers -o custom-columns=":spec.host"):443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令为 Tekton Results API 创建身份验证令牌:
oc create token <service_account>
$ oc create token <service_account>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <
service_account> 替换为 OpenShift Container Platform 服务帐户的名称,该帐户对 OpenShift Pipelines 运行管道运行和任务运行的命名空间具有读访问权限。保存此命令输出的字符串。
可选:创建
~/.config/tkn/results.yaml文件以使用 Tekton Results API 自动身份验证。该文件必须具有以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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。
流程
列出与管道运行和在命名空间中创建的任务对应的结果的名称。输入以下命令:
opc results result list --addr ${RESULTS_API} <namespace_name>$ opc results result list --addr ${RESULTS_API} <namespace_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
opc results result list --addr ${RESULTS_API} results-testing$ opc results result list --addr ${RESULTS_API} results-testingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
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
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 ISTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令列出结果中所有记录的名称:
opc results records list --addr ${RESULTS_API} <result_name>$ opc results records list --addr ${RESULTS_API} <result_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
opc results records list --addr ${RESULTS_API} results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed$ opc results records list --addr ${RESULTS_API} results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令从记录中检索管道运行或任务的 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))'$ 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 Copied! Toggle word wrap Toggle overflow 示例命令
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))'$ 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 Copied! Toggle word wrap Toggle overflow 可选:使用日志记录名称从记录中检索任务运行的日志信息。要获取日志记录名称,请将
记录替换为记录名称中的日志。输入以下命令:opc results logs get --addr ${RESULTS_API} <log_record_name> | jq -r .data | base64 -d$ opc results logs get --addr ${RESULTS_API} <log_record_name> | jq -r .data | base64 -dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
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$ 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 -dCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.3. 搜索结果 复制链接链接已复制到粘贴板!
您可以使用通用表达式语言(CEL)查询来搜索结果。例如,您可以找到管道运行的结果,这些结果没有成功。但是,大多数相关信息都不包含在结果对象中;若要根据名称、完成时间和其他数据搜索,请搜索记录。
先决条件
-
已安装
opc工具,并准备好其环境来查询 Tekton Results。
流程
输入以下命令使用 CEL 查询来搜索结果:
opc results result list --addr ${RESULTS_API} --filter="<cel_query>" <namespace-name>$ opc results result list --addr ${RESULTS_API} --filter="<cel_query>" <namespace-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将 < ;namespace_name > 替换为管道运行或任务运行的命名空间。
| 用途 | CEL 查询 |
|---|---|
| 所有失败的结果 |
|
|
结果所有管道运行包含注解 |
|
1.3.4. 搜索记录 复制链接链接已复制到粘贴板!
您可以使用通用表达式语言(CEL)查询搜索记录。因为每个记录包含管道运行或任务运行的完整 YAML 信息,您可以根据许多不同的条件查找记录。
先决条件
-
已安装
opc工具,并准备好其环境来查询 Tekton Results。
流程
输入以下命令使用 CEL 查询搜索记录:
opc results records list --addr ${RESULTS_API} --filter="<cel_query>" <namespace_name>/result/-$ opc results records list --addr ${RESULTS_API} --filter="<cel_query>" <namespace_name>/result/-Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <
;namespace_name> 替换为管道运行或任务运行的命名空间。或者,输入以下命令搜索单个结果中的记录:opc results records list --addr ${RESULTS_API} --filter="<cel_query>" <result_name>$ opc results records list --addr ${RESULTS_API} --filter="<cel_query>" <result_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<result_name> 替换为结果的全名。
| 用途 | CEL 查询 |
|---|---|
| 所有任务运行或管道运行的记录 |
|
|
|
|
|
所有由名为 |
|
|
所有管道运行和任务运行的记录从名为 |
|
|
所有管道运行的记录都从名为 |
|
|
所有任务的记录,其中 |
|
| 完成所有管道运行的记录时间超过五分钟 |
|
| 所有管道运行和任务运行的记录在 2023 年 10 月 7 日完成 |
|
| 所有管道运行的记录包括三个或更多任务 |
|
|
具有 |
|
|
所有管道运行的记录,其中包含 |
|
1.3.5. 搜索结果的参考信息 复制链接链接已复制到粘贴板!
您可以使用通用表达式语言(CEL)查询中的以下字段进行结果:
| CEL 字段 | 描述 |
|---|---|
|
|
创建 |
|
| 结果的唯一标识符。 |
|
|
添加到 |
|
| 结果摘要。 |
|
| 结果的创建时间。 |
|
| 结果的最后更新时间。 |
您可以使用 summary.status 字段来确定管道运行是否成功。此字段可以有以下值:
-
UNKNOWN -
SUCCESS -
失败 -
TIMEOUT (超时) -
CANCELLED
不要使用引号字符,如 " 或 ' 来为此字段提供值。
1.3.6. 搜索记录的参考信息 复制链接链接已复制到粘贴板!
您可以使用 Common Expression Language (CEL)查询记录中的以下字段:
| CEL 字段 | 描述 | 值 |
|---|---|---|
|
| 记录名称 | |
|
| 记录类型标识符 |
|
|
| 任务运行或管道运行的 YAML 数据。在日志记录中,此字段包含日志输出。 |
因为 data 字段包含任务运行或管道运行的整个 YAML 数据,所以您可以在 CEL 查询中使用此数据的所有元素。例如,data.status.completionTime 包含任务运行或管道运行的完成时间。