Gas
Gas

Reputation: 18050

How to use single eventlistener for multiple tekton pipelines?

I'd like to have single eventlistener that would trigger different pipelines based on the git repo name.

Upvotes: 1

Views: 811

Answers (1)

Gas
Gas

Reputation: 18050

For the api v1alpha1 it can be done like this:

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
  name: event-listener-yf57o5
spec:
  serviceAccountName: pipeline
  triggers:
    - name: app1Trigger
      bindings:
        - kind: ClusterTriggerBinding
          ref: github-push
      interceptors:
        - params:
            - name: filter
              value: body.repository.name.matches('app1name-')
          ref:
            kind: ClusterInterceptor
            name: cel
      template:
        ref: trigger-template-app1-hh2im8
    - name: app2trigger
      bindings:
        - kind: ClusterTriggerBinding
          ref: github-push
      interceptors:
        - params:
            - name: filter
              value: body.repository.name.matches('app2name-')
          ref:
            kind: ClusterInterceptor
            name: cel
      template:
        ref: trigger-template-app2-5yoj99

Where the trigger-template can be like this (for completes):

apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerTemplate
metadata:
  name: trigger-template-app2-5yoj99
spec:
  params:
    - name: git-revision
    - name: git-commit-message
    - name: git-repo-url
    - name: git-repo-name
    - name: content-type
    - name: pusher-name
  resourcetemplates:
    - apiVersion: tekton.dev/v1beta1
      kind: PipelineRun
      metadata:
        generateName: app2-pipeline-
        labels:
          tekton.dev/pipeline: app2-pipeline
      spec:
        params:
          - name: APP_NAME
            value: app2
          - name: GIT_REPO
            value: $(tt.params.git-repo-url)
          - name: GIT_REVISION
            value: $(tt.params.git-revision)
        pipelineRef:
          name: app2-pipeline
        workspaces:
          - name: workspace
            volumeClaimTemplate:
              metadata:
                labels:
                  tekton.dev/pipeline: app2-pipeline
              spec:
                accessModes:
                  - ReadWriteOnce
                resources:
                  requests:
                    storage: 1Gi

Upvotes: 1

Related Questions