1.4. 使用 opc 命令行工具查询 Tekton Results
您可以使用 opc
命令行工具查询 Tekton 结果以获取结果和记录。要安装 opc
命令行工具,请为 tkn
命令行工具安装软件包。有关安装此软件包的步骤,请参阅安装 tkn。
您可以使用记录的名称和结果来检索其中的数据。
您可以使用通用表达式语言(CEL)查询搜索结果和记录。这些搜索显示结果或记录的 UUID。您可以使用提供的示例为常见搜索类型创建查询。您还可以使用参考信息来创建其他查询。
1.4.1. 准备 opc 工具环境以查询 Tekton 结果 复制链接链接已复制到粘贴板!
在查询 Tekton 结果前,您必须为 opc
实用程序准备环境。
先决条件
- 已安装 Tekton Results。
-
已安装
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
$ export RESULTS_API=$(oc get route tekton-results-api-service -n openshift-pipelines --no-headers -o custom-columns=":spec.host"):443
Copy 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 保存此命令输出的字符串。
可选:创建
~/.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.4.2. 按名称查询结果和记录 复制链接链接已复制到粘贴板!
您可以使用其名称列出和查询结果和记录。
先决条件
- 已安装 Tekton Results。
-
已安装
opc
工具并准备其环境来查询 Tekton 结果。 -
安装了
jq
软件包。
流程
列出与管道运行对应的所有结果名称,以及在命名空间中创建的任务。输入以下命令:
opc results list --addr ${RESULTS_API} <namespace_name>
$ opc results list --addr ${RESULTS_API} <namespace_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
opc results list --addr ${RESULTS_API} results-testing
$ opc results list --addr ${RESULTS_API} results-testing
Copy 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 IST
Copy 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-a262bcf02bed
Copy 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 -d
Copy 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 -d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.3. 搜索结果 复制链接链接已复制到粘贴板!
您可以使用通用表达式语言(CEL)查询搜索结果。例如,您可以查找没有成功的管道运行的结果。但是,大部分相关信息都不包含在结果对象中;若要根据名称、完成时间和其他数据搜索,请搜索记录。
先决条件
- 已安装 Tekton Results。
-
已安装
opc
工具并准备其环境来查询 Tekton 结果。
流程
输入以下命令使用 CEL 查询搜索结果:
opc results list --addr ${RESULTS_API} --filter="<cel_query>" <namespace-name>
$ opc results list --addr ${RESULTS_API} --filter="<cel_query>" <namespace-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将 < namespace_name
> 替换为创建管道运行或任务运行的命名空间。
用途 | CEL 查询 |
---|---|
所有运行失败的结果 |
|
结果包括 an |
|
1.4.4. 搜索记录 复制链接链接已复制到粘贴板!
您可以使用通用表达式语言(CEL)查询搜索记录。当每个记录包含管道运行或任务运行的完整 YAML 信息时,您可以按照许多不同的条件查找记录。
先决条件
- 已安装 Tekton Results。
-
已安装
opc
工具并准备其环境来查询 Tekton 结果。
流程
输入以下命令使用 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.4.5. 搜索结果的参考信息 复制链接链接已复制到粘贴板!
您可以对结果使用通用表达式语言(CEL)查询中的以下字段:
CEL 字段 | 描述 |
---|---|
|
在其中创建 |
| 结果的唯一标识符。 |
|
在 |
| 结果摘要。 |
| 结果的创建时间。 |
| 结果的最后更新时间。 |
您可以使用 summary.status
字段来确定管道运行是否成功。此字段可以有以下值:
-
UNKNOWN
-
SUCCESS
-
失败
-
TIMEOUT (超时)
-
CANCELLED
不要使用引号,如 "
或 '
)来为此字段提供值。
1.4.6. 搜索记录的参考信息 复制链接链接已复制到粘贴板!
您可以对记录使用通用表达式语言(CEL)查询中的以下字段:
CEL 字段 | 描述 | 值 |
---|---|---|
| 记录名称 | |
| 记录类型标识符 |
|
| 任务运行或管道运行的 YAML 数据。在日志记录中,此字段包含日志输出。 |
因为 data
字段包含任务运行或管道运行的整个 YAML 数据,所以您可以在 CEL 查询中使用此数据的所有元素。例如,data.status.completionTime
包含任务运行或管道运行的完成时间。