Adding Triggers to our Application:
Now letโs add a TriggerTemplate, TriggerBinding, and an EventListener to our project.
Trigger Template
A TriggerTemplate
is a resource which has parameters that can be substituted anywhere within the resources of template.
The definition of our TriggerTemplate is given in 03-triggers/02-template.yaml
.
Copy apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerTemplate
metadata:
name: vote-app
spec:
params:
- name: git-repo-url
description: The git repository url
- name: git-revision
description: The git revision
default: master
- name: git-repo-name
description: The name of the deployment to be created / patched
resourcetemplates:
- apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: $(params.git-repo-name)-git-repo-$(uid)
spec:
type: git
params:
- name: revision
value: $(params.git-revision)
- name: url
value: $(params.git-repo-url)
- apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: $(params.git-repo-name)-image-$(uid)
spec:
type: image
params:
- name: url
value: image-registry.openshift-image-registry.svc:5000/pipelines-tutorial/$(params.git-repo-name):latest
- apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
name: build-deploy-$(params.git-repo-name)-$(uid)
spec:
serviceAccountName: pipeline
pipelineRef:
name: build-and-deploy
resources:
- name: git-repo
resourceRef:
name: $(params.git-repo-name)-git-repo-$(uid)
- name: image
resourceRef:
name: $(params.git-repo-name)-image-$(uid)
params:
- name: deployment-name
value: $(params.git-repo-name)
Run the following command to apply Triggertemplate.
Copy oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/master/03_triggers/02_template.yaml
Trigger Binding
TriggerBindings is a map that enables you to capture fields from an event and store them as parameters and replace them in triggerTemplate whenever an event occurs.
The definition of our TriggerBinding is given in 03-triggers/01_binding.yaml
.
Copy apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerBinding
metadata:
name: vote-app
spec:
params:
- name: git-repo-url
value: $(body.repository.url)
- name: git-repo-name
value: $(body.repository.name)
- name: git-revision
value: $(body.head_commit.id)
The exact paths (keys) of the parameter we need can be found by examining the event payload (eg: GitHub events).
Run the following command to apply Triggertemplate.
Copy oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/master/03_triggers/01_binding.yaml
Event Listener
This component sets up a Service and listens for events. It also connects a TriggerTemplate to a TriggerBinding, into an addressable endpoint (the event sink)
The definition for our EventListener can be found in 03-triggers/03_event_listener.yaml
.
Copy apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: vote-app
spec:
serviceAccountName: pipeline
triggers:
- bindings:
- name: vote-app
template:
name: vote-app
Run the following command to create Triggertemplate.
Copy oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/master/03_triggers/03_event_listener.yaml
Note : EventListener will setup a Service. We need to expose that Service as an OpenShift Route to make it publicly accessible.
Run below command to expose eventlistener service as a route
Copy oc expose svc el-vote-app