1.3. 使用 opc 命令行工具查询 Tekton Results
您可以使用 opc
命令行工具查询 Tekton 结果以获取结果和记录。要安装 opc
命令行工具,请为 tkn
命令行工具安装软件包。有关安装此软件包的步骤,请参阅安装 tkn。
您可以使用记录的名称和结果来检索其中的数据。
您可以使用通用表达式语言(CEL)查询搜索结果和记录。这些搜索显示结果或记录的 UUID。您可以使用提供的示例来创建对常见搜索类型的查询。您还可以使用参考信息来创建其他查询。
1.3.1. 准备 opc 工具环境以查询 Tekton Results
在查询 Tekton 结果前,您必须为 opc
工具准备环境。
先决条件
-
已安装
opc
工具。
流程
输入以下命令将
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 clipboardCopied$ export RESULTS_API=$(oc get route tekton-results-api-service -n openshift-pipelines --no-headers -o custom-columns=":spec.host"):443
输入以下命令为 Tekton Results API 创建身份验证令牌:
oc create token <service_account>
Copy to clipboardCopied$ oc create token <service_account>
保存此命令输出的字符串。
可选:创建
~/.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 clipboardCopiedaddress: <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
- 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 list --addr ${RESULTS_API} <namespace_name>
Copy to clipboardCopied$ opc results list --addr ${RESULTS_API} <namespace_name>
示例命令
opc results list --addr ${RESULTS_API} results-testing
Copy to clipboardCopied$ opc results list --addr ${RESULTS_API} results-testing
输出示例
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 clipboardCopiedName 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
输入以下命令列出结果中所有记录的名称:
opc results records list --addr ${RESULTS_API} <result_name>
Copy to clipboardCopied$ opc results records list --addr ${RESULTS_API} <result_name>
示例命令
opc results records list --addr ${RESULTS_API} results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed
Copy to clipboardCopied$ opc results records list --addr ${RESULTS_API} results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed
输出示例
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 clipboardCopiedName 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
输入以下命令从记录中检索管道运行或任务的 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 clipboardCopied$ 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} \ 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 clipboardCopied$ 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 logs get --addr ${RESULTS_API} <log_record_name> | jq -r .data | base64 -d
Copy to clipboardCopied$ opc results logs get --addr ${RESULTS_API} <log_record_name> | 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 -d
Copy to clipboardCopied$ 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
1.3.3. 搜索结果
您可以使用通用表达式语言(CEL)查询来搜索结果。例如,您可以找到管道运行的结果,这些结果没有成功。但是,大多数相关信息都不包含在结果对象中;若要根据名称、完成时间和其他数据搜索,请搜索记录。
先决条件
-
已安装
opc
工具,并准备好其环境来查询 Tekton Results。
流程
输入以下命令使用 CEL 查询来搜索结果:
opc results list --addr ${RESULTS_API} --filter="<cel_query>" <namespace-name>
Copy to clipboardCopied$ opc results list --addr ${RESULTS_API} --filter="<cel_query>" <namespace-name>
将 < ;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/-
Copy to clipboardCopied$ opc results records list --addr ${RESULTS_API} --filter="<cel_query>" <namespace_name>/result/-
将 <
;namespace_name
> 替换为管道运行或任务运行的命名空间。或者,输入以下命令搜索单个结果中的记录:opc results records list --addr ${RESULTS_API} --filter="<cel_query>" <result_name>
Copy to clipboardCopied$ opc results records list --addr ${RESULTS_API} --filter="<cel_query>" <result_name>
将
<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
包含任务运行或管道运行的完成时间。