首页 > 其他分享 >Tekton Trigger TriggerBindings 基础

Tekton Trigger TriggerBindings 基础

时间:2023-12-05 16:34:31浏览次数:35  
标签:body name triggers dev Tekton Trigger value TriggerBindings tekton

TriggerBindings 概述

TriggerBinding的功能主要用于将Event中特定属性的值传递给TriggerTemplate上的参数从而完成其resourcetemplates中模板资源的实例化。
注意:Trigger使用参数名称将 TriggerBinding 参数与 TriggerTemplate 参数匹配。为了传递信息,绑定中使用的参数名称必须与模板中使用的参数名称匹配。

TriggerBindings 资源规范

spec字段中,主要定义params,每个Parameters主要是name和value两个字段组成
apiVersion: triggers.tekton.dev/v1beta1
kind: TriggerBinding
metadata:
  name: pipeline-binding
spec:
  params:
  - name: gitrevision                     # 为同一Trigger当中引用的TriggerTemplate上声明的某个参数的名称
    value: $(body.head_commit.id)         # 通常要引用Event中的特定属性,例如$(body.head_commit.id)

TriggerBindings 声明方式

内联绑定

声明绑定的最简单方法是在Trigger本身内
apiVersion: triggers.tekton.dev/v1beta1
kind: Trigger
metadata:
  name: push-trigger
spec:
  bindings:
  - name: gitrevision
    value: $(body.head_commit.id)
  - name: gitrepositoryurl
    value: $(body.repository.url)
  template:
    ref: git-clone-template

TriggerBindings 

定义 TriggerBindings

apiVersion: triggers.tekton.dev/v1beta1
kind: TriggerBinding
metadata:
  name: pipeline-binding
spec:
  params:
  - name: gitrevision
    value: $(body.head_commit.id)
  - name: gitrepositoryurl
    value: $(body.repository.url)
  - name: contenttype
    value: $(header.Content-Type)

引用 TriggerBindings

apiVersion: triggers.tekton.dev/v1beta1
kind: Trigger
metadata:
  name: push-trigger
spec:
  bindings:
  - ref: pipeline-binding
  template:
    ref: git-clone-template

ClusterTriggerBindings 

ClusterTriggerBinding 是集群范围内的 TriggerBinding,您可以在整个集群中重复使用它。可以在任何命名空间的任何Trigger中引用 ClusterTriggerBinding。可以在Trigger中指定多个 ClusterTriggerBinding,也可以在多个Trigger中指定相同的 ClusterTriggerBinding

定义 ClusterTriggerBindings 

apiVersion: triggers.tekton.dev/v1beta1
kind: ClusterTriggerBinding
metadata:
  name: pipeline-clusterbinding
spec:
  params:
    - name: gitrevision
      value: $(body.head_commit.id)
    - name: gitrepositoryurl
      value: $(body.repository.url)
    - name: contenttype
      value: $(header.Content-Type)

引用 ClusterTriggerBindings

引用 ClusterTriggerBinding 时,必须在绑定字段中指定种类值。默认值是 TriggerBinding,它表示命名空间的 TriggerBinding。
---
apiVersion: triggers.tekton.dev/v1beta1
kind: EventListener
metadata:
  name: listener-clustertriggerbinding
spec:
  serviceAccountName: tekton-triggers-example-sa
  triggers:
    - name: foo-trig
      bindings:
        - ref: pipeline-clusterbinding
          kind: ClusterTriggerBinding
        - ref: message-clusterbinding
          kind: ClusterTriggerBinding
      template:
        ref: pipeline-template

访问 HTTP JSON 格式数据

方法一

$(body.key1)
$(.body.key)

方法二

如果 $() 包装器嵌入到另一个 $() 包装器中,Tekton 会将最内层包装器的内容解析为 JSONPath 表达式
$($(body.b)) # Parsed as $(body.b)
$($($(body.b))) # Parsed as $(body.b)

Interceptors 访问overlays数据

interceptor可以添加可供 TriggerBinding 使用的其他有用数据。interceptor添加的数据可以在顶级extensions字段下访问,例如$(extensions.field-name).在以下示例中,CEL 拦截器添加一个字段,然后由trigger binding访问该字段
apiVersion: triggers.tekton.dev/v1beta1
kind: Trigger
metadata:
  name: push-trigger
spec:
  interceptors:
    - name: add-truncated-sha
      ref:
        name: "cel"
      params:
        - name: "overlays"
          value:
          - key: truncated_sha
            expression: "body.pull_request.head.sha.truncate(7)"
  bindings:
    - name: truncated_sha
      value: $(extensions.truncated_sha)
  template:
    ref: git-clone-template

访问 EventListener Event Context

EventListener 有一组内部数据点,这些数据点是为单个事件的完整处理而维护的。这些值可用于TriggerBinding对象。可以通过context参数访问此数据。
$(context.eventID) # access the internal eventID of the request

访问带有特殊字符的 json

要访问包含句点 (.) 的 JSON 键,必须使用反斜杠 (\.) 转义句点。
# Body contains a `tekton.dev` field: {"body": {"dev.tekton.dev/foo": "triggers"}}
$(body.dev\.tekton\.dev\/foo) -> "triggers"

TriggerBindings 示例

apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerBinding
metadata:
  name: event-binding
spec:
  params:
    - name: gitrevision
      value: $(body.head_commit.id)
    - name: gitrepositoryurl
      value: $(body.repository.url)
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerBinding
metadata:
  name: prod-env
spec:
  params:
    - name: environment
      value: prod
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerBinding
metadata:
  name: staging-env
spec:
  params:
    - name: environment
      value: staging
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
  name: listener
spec:
  triggers:
    - name: prod-trigger
      bindings:
        - ref: event-binding
        - ref: prod-env
      template:
        ref: pipeline-template
    - name: staging-trigger
      bindings:
        - ref: event-binding
        - ref: staging-env
      template:
        ref: pipeline-template

参考文档

https://tekton.dev/docs/triggers/triggerbindings/

标签:body,name,triggers,dev,Tekton,Trigger,value,TriggerBindings,tekton
From: https://www.cnblogs.com/wangguishe/p/17876606.html

相关文章

  • Tekton Trigger EventListener 基础
    EventListener概述EventListener是一个Kubernetes对象,用于侦听Kubernetes集群上指定端口上的事件。它公开了一个可寻址接收器,用于接收传入事件并指定一个或多个Triggers。sink是一个Kubernetes服务,在专用Pod内运行sink逻辑。每个Trigger又允许您指定一个或多个Trigge......
  • Tekton Trigger 基础
    TektonTrigger概述TektonTriggers是一个Tekton组件,它允许您从各种来源的事件中检测和提取信息,并基于该信息确定地实例化和执行TaskRuns和PipelineRuns。Tekton触发器还可以将从事件中提取的信息直接传递给TaskRuns和pipelinerun。在Kubernetes集群上安装TektonTriggers作为Te......
  • Tekton Trigger Interceptors 基础
    Interceptors概述Interceptor是针对特定平台的的事件处理器,在TriggerBinding之前运行。它允许您执行有效负载过滤、验证(使用秘密)、转换、定义和测试触发条件,以及实现其他有用的处理。一旦事件数据通过Interceptor,它就会在将有效负载数据传递到TriggerBinding之前转到Trigger......
  • Tekton 认证配置
    Tenton支持Secret类型GitDockerkubernetes.io/basic-authkubernetes.io/ssh-authkubernetes.io/basic-authkubernetes.io/dockercfgkubernetes.io/dockerconfigjson配置Git身份验证TentonSecrets存储路径~/.gitconfig文件或~/.ssh目录。配置basic-auth......
  • Tekton pipelineruns 基础
    pipelineruns概述PipelineRun允许你在集群上实例化和执行Pipeline。一个Pipeline指定一个或多个Tasks,按照期望的执行顺序执行。PipelineRun按照指定的顺序执行Pipeline中的Tasks,直到所有Tasks都成功执行或失败。PipelineRun会自动为Pipeline中的每个Task创建相应的taskrun。pi......
  • Tekton Pipelines 基础
    Pipelines概述Pipeline是Tasks的集合,作为持续集成流的一部分,您可以定义并按照特定的执行顺序排列这些Tasks。Pipeline中的每个Tasks在Kubernetes集群上作为Pod执行。您可以配置各种执行条件来满足您的业务需求。Pipeline使用When表达式when表达式input:被评估的内容,支持使用......
  • Tekton 基础
    Tekton概述Tekton是用于构建CI/CD系统的云原生解决方案。它由TektonPipelines(提供构建块)和支持组件(例如TektonCLI和TektonCatalog)组成,使Tekton成为一个完整的生态系统。Tekton是Linux基金会项目CD基金会的一部分。Tekton作为Kubernetes集群上的扩展安装和运......
  • Tekton TaskRun 基础
    TaskRun概述TaskRun允许您在集群上实例化和执行Task。任务指定执行容器映像的一个或多个Steps,每个容器映像执行特定的构建工作。TaskRun按照指定的顺序执行任务中的Steps,直到所有Steps执行成功或失败。TaskRun配置清单apiVersion:tekton.dev/v1#指定API版本。kind:T......
  • Tekton Tasks 基础
    Tasks概述Task是一系列Step的组合,每个Step主要负责运行特定的构建或交付工具从而完成相关的一次特定事项;Task以Kubernetes集群上Pod运行。Task是名称空间级别的资源。Tasks组成Parameters:是使得Task及Pipeline资源定义出的“模板”更加具有通用性的关键要素之一Steps:具体执......
  • 部署 Tekton Triggers v0.25.3
    环境要求1.运行1.18或更高版本的Kubernetes集群;2.集群上要安装了TektonPipelines;部署TektonTriggers下载TektonTriggers#wgethttps://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml#wgethttps://storage.googleapis.com/tekton-relea......