Skip to content

Commit d4b3501

Browse files
committed
feat: ocp provisioned on aws with tests plugged-in.
Signed-off-by: Alexander Cristurean <[email protected]>
1 parent 06fba31 commit d4b3501

File tree

4 files changed

+512
-0
lines changed

4 files changed

+512
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: kustomize.config.k8s.io/v1beta1
2+
kind: Kustomization
3+
4+
labels:
5+
- pairs:
6+
deployment: kuadrant-qe-pipeline
7+
app: deploy-kuadrant
8+
9+
components:
10+
- ../../../tasks/deploy/
11+
- ../../../tasks/infra/
12+
- ../../../tasks/test/
13+
14+
resources:
15+
- pipeline.yaml
Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
apiVersion: tekton.dev/v1
2+
kind: Pipeline
3+
metadata:
4+
name: test-ocp-aws
5+
spec:
6+
params:
7+
# Cluster related parameters
8+
- name: aws-credentials
9+
type: string
10+
- name: cluster-name
11+
type: string
12+
- name: pull-secret
13+
type: string
14+
default: aro-pull-secret # Need to rename this to pull-secret
15+
- name: base-domain
16+
type: string
17+
default: "aws.kua.app-services-dev.net"
18+
- name: ssh-key
19+
type: string
20+
default: ssh-public-key
21+
- name: region
22+
type: string
23+
default: "us-east-1"
24+
- name: master-size
25+
type: string
26+
default: "m6g.xlarge"
27+
- name: worker-size
28+
type: string
29+
default: "m6g.large"
30+
- name: installer-arch
31+
type: string
32+
default: "arm64"
33+
- name: osia-settings
34+
type: string
35+
default: osia-default-settings
36+
# Kuadrant/RHCL installation related parameters
37+
- default: quay.io/kuadrant/kuadrant-operator-catalog:v1.2.0
38+
description: Kuadrant/RHCL index image, leave empty to install current RHCL GA
39+
name: index-image
40+
type: string
41+
- default: stable
42+
description: Kuadrant channel (stable, preview)
43+
name: channel
44+
type: string
45+
- default: kuadrant-operator
46+
description: Operator name (kuadrant-operator, rhcl-operator)
47+
name: operator-name
48+
type: string
49+
- default: ocp
50+
description: Istio provider (ossm3, ocp), use ossm3 for OCP v4.18 and before
51+
name: istio-provider
52+
type: string
53+
- default: ""
54+
description: GatewayAPI CRD version. v1.0.0, v1.1.0, v1.2.1, v1.3.0 available; Leave empty if installing on OCP v4.19+
55+
name: gateway-crd
56+
type: string
57+
- default: stable-v26
58+
description: Keycloak subscription channel
59+
name: keycloak-channel
60+
type: string
61+
- default: ""
62+
description: Extensions binary image
63+
name: extensions-binary-image
64+
type: string
65+
- default: ""
66+
description: Additional flags for helm install command, example '--set=kuadrant.installPlanApproval=Manual --set=kuadrant.startingCSV=kuadrant-operator.v1.2.0'
67+
name: additional-helm-flags
68+
type: string
69+
- default: ""
70+
description: Additional flags for tools helm, example '--set=tools.keycloak.keycloakProvider=deployment --set=tools.valkey.enable=false'"
71+
name: additional-helm-tools-flags
72+
type: string
73+
# Testsuite related parameters
74+
- default: 'quay.io/kuadrant/testsuite:unstable'
75+
description: Testsuite image
76+
name: testsuite-image
77+
type: string
78+
- default: kuadrant
79+
description: Openshift project
80+
name: project
81+
type: string
82+
- default: test
83+
description: Makefile target for tests
84+
name: make-target
85+
type: string
86+
- default: ""
87+
description: Pytest flags to use with Make (flags="${pytest-flags}" make kuadrant)
88+
name: pytest-flags
89+
type: string
90+
- default: pipeline-settings
91+
description: Config Map with settings for the testsuite
92+
name: settings-cm
93+
type: string
94+
- default: ""
95+
description: Additional env for testsuite container separated with spaces (e.g. KUADRANT_CONTROL_PLANE__provider_secret=gcp-credentials KUADRANT_KEYCLOAK__url="https://my-sso.net")
96+
name: additional-env
97+
type: string
98+
# Report Portal related parameters
99+
- default: full-cycle-ocp-aws
100+
description: Prefix of the launch name saved in report portal (nightly, username, manual, etc.). In case of release candidate testing use kuadrant-v<version>, rhcl-v<version>, or authorino-v<version>
101+
name: launch-name
102+
type: string
103+
- default: ""
104+
description: Optional launch description for Report Portal
105+
name: launch-description
106+
type: string
107+
- default: testsuite
108+
description: Report Portal Project to store test results (testsuite or nightly-testsuite typically)
109+
name: rp-project
110+
type: string
111+
- default: true
112+
description: If set to 'true' upload test results to Report Portal
113+
name: upload-results
114+
type: string
115+
# Cleanup
116+
- default: false
117+
description: If set to 'true' cleanup will be done
118+
name: cleanup
119+
type: string
120+
workspaces:
121+
- name: shared-workspace
122+
description: "Workspace to store cluster state files"
123+
tasks:
124+
- name: provision-ocp-aws
125+
params:
126+
- name: aws-credentials
127+
value: $(params.aws-credentials)
128+
- name: cluster-name
129+
value: $(params.cluster-name)
130+
- name: pull-secret
131+
value: $(params.pull-secret)
132+
- name: base-domain
133+
value: $(params.base-domain)
134+
- name: region
135+
value: $(params.region)
136+
- name: master-size
137+
value: $(params.master-size)
138+
- name: worker-size
139+
value: $(params.worker-size)
140+
- name: ssh-key
141+
value: $(params.ssh-key)
142+
- name: installer-arch
143+
value: $(params.installer-arch)
144+
- name: osia-settings
145+
value: $(params.osia-settings)
146+
workspaces:
147+
- name: shared-workspace
148+
workspace: shared-workspace
149+
taskRef:
150+
kind: Task
151+
name: provision-ocp-aws
152+
- name: helm-deploy
153+
retries: 3
154+
params:
155+
- name: index-image
156+
value: $(params.index-image)
157+
- name: channel
158+
value: $(params.channel)
159+
- name: istio-provider
160+
value: $(params.istio-provider)
161+
- name: operator-name
162+
value: $(params.operator-name)
163+
- name: kubeconfig-path
164+
value: $(tasks.provision-ocp-aws.results.kubeconfig-path)
165+
- name: gateway-crd
166+
value: $(params.gateway-crd)
167+
- name: keycloak-channel
168+
value: $(params.keycloak-channel)
169+
- name: extensions-binary-image
170+
value: $(params.extensions-binary-image)
171+
- name: additional-helm-flags
172+
value: $(params.additional-helm-flags)
173+
- name: additional-helm-tools-flags
174+
value: $(params.additional-helm-tools-flags)
175+
runAfter:
176+
- provision-ocp-aws
177+
taskRef:
178+
kind: Task
179+
name: helm-deploy
180+
workspaces:
181+
- name: shared-workspace
182+
workspace: shared-workspace
183+
- name: run-tests
184+
params:
185+
- name: testsuite-image
186+
value: $(params.testsuite-image)
187+
- name: project
188+
value: $(params.project)
189+
- name: make-target
190+
value: $(params.make-target)
191+
- name: pytest-flags
192+
value: $(params.pytest-flags)
193+
- name: settings-cm
194+
value: $(params.settings-cm)
195+
- name: additional-env
196+
value: $(params.additional-env)
197+
- name: kubeconfig-path
198+
value: $(tasks.provision-ocp-aws.results.kubeconfig-path)
199+
- name: cluster-credentials
200+
value: $(tasks.provision-ocp-aws.results.credentials-secret)
201+
runAfter:
202+
- helm-deploy
203+
taskRef:
204+
kind: Task
205+
name: run-tests
206+
workspaces:
207+
- name: shared-workspace
208+
- name: upload-results
209+
when:
210+
- input: $(params.upload-results)
211+
operator: in
212+
values: ["true"]
213+
params:
214+
- name: launch-name
215+
value: $(params.launch-name)
216+
- name: launch-description
217+
value: $(params.launch-description)
218+
- name: testsuite-image
219+
value: $(params.testsuite-image)
220+
- name: make-target
221+
value: $(params.make-target)
222+
- name: rp-project
223+
value: $(params.rp-project)
224+
- name: ocp-version
225+
value: $(tasks.provision-ocp-aws.results.ocp-version)
226+
runAfter:
227+
- run-tests
228+
taskRef:
229+
kind: Task
230+
name: upload-results
231+
workspaces:
232+
- name: shared-workspace
233+
- name: delete-aws-ocp
234+
when:
235+
- input: $(params.cleanup)
236+
operator: in
237+
values: ["true"]
238+
runAfter:
239+
- upload-results
240+
params:
241+
- name: cluster-name
242+
value: $(params.cluster-name)
243+
- name: aws-credentials
244+
value: $(params.aws-credentials)
245+
- name: osia-settings
246+
value: $(params.osia-settings)
247+
workspaces:
248+
- name: shared-workspace
249+
workspace: shared-workspace
250+
taskRef:
251+
kind: Task
252+
name: delete-aws-ocp

tasks/infra/delete-ocp-aws.yaml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
apiVersion: tekton.dev/v1
2+
kind: Task
3+
metadata:
4+
name: delete-aws-ocp
5+
spec:
6+
description: Delete AWS OCP cluster
7+
params:
8+
- name: aws-credentials
9+
type: string
10+
- name: cluster-name
11+
type: string
12+
- name: osia-settings
13+
type: string
14+
description: "Name of the ConfigMap containing the osia settings"
15+
workspaces:
16+
- name: shared-workspace
17+
description: "Shared workspace to access cluster state files from provision task"
18+
mountPath: /workspace
19+
volumes:
20+
- name: osia-settings-volume
21+
configMap:
22+
name: $(params.osia-settings)
23+
steps:
24+
- computeResources:
25+
limits:
26+
cpu: '150m'
27+
memory: 400Mi
28+
env:
29+
- name: AWS_ACCOUNT_ID
30+
valueFrom:
31+
secretKeyRef:
32+
key: AWS_ACCOUNT_ID
33+
name: $(params.aws-credentials)
34+
- name: AWS_ACCESS_KEY_ID
35+
valueFrom:
36+
secretKeyRef:
37+
key: AWS_ACCESS_KEY_ID
38+
name: $(params.aws-credentials)
39+
- name: AWS_SECRET_ACCESS_KEY
40+
valueFrom:
41+
secretKeyRef:
42+
key: AWS_SECRET_ACCESS_KEY
43+
name: $(params.aws-credentials)
44+
image: quay.io/acristur/osia:latest
45+
imagePullPolicy: Always
46+
name: delete-aws-ocp
47+
volumeMounts:
48+
- name: osia-settings-volume
49+
mountPath: /workspace/settings.yaml
50+
subPath: settings.yaml
51+
readOnly: true
52+
command:
53+
- /bin/bash
54+
- -c
55+
- |
56+
set -euo pipefail
57+
58+
# Create AWS credentials file
59+
mkdir -p ~/.aws
60+
cat > ~/.aws/credentials <<EOF
61+
[default]
62+
aws_access_key_id = ${AWS_ACCESS_KEY_ID}
63+
aws_secret_access_key = ${AWS_SECRET_ACCESS_KEY}
64+
EOF
65+
66+
67+
# Run osia clean
68+
osia clean \
69+
--cluster-name $(params.cluster-name) \
70+
--skip-git
71+
72+

0 commit comments

Comments
 (0)