results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed
Tekton Results 是一项服务,用于存档每个管道运行和任务运行的完整信息。您可以根据需要修剪PipelineRun
和TaskRun
资源,并使用 Tekton Results API 或opc
命令行实用程序访问它们的 YAML 清单以及日志信息。
Tekton Results 仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您提前访问即将推出的产品功能,从而使客户能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅 技术预览功能支持范围。 |
Tekton Results 以结果和记录的形式存档管道运行和任务运行。
对于每个完成运行的PipelineRun
和TaskRun
自定义资源 (CR),Tekton Results 都会创建一个记录。
一个结果可以包含一个或多个记录。一个记录始终只属于一个结果。
结果对应于管道运行,并包括PipelineRun
CR 本身以及作为管道运行的一部分启动的所有TaskRun
CR 的记录。
如果直接启动任务运行(不使用管道运行),则会为该任务运行创建一个结果。此结果包含同一任务运行的记录。
每个结果都有一个名称,其中包含创建PipelineRun
或TaskRun
CR 的命名空间和 CR 的 UUID。结果名称的格式为<namespace_name>/results/<parent_run_uuid>
。在此格式中,<parent_run_uuid>
是管道运行的 UUID,或者直接启动的任务运行的 UUID。
results-testing/results/04e2fbf2-8653-405f-bc42-a262bcf02bed
每条记录都有一个名称,其中包含包含该记录的结果的名称,以及与该记录对应的PipelineRun
或TaskRun
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
记录包含TaskRun
或PipelineRun
CR 的完整 YAML 清单,其状态是在运行完成后存在的。此清单包含运行的规范、为运行指定的任何注释,以及有关运行结果的某些信息,例如完成时间和运行是否成功。
在TaskRun
或PipelineRun
CR 存在期间,可以使用以下命令查看 YAML 清单
$ oc get pipelinerun <cr_name> -o yaml
Tekton Results 在TaskRun
或PipelineRun
CR 删除后保留此清单,并使其可供查看和搜索。
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 清单)搜索结果和记录。
在安装 Tekton Results 之前,您必须完成几个准备步骤。
Tekton Results 使用 HTTPS 协议提供 REST API,这需要 SSL 证书。提供包含此证书的密钥。如果您有证书颁发机构 (CA) 提供的现有证书,请使用此证书,否则请创建自签名证书。
已安装openssl
命令行实用程序。
如果您没有 CA 提供的证书,请通过输入以下命令创建自签名证书
$ openssl req -x509 \
-newkey rsa:4096 \
-keyout key.pem \
-out cert.pem \
-days 365 \
-nodes \
-subj "/CN=tekton-results-api-service.openshift-pipelines.svc.cluster.local" \
-addext "subjectAltName = DNS:tekton-results-api-service.openshift-pipelines.svc.cluster.local"
将tekton-results-api-service.openshift-pipelines.svc.cluster.local
替换为您计划用于 Tekton Results API 的路由端点。
通过输入以下命令从证书创建传输安全层 (TLS) 密钥
$ oc create secret tls -n openshift-pipelines tekton-results-tls --cert=cert.pem --key=key.pem
如果您想使用 CA 提供的现有证书,请将cert.pem
替换为包含此证书的文件名。
Tekton Results 使用 PostgreSQL 数据库来存储数据。您可以将安装配置为使用与 Tekton Results 自动安装的 PostgreSQL 服务器,或者使用部署中已存在的外部 PostgreSQL 服务器。在这两种情况下,都需要提供包含数据库凭据的密钥。
完成以下步骤之一
如果您不需要使用外部 PostgreSQL 服务器,请通过输入以下命令在openshift-pipelines
命名空间中创建一个名为result
的数据库用户的密钥,并设置一个随机密码
$ oc create secret generic tekton-results-postgres \
--namespace=openshift-pipelines \
--from-literal=POSTGRES_USER=result \
--from-literal=POSTGRES_PASSWORD=$(openssl rand -base64 20)
在此命令和后续命令中,如果您为 OpenShift Pipelines 配置了自定义目标命名空间,请使用此命名空间的名称代替 |
如果您想使用外部 PostgreSQL 数据库服务器来存储 Tekton Results 数据,请通过输入以下命令创建一个包含此服务器凭据的密钥
$ oc create secret generic tekton-results-postgres \
--namespace=openshift-pipelines \
--from-literal=POSTGRES_USER=<user> \ (1)
--from-literal=POSTGRES_PASSWORD=<password> (2)
将<user>
替换为 Tekton Results 必须使用的 PostgreSQL 用户的用户名。将<password>
替换为同一帐户的密码。
Tekton Results 使用单独的存储来存储与管道运行和任务运行相关的日志信息。您可以配置以下任何一种类型的存储
Red Hat OpenShift Pipelines 集群上的持久卷声明 (PVC)
Google Cloud Storage
S3 存储桶存储
或者,您可以在 OpenShift Container Platform 集群上安装 LokiStack 和 OpenShift Logging,并将日志信息转发到 LokiStack。此选项为更高的负载提供了更好的可扩展性。
在 OpenShift Pipelines 1.16 中,Tekton Results 本地存储 PVC、Google Cloud Storage 和 S3 存储桶存储中的日志信息的功能已弃用,并计划在将来的版本中删除。 |
无论您配置哪种类型的日志信息存储或 LokiStack 转发,都可以使用 Tekton Results 命令行界面和 API 获取日志信息。
完成以下步骤之一
要使用 PVC,请完成以下步骤
创建一个名为pvc.yaml
的文件,其中包含 PVC 的以下定义
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: tekton-logs
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
通过输入以下命令应用定义
$ oc apply -n openshift-pipelines -f pvc.yaml
要使用 Google Cloud Storage,请完成以下步骤
使用gcloud
命令创建一个应用程序凭据文件。有关在文件中提供应用程序凭据的说明,请参阅 Google Cloud 文档中的使用 gcloud CLI 提供的用户凭据。
通过输入以下命令从应用程序凭据文件创建一个密钥
$ oc create secret generic gcs-credentials \
--from-file=$HOME/.config/gcloud/application_default_credentials.json \
-n openshift-pipelines
根据需要调整应用程序凭据文件的路径和文件名。
要使用 S3 存储桶存储,请完成以下步骤
创建一个名为s3_secret.yaml
的文件,其中包含以下内容
apiVersion: v1
kind: Secret
metadata:
name: my_custom_secret
namespace: tekton-pipelines
type: Opaque
stringData:
S3_BUCKET_NAME: bucket1 (1)
S3_ENDPOINT: https://example.localhost.com (2)
S3_HOSTNAME_IMMUTABLE: "false"
S3_REGION: region-1 (3)
S3_ACCESS_KEY_ID: "1234" (4)
S3_SECRET_ACCESS_KEY: secret_key (5)
S3_MULTI_PART_SIZE: "5242880"
1 | S3 存储桶的名称 |
2 | S3 API 端点 URL |
3 | S3 区域 |
4 | S3 访问密钥 ID |
5 | S3 密钥访问密钥 |
通过输入以下命令从文件创建一个密钥
$ oc create secret generic s3-credentials \
--from-file=s3_secret.yaml -n openshift-pipelines
要配置 LokiStack 转发,请完成以下步骤
在您的 OpenShift Container Platform 集群上,使用 Loki Operator 安装 LokiStack,并安装 OpenShift Logging Operator。
根据您安装的是 OpenShift Logging 版本 6 还是版本 5,为ClusterLogForwarder
自定义资源 (CR) 创建一个ClusterLogForwarder.yaml
清单文件,其中包含以下 YAML 清单之一
ClusterLogForwarder
CR 的 YAML 清单apiVersion: observability.openshift.io/v1
kind: ClusterLogForwarder
metadata:
name: collector
namespace: openshift-logging
spec:
inputs:
- application:
selector:
matchLabels:
app.kubernetes.io/managed-by: tekton-pipelines
name: only-tekton
type: application
managementState: Managed
outputs:
- lokiStack:
labelKeys:
application:
ignoreGlobal: true
labelKeys:
- log_type
- kubernetes.namespace_name
- openshift_cluster_id
authentication:
token:
from: serviceAccount
target:
name: logging-loki
namespace: openshift-logging
name: default-lokistack
tls:
ca:
configMapName: openshift-service-ca.crt
key: service-ca.crt
type: lokiStack
pipelines:
- inputRefs:
- only-tekton
name: default-logstore
outputRefs:
- default-lokistack
serviceAccount:
name: collector
ClusterLogForwarder
CR 的 YAML 清单apiVersion: "logging.openshift.io/v1"
kind: ClusterLogForwarder
metadata:
name: instance
namespace: openshift-logging
spec:
inputs:
- name: only-tekton
application:
selector:
matchLabels:
app.kubernetes.io/managed-by: tekton-pipelines
pipelines:
- name: enable-default-log-store
inputRefs: [ only-tekton ]
outputRefs: [ default ]
要在openshift-logging
命名空间中创建ClusterLogForwarder
CR,请以集群管理员用户身份使用 OpenShift CLI (oc
) 登录到您的 OpenShift Container Platform 集群,然后输入以下命令
$ oc apply -n openshift-logging ClusterLogForwarder.yaml
要安装 Tekton Results,您必须提供所需资源,然后创建并应用TektonResult
自定义资源 (CR)。当您应用TektonResult
自定义资源时,OpenShift Pipelines Operator 将安装 Results 服务。
您已使用 Operator 安装 OpenShift Pipelines。
您已准备了一个包含 SSL 证书的密钥。
您已准备了用于日志信息的存储。
您已准备了一个包含数据库凭据的密钥。
基于以下示例创建名为result.yaml
的资源定义文件。您可以根据需要调整设置。
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonResult
metadata:
name: result
spec:
targetNamespace: openshift-pipelines
logs_api: true
log_level: debug
db_port: 5432
db_host: tekton-results-postgres-service.openshift-pipelines.svc.cluster.local
logs_path: /logs
logs_type: File
logs_buffer_size: 32768
auth_disable: true
tls_hostname_override: tekton-results-api-service.openshift-pipelines.svc.cluster.local
db_enable_auto_migration: true
server_port: 8080
prometheus_port: 9090
将日志信息的存储或转发配置添加到此文件中
如果您配置了持久卷声明 (PVC),请添加以下行以提供 PVC 的名称
logging_pvc_name: tekton-logs
如果您配置了 Google Cloud Storage,请添加以下几行以提供密钥名称、凭据文件名和 Google Cloud Storage 存储桶的名称
gcs_creds_secret_name: gcs-credentials
gcs_creds_secret_key: application_default_credentials.json (1)
gcs_bucket_name: bucket-name (2)
1 | 提供创建密钥时使用的应用程序凭据文件的名称(不含路径)。 |
2 | 提供 Google Cloud Storage 中存储桶的名称。Tekton Chains 使用此存储桶存储管道运行和任务运行的日志信息。 |
如果您配置了 S3 存储桶存储,请添加以下行以提供 S3 密钥的名称
secret_name: s3-credentials
如果您配置了 LokiStack 转发,请添加以下几行以启用将日志信息转发到 LokiStack
loki_stack_name: logging-loki (1)
loki_stack_namespace: openshift-logging (2)
1 | LokiStack CR 的名称,通常为 logging-loki 。 |
2 | 部署 LokiStack 的命名空间名称,通常为 openshift-logging 。 |
可选:如果您想使用外部 PostgreSQL 数据库服务器来存储 Tekton Results 信息,请将以下几行添加到文件中
db_host: postgres.internal.example.com (1)
db_port: 5432 (2)
is_external_db: true
1 | PostgreSQL 服务器的主机名。 |
2 | PostgreSQL 服务器的端口。 |
通过输入以下命令来应用资源定义
$ oc apply -n openshift-pipelines -f result.yaml
通过输入以下命令来公开 Tekton Results 服务 API 的路由
$ oc create route -n openshift-pipelines \
passthrough tekton-results-api-service \
--service=tekton-results-api-service --port=8080
默认情况下,Tekton Results 会无限期地存储管道运行、任务运行、事件和日志。这会导致不必要的存储资源使用,并可能影响数据库性能。
您可以配置集群级别的 Tekton Results 保留策略以删除较旧的结果及其关联的记录和日志。您可以通过编辑 TektonResult
自定义资源 (CR) 来实现此目的。
您已安装 Tekton Results。
在 TektonResult
CR 中,配置 Tekton Results 的保留策略,如下例所示
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonResult
metadata:
name: result
spec:
options:
configMaps:
config-results-retention-policy:
data:
runAt: "3 5 * * 0" (1)
maxRetention: "30" (2)
1 | 以 cron 格式指定何时在数据库中运行修剪作业。此示例在每周日凌晨 5:03 运行作业。 |
2 | 指定在数据库中保留数据的天数。此示例保留数据 30 天。 |
您可以使用 opc
命令行工具查询 Tekton Results 的结果和记录。要安装 opc
命令行工具,请安装 tkn
命令行工具的软件包。有关安装此软件包的说明,请参阅 安装 tkn。
您可以使用记录和结果的名称来检索其中的数据。
您可以使用通用表达式语言 (CEL) 查询搜索结果和记录。这些搜索将显示结果或记录的 UUID。您可以使用提供的示例创建常见搜索类型的查询。您还可以使用参考信息创建其他查询。
在您可以查询 Tekton Results 之前,必须为 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
通过输入以下命令为 Tekton Results API 创建身份验证令牌
$ 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 (5)
1 | Tekton Results API 的路由。使用与您为 RESULTS_API 设置的值相同的值。 |
2 | 由 oc create token 命令创建的身份验证令牌。如果您提供此令牌,它将覆盖 service_account 设置,并且 opc 将使用此令牌进行身份验证。 |
3 | 包含您为 API 端点配置的 SSL 证书的文件的位置。 |
4 | 如果您为 OpenShift Pipelines 配置了自定义目标命名空间,请将 openshift-pipelines 替换为此命名空间的名称。 |
5 | 用于使用 Tekton Results API 进行身份验证的服务帐户的名称。如果您提供了身份验证令牌,则无需提供 service_account 参数。 |
或者,如果您不创建 ~/.config/tkn/results.yaml
文件,则可以通过使用 --authtoken
选项将令牌传递到每个 opc
命令。
您可以使用名称列出和查询结果和记录。
您已安装 Tekton Results。
您已安装 opc
工具并准备了其环境以查询 Tekton Results。
您已安装 jq
软件包。
列出与在命名空间中创建的管道运行和任务运行相对应的所有结果的名称。输入以下命令
$ opc results list --addr ${RESULTS_API} <namespace_name>
$ 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
通过输入以下命令列出结果中所有记录的名称
$ opc results records list --addr ${RESULTS_API} <result_name>
$ 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
通过输入以下命令从记录中检索管道运行或任务运行的 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} \
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))'
可选:使用日志记录名称从记录中检索任务运行的日志信息。要获取日志记录名称,请将记录名称中的 records
替换为 logs
。输入以下命令
$ 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
您可以使用通用表达式语言 (CEL) 查询搜索结果。例如,您可以查找未成功的管道运行的结果。但是,大多数相关信息不包含在结果对象中;要按名称、完成时间和其他数据进行搜索,请搜索记录。
您已安装 Tekton Results。
您已安装 opc
工具并准备了其环境以查询 Tekton Results。
通过输入以下命令使用 CEL 查询搜索结果
$ opc results list --addr ${RESULTS_API} --filter="<cel_query>" <namespace-name>
将 <namespace_name>
替换为创建管道运行或任务运行的命名空间。
目的 | CEL 查询 |
---|---|
所有失败运行的结果 |
|
包含注释 |
|
您可以使用通用表达式语言 (CEL) 查询搜索记录。由于每个记录都包含管道运行或任务运行的完整 YAML 信息,因此您可以根据许多不同的条件查找记录。
您已安装 Tekton Results。
您已安装 opc
工具并准备了其环境以查询 Tekton Results。
通过输入以下命令使用 CEL 查询搜索记录
$ 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>
将 <result_name>
替换为结果的全名。
目的 | CEL 查询 |
---|---|
所有失败的任务运行或流水线运行记录 |
|
|
|
所有由名为 |
|
所有由名为 |
|
所有由名为 |
|
所有 |
|
所有完成时间超过五分钟的流水线运行记录 |
|
2023年10月7日完成的所有流水线运行和任务运行记录 |
|
包含三个或更多任务的所有流水线运行记录 |
|
包含包含 |
|
包含包含 |
|
您可以在结果的通用表达式语言 (CEL) 查询中使用以下字段
CEL 字段 | 描述 |
---|---|
|
创建 |
|
结果的唯一标识符。 |
|
添加到 |
|
结果的摘要。 |
|
结果的创建时间。 |
|
结果的最后更新时间。 |
您可以使用 summary.status
字段来确定流水线运行是否成功。此字段可以具有以下值:
UNKNOWN
SUCCESS
FAILURE
TIMEOUT
CANCELLED
不要使用引号字符,例如 |
您可以在记录的通用表达式语言 (CEL) 查询中使用以下字段
CEL 字段 | 描述 | 值 |
---|---|---|
|
记录名称 |
|
|
记录类型标识符 |
|
|
任务运行或流水线运行的 YAML 数据。在日志记录中,此字段包含日志输出。 |
由于 data
字段包含任务运行或流水线运行的完整 YAML 数据,因此您可以在 CEL 查询中使用此数据的全部元素。例如,data.status.completionTime
包含任务运行或流水线运行的完成时间。