Skip to content

Commit 22eeafa

Browse files
Automate OKD release promotions with weekly cron schedule
- Add Tekton automation for release-next and release-stable pipelines - Schedule for Monday 10:30 AM IST (5:00 AM UTC) to avoid cleanup conflicts
1 parent 6339ff4 commit 22eeafa

File tree

11 files changed

+145
-0
lines changed

11 files changed

+145
-0
lines changed

release-promotions/apply.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
oc apply -f sa.yaml
2+
oc apply -f cluster-role.yaml
3+
oc apply -f crb.yaml
4+
oc apply -f task.yaml
5+
oc apply -f pipeline.yaml
6+
oc apply -f trigger-template.yaml
7+
oc apply -f trigger-binding.yaml
8+
oc apply -f event-listener.yaml
9+
oc apply -f cronjob.yaml

release-promotions/cleanup.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
oc delete -f cronjob.yaml
2+
oc delete -f event-listener.yaml
3+
oc delete -f trigger-binding.yaml
4+
oc delete -f trigger-template.yaml
5+
oc delete -f pipeline.yaml
6+
oc delete -f task.yaml
7+
oc delete -f crb.yaml
8+
oc delete -f cluster-role.yaml
9+
oc delete -f sa.yaml
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRole
3+
metadata:
4+
name: tekton-pipelinerun-creator
5+
rules:
6+
- apiGroups: ["tekton.dev"]
7+
resources: ["pipelineruns"]
8+
verbs: ["create"]
9+
- apiGroups: ["triggers.tekton.dev"]
10+
resources: ["eventlisteners", "triggertemplates", "triggerbindings", "triggers", "interceptors", "clusterinterceptors"]
11+
verbs: ["get", "list", "watch"]

release-promotions/crb.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
name: tekton-oc-create-binding
5+
subjects:
6+
- kind: ServiceAccount
7+
name: tekton-cluster-access
8+
namespace: okd-coreos
9+
roleRef:
10+
kind: ClusterRole
11+
name: tekton-pipelinerun-creator
12+
apiGroup: rbac.authorization.k8s.io

release-promotions/cronjob.yaml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
apiVersion: batch/v1
2+
kind: CronJob
3+
metadata:
4+
name: cron-trigger-cluster-command
5+
namespace: okd-coreos
6+
spec:
7+
suspend: false
8+
schedule: "0 5 * * 1"
9+
jobTemplate:
10+
spec:
11+
template:
12+
spec:
13+
restartPolicy: OnFailure
14+
containers:
15+
- name: curl-trigger
16+
image: curlimages/curl:latest
17+
command: ["/bin/sh"]
18+
args:
19+
- "-c"
20+
- |
21+
echo "[INFO] Triggering EventListener..."
22+
curl -X POST \
23+
http://el-cluster-command-listener.okd-coreos.svc.cluster.local:8080 \
24+
-H 'Content-Type: application/json' \
25+
-d '{"message":"trigger"}'
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: triggers.tekton.dev/v1beta1
2+
kind: EventListener
3+
metadata:
4+
name: cluster-command-listener
5+
namespace: okd-coreos
6+
spec:
7+
serviceAccountName: tekton-cluster-access
8+
triggers:
9+
- name: trigger-on-cron
10+
bindings:
11+
- ref: cluster-command-binding
12+
template:
13+
ref: cluster-command-template

release-promotions/pipeline.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: tekton.dev/v1
2+
kind: Pipeline
3+
metadata:
4+
name: cluster-command-pipeline
5+
namespace: okd-coreos
6+
spec:
7+
tasks:
8+
- name: run-command
9+
taskRef:
10+
name: cluster-command-task

release-promotions/sa.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: tekton-cluster-access
5+
namespace: okd-coreos

release-promotions/task.yaml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
apiVersion: tekton.dev/v1
2+
kind: Task
3+
metadata:
4+
name: cluster-command-task
5+
namespace: okd-coreos
6+
spec:
7+
steps:
8+
- name: run-cluster-command
9+
image: quay.io/openshift/origin-cli:latest
10+
script: |
11+
#!/bin/bash
12+
set -euo pipefail
13+
14+
echo "[INFO] Promoting OKD releases:"
15+
16+
echo "[INFO] Applying: okd-release-next-pipelinerun.yaml"
17+
oc create -f https://raw.githubusercontent.com/okd-project/okd-release-pipeline/main/environments/moc/pipelineruns/okd-release-next-pipelinerun.yaml
18+
19+
echo "[INFO] Sleeping for 30 minutes to let the first pipeline complete..."
20+
sleep 1800
21+
22+
echo "[INFO] Applying: okd-release-stable-pipelinerun.yaml"
23+
oc create -f https://raw.githubusercontent.com/okd-project/okd-release-pipeline/main/environments/moc/pipelineruns/okd-release-stable-pipelinerun.yaml
24+
25+
echo "[INFO] OKD promotion jobs done!"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: triggers.tekton.dev/v1beta1
2+
kind: TriggerBinding
3+
metadata:
4+
name: cluster-command-binding
5+
namespace: okd-coreos
6+
spec:
7+
params:
8+
- name: trigger-source
9+
value: $(body.message)

0 commit comments

Comments
 (0)