0
点赞
收藏
分享

微信扫一扫

tekton EventListener资源

云上笔记 2022-12-16 阅读 75

公众号:

tekton EventListener资源_2d


什么是EventListener

连接 TriggerBinding 和 TriggerTemplate 到事件接收器,使用从各个 TriggerBinding 中提取的参数来创建 TriggerTemplate 中指定的 resources,同样通过 ​​interceptor​​ 字段来指定外部服务对事件属性进行预处理

资源详解

triggers

ServiceAccountName

name

bindings

template

eventListener/triggers/sa-rbac.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
name: tekton-triggers-example-sa
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: tekton-triggers-example-minimal
rules:
# EventListeners need to be able to fetch all namespaced resources
- apiGroups: ["triggers.tekton.dev"]
resources: ["eventlisteners", "triggerbindings", "triggertemplates", "triggers"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
# configmaps is needed for updating logging config
resources: ["configmaps"]
verbs: ["get", "list", "watch"]
# Permissions to create resources in associated TriggerTemplates
- apiGroups: ["tekton.dev"]
resources: ["pipelineruns", "pipelineresources", "taskruns"]
verbs: ["create"]
- apiGroups: [""]
resources: ["serviceaccounts"]
verbs: ["impersonate"]
- apiGroups: ["policy"]
resources: ["podsecuritypolicies"]
resourceNames: ["tekton-triggers"]
verbs: ["use"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: tekton-triggers-example-binding
subjects:
- kind: ServiceAccount
name: tekton-triggers-example-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: tekton-triggers-example-minimal
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: tekton-triggers-example-clusterrole
rules:
# EventListeners need to be able to fetch any clustertriggerbindings
- apiGroups: ["triggers.tekton.dev"]
resources: ["clustertriggerbindings", "clusterinterceptors"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tekton-triggers-example-clusterbinding
subjects:
- kind: ServiceAccount
name: tekton-triggers-example-sa
namespace: tekton
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tekton-triggers-example-clusterrole

eventListener/triggers/task-pipeline.yaml

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: say-hello
spec:
params:
- name: contenttype
description: The Content-Type of the event
type: string
resources:
inputs:
- name: git-source
type: git
steps:
- name: say-hi
image: bash
command: ["bash", "-c"]
args:
- echo -e 'Hello Triggers!\nContent-Type is $(params.contenttype)'
---
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: say-message
spec:
params:
- name: message
description: The message to print
default: This is the default message
type: string
resources:
inputs:
- name: git-source
type: git
steps:
- name: say-message
image: bash
command: ["bash", "-c"]
args:
- echo '$(params.message)'
---
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: say-bye
spec:
resources:
inputs:
- name: git-source
type: git
steps:
- name: say-bye
image: bash
command: ["bash", "-c"]
args:
- echo 'Goodbye Triggers!'
---
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: simple-pipeline
spec:
params:
- name: message
description: The message to print
default: This is the default message
type: string
- name: contenttype
description: The Content-Type of the event
type: string
resources:
- name: git-source
type: git
tasks:
- name: say-hello
taskRef:
name: say-hello
params:
- name: contenttype
value: $(params.contenttype)
resources:
inputs:
- name: git-source
resource: git-source
- name: say-message
runAfter: [say-hello]
taskRef:
name: say-message
params:
- name: message
value: $(params.message)
resources:
inputs:
- name: git-source
resource: git-source
- name: say-bye
runAfter: [say-message]
taskRef:
name: say-bye
resources:
inputs:
- name: git-source
resource: git-source

eventListener/triggers/trigger-template.yaml

apiVersion: triggers.tekton.dev/v1alpha1
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/v1beta1
kind: PipelineRun
metadata:
generateName: simple-pipeline-run-
spec:
pipelineRef:
name: simple-pipeline
params:
- name: message
value: $(tt.params.message)
- name: contenttype
value: $(tt.params.contenttype)
resources:
- name: git-source
resourceSpec:
type: git
params:
- name: revision
value: $(tt.params.gitrevision)
- name: url
value: $(tt.params.gitrepositoryurl)

eventListener/triggers/message-binding.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerBinding
metadata:
name: message-binding
spec:
params:
- name: message
value: Hello from the Triggers EventListener!

eventListener/triggers/pipeline-binding.yaml

apiVersion: triggers.tekton.dev/v1alpha1
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)

eventListener/triggers/listener.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: foo-trig
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template


curl -v -H 'X-GitHub-Event: pull_request' -H 'X-Hub-Signature: sha1=9c971b694ecd99a5753653032e5ceb332e29f2d1' -H 'Content-Type: application/json' -d '{"action": "opened", "pull_request":{"head":{"sha": "28911bbb5a3e2ea034daf1f6be0a822d50e31e73"}},"repository":{"url": "https://github.com/tektoncd/triggers.git"}}' http://10.68.194.93:8080


interceptors

Event Interceptors can take several different forms today:

  • ​​Webhook Interceptors​​
  • ​​GitHub Interceptors​​
  • ​​GitLab Interceptors​​
  • ​​Bitbucket Interceptors​​
  • ​​CEL Interceptors​​

webhook

eventListener/interceptors/webhook-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
name: gh-validate
namespace: tekton
spec:
replicas: 1
selector:
matchLabels:
app: gh-validate
template:
metadata:
labels:
app: gh-validate
spec:
serviceAccountName: default
containers:
- name: validate
image: registry.cn-shanghai.aliyuncs.com/hxpdocker/webhook-interceptors:latest
env:
- name: GITHUB_SECRET_TOKEN
valueFrom:
secretKeyRef:
name: github-secret
key: secret-token
---
apiVersion: v1
kind: Service
metadata:
name: gh-validate
namespace: tekton
spec:
type: ClusterIP
selector:
app: gh-validate
ports:
- protocol: TCP
port: 80
targetPort: 8080

eventListener/interceptors/github-secret.yaml

apiVersion: v1
kind: Secret
metadata:
name: github-secret
type: Opaque
stringData:
secretToken: "1234567"

eventListener/interceptors/webhook-listener.yaml

apiVersion: v1
kind: Secret
metadata:
name: github-secret
type: Opaque
stringData:
secretToken: "1234567"
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: foo-trig
interceptors:
- ref:
name: "github"
params:
- name: "secretRef"
value:
secretName: github-secret
secretKey: secretToken
- name: "eventTypes"
value: ["pull_request"]
- webhook:
header:
- name: Foo-Trig-Header1
value: string-value
- name: Foo-Trig-Header2
value:
- array-val1
- array-val2
objectRef:
kind: Service
name: gh-validate
apiVersion: v1
namespace: tekton
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template

curl -v -H 'X-GitHub-Event: pull_request' -H 'X-Hub-Signature: sha1=9c971b694ecd99a5753653032e5ceb332e29f2d1' -H 'Content-Type: application/json' -d '{"action": "opened", "pull_request":{"head":{"sha": "28911bbb5a3e2ea034daf1f6be0a822d50e31e73"}},"repository":{"url": "https://github.com/tektoncd/triggers.git"}}' http://10.68.194.93:8080

github
eventListener/interceptors/github-secret.yaml

apiVersion: v1
kind: Secret
metadata:
name: github-secret
type: Opaque
stringData:
secretToken: "1234567"

eventListener/interceptors/github-01.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: foo-trig
interceptors:
- github:
eventTypes: ["pull_request"]
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template


curl -v -H 'X-GitHub-Event: pull_request' -H 'X-Hub-Signature: sha1=9c971b694ecd99a5753653032e5ceb332e29f2d1' -H 'Content-Type: application/json' -d '{"action": "opened", "pull_request":{"head":{"sha": "28911bbb5a3e2ea034daf1f6be0a822d50e31e73"}},"repository":{"url": "https://github.com/tektoncd/triggers.git"}}' http://10.68.194.93:8080

eventListener/interceptors/github-02.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: foo-trig
interceptors:
- ref:
name: "github"
params:
- name: "secretRef"
value:
secretName: github-secret
secretKey: secretToken
- name: "eventTypes"
value: ["pull_request"]
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template

curl -v -H 'X-GitHub-Event: pull_request' -H 'X-Hub-Signature: sha1=9c971b694ecd99a5753653032e5ceb332e29f2d1' -H 'Content-Type: application/json' -d '{"action": "opened", "pull_request":{"head":{"sha": "28911bbb5a3e2ea034daf1f6be0a822d50e31e73"}},"repository":{"url": "https://github.com/tektoncd/triggers.git"}}' http://10.68.194.93:8080


产生X-Hub-Signature

​​Free Online HMAC Generator / Checker Tool (MD5, SHA-256, SHA-512) - FreeFormatter.com​​

gitlab
eventListener/interceptors/gitlab-secret.yaml

apiVersion: v1
kind: Secret
metadata:
name: gitlab-secret
type: Opaque
stringData:
secretToken: "1234567"

eventListener/interceptors/gitlab-listener.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: foo-trig
interceptors:
- name: "verify-gitlab-payload"
ref:
name: "gitlab"
kind: ClusterInterceptor
params:
- name: secretRef
value:
secretName: "gitlab-secret"
secretKey: "secretToken"
- name: eventTypes
value:
- "Push Hook"
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template

gitlab-push-event.json

{
"object_kind": "push",
"event_name": "push",
"before": "1a1736ec3d7b03349b31218a2f2c572c7c7206d6",
"after": "1a1736ec3d7b03349b31218a2f2c572c7c7206d6",
"ref": "refs/heads/main",
"checkout_sha": "1a1736ec3d7b03349b31218a2f2c572c7c7206d6",
"message": null,
"user_id": 111448,
"user_name": "Dibyo Mukherjee",
"user_username": "dibyom",
"user_email": "",
"user_avatar": "https://secure.gravatar.com/avatar/1d56773f447d86b8ffa33efb7a5d0cb5?s=80&d=identicon",
"project_id": 16507326,
"project": {
"id": 16507326,
"name": "triggers",
"description": "",
"web_url": "https://gitlab.com/dibyom/triggers",
"avatar_url": null,
"git_ssh_url": "git@gitlab.com:dibyom/triggers.git",
"git_http_url": "https://gitlab.com/dibyom/triggers.git",
"namespace": "Dibyo Mukherjee",
"visibility_level": 20,
"path_with_namespace": "dibyom/triggers",
"default_branch": "main",
"ci_config_path": null,
"homepage": "https://gitlab.com/dibyom/triggers",
"url": "git@gitlab.com:dibyom/triggers.git",
"ssh_url": "git@gitlab.com:dibyom/triggers.git",
"http_url": "https://gitlab.com/dibyom/triggers.git"
},
"commits": [
{
"id": "1a1736ec3d7b03349b31218a2f2c572c7c7206d6",
"message": "Add new file",
"timestamp": "2020-01-24T17:05:48+00:00",
"url": "https://gitlab.com/dibyom/triggers/-/commit/1a1736ec3d7b03349b31218a2f2c572c7c7206d6",
"author": {
"name": "Dibyo Mukherjee",
"email": "foo@bar.com"
},
"added": ["Readme.md"],
"modified": [],
"removed": []
}
],
"total_commits_count": 1,
"push_options": {},
"repository": {
"name": "triggers",
"url": "https://github.com/tektoncd/triggers.git",
"description": "",
"homepage": "https://gitlab.com/dibyom/triggers",
"git_http_url": "https://gitlab.com/dibyom/triggers.git",
"git_ssh_url": "git@gitlab.com:dibyom/triggers.git",
"visibility_level": 20
}
}

curl -v \
-H 'X-GitLab-Token: 1234567' \
-H 'X-Gitlab-Event: Push Hook' \
-H 'Content-Type: application/json' \
--data-binary "@gitlab-push-event.json" \
http://10.68.194.93:8080

bitbucket
eventListener/interceptors/bitbucket-secret.yaml

apiVersion: v1
kind: Secret
metadata:
name: bitbucket-secret
type: Opaque
stringData:
secretToken: "1234567"

eventListener/interceptors/bitbucket-binding.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: TriggerBinding
metadata:
name: bitbucket-binding
spec:
params:
- name: gitrevision
value: $(body.changes[0].ref.displayId)
- name: gitrepositoryurl
value: $(body.repository.links.clone[0].href)

eventListener/interceptors/bitbucket-listener.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: foo-trig
interceptors:
- ref:
name: "bitbucket"
params:
- name: secretRef
value:
secretName: bitbucket-secret
secretKey: secretToken
- name: eventTypes
value:
- repo:refs_changed
bindings:
- ref: bitbucket-binding
- ref: message-binding
template:
ref: pipeline-template


curl -v \
-H 'X-Event-Key: repo:refs_changed' \
-H 'X-Hub-Signature: sha1=e3978add92171e0b3a5b37539064d784d0b1b731' \
-d '{"repository": {"links": {"clone": [{"href": "https://github.com/tektoncd/triggers.git", "name": "http"}, {"href": "ssh://git@localhost:7999/~test/helloworld.git", "name": "ssh"}]}}, "changes": [{"ref": {"displayId": "main"}}]}' \
http://10.68.194.93:8080

cel
eventListener/interceptors/cel-01.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: cel-trig-with-matches
interceptors:
- ref:
name: "cel"
params:
- name: "filter"
value: "header.match('X-GitHub-Event', 'pull_request')"
- name: "overlays"
value:
- key: truncated_sha
expression: "body.pull_request.head.sha.truncate(7)"
bindings:
- name: sha
value: $(extensions.truncated_sha)
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template

curl -v -H 'X-GitHub-Event: pull_request' -H 'X-Hub-Signature: sha1=9c971b694ecd99a5753653032e5ceb332e29f2d1' -H 'Content-Type: application/json' -d '{"action": "opened", "pull_request":{"head":{"sha": "28911bbb5a3e2ea034daf1f6be0a822d50e31e73"}},"repository":{"url": "https://github.com/tektoncd/triggers.git"}}' http://10.68.194.93:8080

compareSecret
eventListener/interceptors/cel-02.yaml

apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
token: dGVzdC1zZWNyZXQ=
---
apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: cel-trig-with-matches
interceptors:
- ref:
name: "cel"
params:
- name: "filter"
value: "'test-secret'.compareSecret('token', 'mysecret')"
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template

curl -v -H 'X-GitHub-Event: pull_request' -H 'X-Hub-Signature: sha1=9c971b694ecd99a5753653032e5ceb332e29f2d1' -H 'Content-Type: application/json' -d '{"action": "opened", "pull_request":{"head":{"sha": "28911bbb5a3e2ea034daf1f6be0a822d50e31e73"}},"repository":{"url": "https://github.com/tektoncd/triggers.git"}}' http://10.68.194.93:8080

triggerRef
eventListener/interceptors/triggerRef-trigger.yaml

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)"
bindings:
- ref: pipeline-binding
template:
ref: pipeline-template

eventListener/interceptors/triggerRef-listener.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- triggerRef: trigger

curl -v -H 'X-GitHub-Event: pull_request' -H 'X-Hub-Signature: sha1=9c971b694ecd99a5753653032e5ceb332e29f2d1' -H 'Content-Type: application/json' -d '{"action": "opened", "pull_request":{"head":{"sha": "28911bbb5a3e2ea034daf1f6be0a822d50e31e73"}},"repository":{"url": "https://github.com/tektoncd/triggers.git"}}' http://10.68.194.93:8080


serviceaccount
eventListener/interceptors/serviceaccount-listener.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: foo-trig
serviceAccountName: tekton-triggers-example-sa
interceptors:
- github:
eventTypes: ["pull_request"]
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template

curl -v -H 'X-GitHub-Event: pull_request' -H 'X-Hub-Signature: sha1=9c971b694ecd99a5753653032e5ceb332e29f2d1' -H 'Content-Type: application/json' -d '{"action": "opened", "pull_request":{"head":{"sha": "28911bbb5a3e2ea034daf1f6be0a822d50e31e73"}},"repository":{"url": "https://github.com/tektoncd/triggers.git"}}' http://10.68.194.93:8080

template/ spec
eventListener/interceptors/template-spec-listener.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: foo-trig
interceptors:
- github:
eventTypes: ["pull_request"]
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
spec:
params:
- name: "message"
- name: gitrevision
description: The git revision
default: main
resourceTemplates:
- apiVersion: "tekton.dev/v1beta1"
kind: TaskRun
metadata:
generateName: "pr-run-"
spec:
taskSpec:
steps:
- image: ubuntu
script: echo "$(tt.params.message)"

curl -v -H 'X-GitHub-Event: pull_request' -H 'X-Hub-Signature: sha1=9c971b694ecd99a5753653032e5ceb332e29f2d1' -H 'Content-Type: application/json' -d '{"action": "opened", "pull_request":{"head":{"sha": "28911bbb5a3e2ea034daf1f6be0a822d50e31e73"}},"repository":{"url": "https://github.com/tektoncd/triggers.git"}}' http://10.68.194.93:8080

ServiceType
eventListener/ServiceType-01.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: foo-trig
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template
resources:
kubernetesResource:
serviceType: NodePort

Replicas
eventListener/Replicas-listener-01.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: foo-trig
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template
resources:
kubernetesResource:
replicas: 2

eventListener/Replicas-listener-02.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: foo-trig
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template
replicas: 2

PodTemplate
eventListener/PodTemplate-01.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
serviceAccountName: tekton-triggers-example-sa
resources:
kubernetesResource:
spec:
template:
spec:
nodeSelector:
kubernetes.io/hostname: 192.168.198.154
triggers:
- name: foo-trig
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template

eventListener/PodTemplate-02.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
podTemplate:
nodeSelector:
kubernetes.io/hostname: 192.168.198.154
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: foo-trig
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template

Resources
Right now the allowed values as part of ​​podSpec​​ are

ServiceAccountName
NodeSelector
Tolerations
Volumes
Containers
- Resources
- VolumeMounts
- Env


spec:
resources:
kubernetesResource:
serviceType: NodePort
spec:
template:
metadata:
labels:
key: "value"
annotations:
key: "value"
spec:
serviceAccountName: tekton-triggers-github-sa
nodeSelector:
app: test
tolerations:
- key: key
value: value
operator: Equal
effect: NoSchedule

NamespaceSelector
This field determines the namespaces where EventListener can search for triggers and create Tekton resources. If this field isn’t provided, EventListener will only serve Triggers from its own namespace.
kubectl create clusterrolebinding listener-binding --clusterrole=cluster-admin --serviceaccount=tekton:tekton-triggers-example-sa
eventListener/NamespaceSelector-01.yaml

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
name: listener
spec:
namespaceSelector:
matchNames:
- *
serviceAccountName: tekton-triggers-example-sa
triggers:
- name: foo-trig
bindings:
- ref: pipeline-binding
- ref: message-binding
template:
ref: pipeline-template

curl -v -H 'X-GitHub-Event: pull_request' -H 'X-Hub-Signature: sha1=9c971b694ecd99a5753653032e5ceb332e29f2d1' -H 'Content-Type: application/json' -d '{"action": "opened", "pull_request":{"head":{"sha": "28911bbb5a3e2ea034daf1f6be0a822d50e31e73"}},"repository":{"url": "https://github.com/tektoncd/triggers.git"}}' http://10.68.239.247:8080

举报

相关推荐

0 条评论