TriggerTemplate 概述
TriggerTemplate 是一种资源,它指定您想要在 EventListener 检测到事件时实例化和/或执行的资源(例如 TaskRun 或 PipelineRun)的蓝图。它公开了您可以在资源模板中的任何位置使用的参数。
TriggerTemplates 支持的资源
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TriggerTemplates 资源规范
TriggerTemplate CRD遵循Kubernetes resource API规范,其spec字段主要由以下两个嵌套字段组成
apiVersion: triggers.tekton.dev/v1beta1
kind: TriggerTemplate
metadata:
name: pipeline-template
spec:
params: # 当前TriggerTemplate的参数,从TriggerBinding接受传值
- name: gitrevision
description: The git revision
default: main
resourcetemplates: # 用于定义资源模板,通常用于定义PipelineRun或TaskRun资源,资源的名称通常要使用generateName定义其前缀,而非使用name直接指定
- apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
服务器托管网 generateName: simple-pipeline-run-
spec:
pipelineRef:
name: simple-pipeline
params:
- name: message
value: $(tt.params.message) # resourcetemplates中的资源模板中的参数,通过引用TriggerTemplate的参数值完成实例化。引用格式: $(tt.params.)。
TriggerTemplates 注意事项
Tekton 将以下标签添加到 TriggerTemplate 内的所有资源模板:
tekton.dev/eventlistenter: 帮助进行housekeeping和垃圾收集。
tekton.dev/triggers-eventid: 用于跟踪特定事件创建的资源。
为了支持任意资源类型,Tekton 在内部将资源模板解析为字节 blob。因此,Tekton 仅在处理事件时而不是在创建 TriggerTemplate 时验证这些资源。因此,您只能在 TriggerTemplate 中指定 Tekton 资源。
从 Tekton Pipelines 0.8.0 开始,您可以将资源定义直接嵌入到 TriggerTemplate 定义中。为了防止创建和使用资源之间出现竞争条件,您必须将每个资源定义嵌入到使用该资源的 PipelineRun 或 TaskRun 中
$(uid) 变量对于您在 TriggerTemplate 中指定的资源模板隐式可用,具有随机值,就像 KubernetesgenerateName 元数据字段生成的后缀一样。这对于使用内部引用的资源模板非常有用。
TriggerTemplates Parameters
TriggerTemplate 允许您声明由关联的 TriggerBinding 和/或 EventListener 提供的参数,如下所示:
在 TriggerTemplate 定义的 params 部分中声明您的参数。
您必须指定名称,并且可以选择指定描述和默认值。
如果 Tekton 在关联的 TriggerBinding 中找不到相应的值,或者无法成功从 HTTP 标头或正文负载中提取该值,则它会为 TriggerTemplate 的 params 数组中的每个条目应用默认字段的值。
可以在 TriggerTemplate 的资源模板部分中引用 tt.params 以使 TriggerTemplate 可重用。
当您在资源模板定义中指定参数时,Tekton 会将指定的字符串替换为参数名称,例如 $(tt.params.name)。因此,简单的字符串和数值替换可以直接在 YAML 文件中正常工作。但是,如果字符串具有数字前缀,例如 123abcd,Tekton 可能会将其误解为数字并引发错误。在这种情况下,请将受影响的参数键用引号 (") 括起来。
TriggerTemplates JSON 对象
Tekton 不再将引号 (") 替换为转义引号 ("),并且不对资源模板中的变量执行任何转义。如果您将 JSON 对象作为变量嵌入到模板中,则不得用引号 (") 将它们括起来。如果您有使用转义引号的现有 TriggerTemplate,请添加注服务器托管网释来解决此行为更改。
JSON 对象
{
"title": "this is "demo" body",
"object": {
"name": "testing"
}
}
如果您的 TriggerBinding 引用 $(body.title),那么 Tekton 将其作为this is a "demo" body插入到您的 TriggerTemplate 中。要解决此问题,请按如下方式注释 TriggerTemplate
apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerTemplate
metadata:
name: escaped-tt
annotations:
triggers.tekton.dev/old-escape-quotes: "true"
spec:
params:
- name: title
description: The title from the incoming body
这样,Tekton 将值作为 this is a ""demo"" body 传递,这本身不是有效的 JSON 代码;但是,如果您在资源模板中使用带有 $(body.object) 的值,并专门将其作为带引号的字符串传递,则此解决方法将恢复正常操作。这对于解析命令中包含 JSON 代码的字符串也很有用。
TriggerTemplate 示例
apiVersion: triggers.tekton.dev/v1beta1
kind: TriggerTemplate
metadata:
name: pipeline-template
spec:
params:
- name: gitrevision
description: The git revision
default: main
- name: gitrepositoryurl
description: The git repository url
- name: message
description: The message to print
default: This is the default message
- name: contenttype
description: The Content-Type of the event
resourcetemplates:
- apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
generateName: simple-pipeline-run-
spec:
pipelineRef:
name: simple-pipeline
taskRunSpecs:
- pipelineTaskName:
ServiceAccountName:
params:
- name: message
value: $(tt.params.message)
- name: contenttype
value: $(tt.params.contenttype)
- name: git-revision
value: $(tt.params.gitrevision)
- name: git-url
value: $(tt.params.gitrepositoryurl)
workspaces:
- name: git-source
emptyDir: {}
参考文档
https://tekton.dev/docs/triggers/triggertemplates/
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
稀疏矩阵是一种特殊的矩阵,其非零元素数目远远少于零元素数目,并且非零元素分布没有规律。这种矩阵在实际应用中经常出现,例如在物理学、图形学和网络通信等领域。 稀疏矩阵其实也可以和一般的矩阵一样处理,之所以要把它区分开来进行特殊处理,是因为:一方面稀疏矩阵的存储空…