Skip to content

Instantly share code, notes, and snippets.

@jmcshane
Created February 6, 2021 03:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jmcshane/fb810c6b13da53c6de168b5a8c9a3294 to your computer and use it in GitHub Desktop.
Save jmcshane/fb810c6b13da53c6de168b5a8c9a3294 to your computer and use it in GitHub Desktop.
here=$(pwd)
cd $GOPATH/src/github.com/tektoncd/triggers
ko apply -f config/controller.yaml
ko apply -f config/webhook.yaml
cd $here
kubectl apply -f trigger.yaml
sleep 10
kubectl run curl --image=curlimages/curl -- /bin/sh -c "sleep 10000"
echo "This event will not generate a triggered pipelinerun"
kubectl exec -it curl -- curl http://el-eventlistener:8080 -H "X-Internal: match" -H "X-GitHub-Event: pull_request" --data '{"pull_request":{"head":{}}}' -vv
sleep 5
echo "Since this event matches the cel filter overlay, we will get an event generated by the internal trigger"
kubectl exec -it curl -- curl http://el-eventlistener:8080 -H "X-Internal: match" -H "X-GitHub-Event: pull_request" --data '{"pull_request":{"head":{"sha":"abc123987"}}}' -vv
apiVersion: triggers.tekton.dev/v1alpha1
kind: Trigger
metadata:
name: trigger
spec:
interceptors:
- cel:
filter: "header.match('X-GitHub-Event', 'pull_request')"
overlays:
- key: extensions.truncated_sha
expression: "body.pull_request.head.sha.truncate(7)"
triggers:
- ref: internal-trigger
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: Trigger
metadata:
name: internal-trigger
labels:
tekton.dev/sink: hidden
spec:
interceptors:
- cel:
filter: "header.match('X-Internal', 'match')"
overlays:
template:
ref: pipeline-template
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerTemplate
metadata:
name: pipeline-template
spec:
resourcetemplates:
- apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
generateName: simple-pipeline-run-
spec:
pipelineSpec:
tasks:
- name: task1
taskSpec:
steps:
- image: ubuntu
name: print-hi
script: |
echo hi
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: tekton-trigger-sa
namespace: tekton-pipelines
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: tektoncd-triggers-github-binding
namespace: tekton-pipelines
subjects:
- kind: ServiceAccount
name: tekton-trigger-sa
namespace: tekton-pipelines
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tekton-trigger
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tekton-triggers-clusterbinding
subjects:
- kind: ServiceAccount
name: tekton-trigger-sa
namespace: tekton-pipelines
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tekton-triggers-aggregate-view
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tekton-trigger-aggregate-view
subjects:
- kind: ServiceAccount
name: tekton-trigger-sa
namespace: tekton-pipelines
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tekton-aggregate-view
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: eventlistener
namespace: tekton-pipelines
spec:
serviceAccountName: tekton-trigger-sa
serviceType: LoadBalancer
namespaceSelector:
matchNames:
- tekton-pipelines
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment