Skip to content

Commit c70cfd3

Browse files
authored
ISV-3489 and ISV-3490 create community operator pipelines, listener and triggers (#440)
* [ISV-3490] create route event listeners and triggers for comm pipelines * merge isv3489 and ISV3490 together * add separate event listener * rm dev env * change names
1 parent 0c26afc commit c70cfd3

File tree

6 files changed

+378
-0
lines changed

6 files changed

+378
-0
lines changed
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
---
2+
- name: Create trigger enabling running Community hosted pipeline via Github webhook
3+
tags:
4+
- triggers
5+
block:
6+
- name: Create Community hosted pipeline Trigger Binding
7+
k8s:
8+
state: present
9+
namespace: "{{ oc_namespace }}"
10+
definition:
11+
apiVersion: triggers.tekton.dev/v1alpha1
12+
kind: TriggerBinding
13+
metadata:
14+
name: community-operator-hosted-pipeline-trigger-binding
15+
labels:
16+
app: operator-pipeline
17+
suffix: "{{ suffix }}"
18+
env: "{{ env }}"
19+
spec:
20+
params:
21+
- name: git_repo_url
22+
value: $(body.pull_request.base.repo.clone_url)
23+
- name: git_pr_branch
24+
value: $(body.pull_request.head.ref)
25+
- name: git_fork_url
26+
value: $(body.pull_request.head.repo.clone_url)
27+
- name: git_pr_url
28+
value: $(body.pull_request.html_url)
29+
- name: git_pr_title
30+
value: $(body.pull_request.title)
31+
- name: git_username
32+
value: $(body.pull_request.user.login)
33+
- name: git_commit
34+
value: $(body.pull_request.head.sha)
35+
- name: env
36+
value: "{{ env }}"
37+
- name: pipeline_image
38+
value: "{{ operator_pipeline_image_pull_spec }}"
39+
40+
- name: Create Community hosted pipeline Trigger template
41+
k8s:
42+
state: present
43+
namespace: "{{ oc_namespace }}"
44+
definition:
45+
apiVersion: triggers.tekton.dev/v1alpha1
46+
kind: TriggerTemplate
47+
metadata:
48+
name: community-operator-hosted-pipeline-trigger-template
49+
labels:
50+
app: operator-pipeline
51+
suffix: "{{ suffix }}"
52+
env: "{{ env }}"
53+
spec:
54+
params:
55+
- name: git_repo_url
56+
- name: git_pr_branch
57+
- name: git_fork_url
58+
- name: git_pr_url
59+
- name: git_pr_title
60+
- name: git_username
61+
- name: git_commit
62+
- name: env
63+
- name: pipeline_image
64+
resourcetemplates:
65+
- apiVersion: tekton.dev/v1beta1
66+
kind: PipelineRun
67+
metadata:
68+
generateName: community-hosted-pipeline-run
69+
labels:
70+
app: operator-pipeline
71+
suffix: "{{ suffix }}"
72+
env: "{{ env }}"
73+
git_commit: $(tt.params.git_commit)
74+
annotations:
75+
git_pull_request_url: $(tt.params.git_pr_url)
76+
git_pull_request_title: $(tt.params.git_pr_title)
77+
spec:
78+
timeout: "2h"
79+
pipelineRef:
80+
name: community-hosted-pipeline
81+
params:
82+
- name: git_repo_url
83+
value: $(tt.params.git_repo_url)
84+
- name: git_pr_branch
85+
value: $(tt.params.git_pr_branch)
86+
- name: git_fork_url
87+
value: $(tt.params.git_fork_url)
88+
- name: git_pr_url
89+
value: $(tt.params.git_pr_url)
90+
- name: git_pr_title
91+
value: $(tt.params.git_pr_title)
92+
- name: git_username
93+
value: $(tt.params.git_username)
94+
- name: git_commit
95+
value: $(tt.params.git_commit)
96+
- name: env
97+
value: $(tt.params.env)
98+
- name: pipeline_image
99+
value: $(tt.params.pipeline_image)
100+
workspaces:
101+
- name: repository
102+
volumeClaimTemplate:
103+
spec:
104+
accessModes:
105+
- ReadWriteOnce
106+
resources:
107+
requests:
108+
storage: 5Gi
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
---
2+
- name: Create event listener allowing triggering the community pipelines via Github webhook
3+
tags:
4+
- triggers
5+
block:
6+
- name: Create event listener
7+
k8s:
8+
state: present
9+
namespace: "{{ oc_namespace }}"
10+
definition:
11+
apiVersion: triggers.tekton.dev/v1alpha1
12+
kind: EventListener
13+
metadata:
14+
name: community-operator-pipeline-github-listener
15+
labels:
16+
app: operator-pipeline
17+
suffix: "{{ suffix }}"
18+
env: "{{ env }}"
19+
spec:
20+
serviceAccountName: pipeline
21+
triggers:
22+
# run community hosted pipeline on PR opened, reopened, synchronized
23+
- name: github-community-pull-request-listener
24+
interceptors:
25+
- github:
26+
secretRef:
27+
secretName: github-webhook-secret
28+
secretKey: webhook-secret
29+
eventTypes:
30+
- pull_request
31+
- cel:
32+
filter: >-
33+
(
34+
header.match("X-GitHub-Event", "pull_request")
35+
&& body.action in ["opened", "reopened", "synchronize"]
36+
&& body.pull_request.base.ref == "{{ branch }}"
37+
)
38+
bindings:
39+
- ref: community-operator-hosted-pipeline-trigger-binding
40+
template:
41+
ref: community-operator-hosted-pipeline-trigger-template
42+
# run community release pipeline on merged PR
43+
- name: github-community-pull-request-listener
44+
interceptors:
45+
- github:
46+
secretRef:
47+
secretName: github-webhook-secret
48+
secretKey: webhook-secret
49+
eventTypes:
50+
- pull_request
51+
- cel:
52+
filter: >-
53+
(
54+
header.match("X-GitHub-Event", "pull_request")
55+
&& body.action == "closed"
56+
&& body.pull_request.base.ref == "{{ branch }}"
57+
&& body.pull_request.merged == true
58+
&& body.sender.login == "rh-operator-bundle-bot"
59+
)
60+
bindings:
61+
- ref: community-operator-release-pipeline-trigger-binding
62+
template:
63+
ref: community-operator-release-pipeline-trigger-template
64+
65+
- name: Create community pipeline trigger route
66+
k8s:
67+
state: present
68+
namespace: "{{ oc_namespace }}"
69+
definition:
70+
apiVersion: route.openshift.io/v1
71+
kind: route
72+
metadata:
73+
labels:
74+
eventlistener: community-operator-pipeline-github-listener
75+
app: operator-pipeline
76+
suffix: "{{ suffix }}"
77+
env: "{{ env }}"
78+
name: operator-pipeline
79+
spec:
80+
port:
81+
targetPort: http-listener
82+
tls:
83+
termination: edge
84+
to:
85+
kind: Service
86+
# el- prefix means, that the service was created by EventListener.
87+
name: el-community-operator-pipeline-github-listener
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
---
2+
- name: Create trigger enabling running Community release pipeline via GitHub webhook
3+
tags:
4+
- triggers
5+
block:
6+
- name: Create Community release pipeline Trigger Binding
7+
k8s:
8+
state: present
9+
namespace: "{{ oc_namespace }}"
10+
definition:
11+
apiVersion: triggers.tekton.dev/v1alpha1
12+
kind: TriggerBinding
13+
metadata:
14+
name: community-operator-release-pipeline-trigger-binding
15+
labels:
16+
app: operator-pipeline
17+
suffix: "{{ suffix }}"
18+
env: "{{ env }}"
19+
spec:
20+
params:
21+
- name: git_repo_url
22+
value: $(body.pull_request.base.repo.clone_url)
23+
- name: git_base_branch
24+
value: $(body.pull_request.base.ref)
25+
- name: git_pr_url
26+
value: $(body.pull_request.html_url)
27+
- name: git_username
28+
value: $(body.pull_request.user.login)
29+
- name: git_commit
30+
value: $(body.pull_request.merge_commit_sha)
31+
- name: env
32+
value: "{{ env }}"
33+
- name: pipeline_image
34+
value: "{{ operator_pipeline_image_pull_spec }}"
35+
36+
- name: Create Community release pipeline Trigger Binding
37+
k8s:
38+
state: present
39+
namespace: "{{ oc_namespace }}"
40+
definition:
41+
apiVersion: triggers.tekton.dev/v1alpha1
42+
kind: TriggerTemplate
43+
metadata:
44+
name: community-operator-release-pipeline-trigger-template
45+
labels:
46+
app: operator-pipeline
47+
suffix: "{{ suffix }}"
48+
env: "{{ env }}"
49+
spec:
50+
params:
51+
- name: git_repo_url
52+
- name: git_base_branch
53+
- name: git_pr_url
54+
- name: git_pr_title
55+
- name: git_username
56+
- name: git_commit
57+
- name: env
58+
- name: pipeline_image
59+
resourcetemplates:
60+
- apiVersion: tekton.dev/v1beta1
61+
kind: PipelineRun
62+
metadata:
63+
generateName: community-release-pipeline-run
64+
labels:
65+
app: operator-pipeline
66+
suffix: "{{ suffix }}"
67+
env: "{{ env }}"
68+
git_commit: $(tt.params.git_commit)
69+
annotations:
70+
git_pull_request_url: $(tt.params.git_pr_url)
71+
git_pull_request_title: $(tt.params.git_pr_title)
72+
spec:
73+
timeout: "1h30m0s"
74+
pipelineRef:
75+
name: community-release-pipeline
76+
params:
77+
- name: git_repo_url
78+
value: $(tt.params.git_repo_url)
79+
- name: git_base_branch
80+
value: $(tt.params.git_base_branch)
81+
- name: git_pr_url
82+
value: $(tt.params.git_pr_url)
83+
- name: git_pr_title
84+
value: $(tt.params.git_pr_title)
85+
- name: git_username
86+
value: $(tt.params.git_username)
87+
- name: git_commit
88+
value: $(tt.params.git_commit)
89+
- name: env
90+
value: $(tt.params.env)
91+
- name: pipeline_image
92+
value: $(tt.params.pipeline_image)
93+
workspaces:
94+
- name: repository
95+
volumeClaimTemplate:
96+
spec:
97+
accessModes:
98+
- ReadWriteOnce
99+
resources:
100+
requests:
101+
storage: 100Mi

ansible/roles/operator-pipeline/tasks/main.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@
6868
with_items:
6969
- ../templates/openshift/pipelines/operator-hosted-pipeline.yml
7070
- ../templates/openshift/pipelines/operator-release-pipeline.yml
71+
- ../templates/openshift/pipelines/community-release-pipeline.yml
72+
- ../templates/openshift/pipelines/community-hosted-pipeline.yml
7173

7274
- name: Deploy CI pipeline
7375
tags:
@@ -97,8 +99,11 @@
9799

98100

99101
- include_tasks: tasks/operator-pipeline-event-listener.yml
102+
- include_tasks: tasks/community-pipeline-event-listener.yml
100103
- include_tasks: tasks/operator-hosted-pipeline-trigger.yml
101104
- include_tasks: tasks/operator-release-pipeline-trigger.yml
105+
- include_tasks: tasks/community-hosted-pipeline-trigger.yml
106+
- include_tasks: tasks/community-release-pipeline-trigger.yml
102107

103108
- include_tasks: tasks/community-signing.yml
104109

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
apiVersion: tekton.dev/v1beta1
3+
kind: Pipeline
4+
metadata:
5+
name: community-hosted-pipeline
6+
spec:
7+
params:
8+
- name: git_repo_url
9+
- name: git_pr_branch
10+
- name: git_fork_url
11+
- name: git_pr_url
12+
- name: git_pr_title
13+
- name: git_username
14+
- name: git_commit
15+
- name: env
16+
- name: pipeline_image
17+
default: "quay.io/redhat-isv/operator-pipelines-images:released"
18+
workspaces:
19+
- name: repository
20+
- name: ssh-dir
21+
optional: true
22+
tasks:
23+
- name: clone-repository
24+
taskRef:
25+
name: git-clone
26+
kind: Task
27+
params:
28+
- name: url
29+
value: $(params.git_fork_url)
30+
- name: revision
31+
value: $(params.git_pr_branch)
32+
- name: gitInitImage
33+
value: registry.redhat.io/openshift-pipelines/pipelines-git-init-rhel8@sha256:bc551c776fb3d0fcc6cfd6d8dc9f0030de012cb9516fac42b1da75e6771001d9
34+
workspaces:
35+
- name: output
36+
workspace: repository
37+
subPath: src
38+
- name: ssh-directory
39+
workspace: ssh-dir
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
apiVersion: tekton.dev/v1beta1
3+
kind: Pipeline
4+
metadata:
5+
name: community-release-pipeline
6+
spec:
7+
params:
8+
- name: git_repo_url
9+
- name: git_base_branch
10+
- name: git_pr_title
11+
- name: git_pr_url
12+
- name: git_username
13+
- name: git_commit
14+
- name: env
15+
- name: pipeline_image
16+
default: "quay.io/redhat-isv/operator-pipelines-images:released"
17+
workspaces:
18+
- name: repository
19+
- name: ssh-dir
20+
optional: true
21+
tasks:
22+
- name: clone-repository
23+
taskRef:
24+
name: git-clone
25+
kind: Task
26+
params:
27+
- name: url
28+
value: $(params.git_repo_url)
29+
- name: revision
30+
value: $(params.git_base_branch)
31+
- name: gitInitImage
32+
value: registry.redhat.io/openshift-pipelines/pipelines-git-init-rhel8@sha256:bc551c776fb3d0fcc6cfd6d8dc9f0030de012cb9516fac42b1da75e6771001d9
33+
workspaces:
34+
- name: output
35+
workspace: repository
36+
subPath: src
37+
- name: ssh-directory
38+
workspace: ssh-dir

0 commit comments

Comments
 (0)