forked from rcarrata/devsecops-demo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cicd-gogs-init-taskrun.yaml.j2
87 lines (76 loc) · 3.51 KB
/
cicd-gogs-init-taskrun.yaml.j2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
generateName: init-gogs-
namespace: cicd
spec:
taskSpec:
params:
- name: GOGS_USER
type: string
description: Gogs admin username
default: gogs
- name: GOGS_PASSWORD
type: string
description: Gogs admin password
default: gogs
stepTemplate:
env:
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
steps:
- name: init-gogs
image: quay.io/siamaksade/python-oc
script: |
#!/usr/bin/env python3
import os
import requests
gogs_user = "$(params.GOGS_USER)"
gogs_pwd = "$(params.GOGS_PASSWORD)"
webhookURL = "http://" + os.popen('oc get route el-webhook -o template --template="{{.spec.host}}"').read()
gogsURL = "http://" + os.popen('oc get svc gogs -o template --template="{{.spec.clusterIP}}"').read() + ":3000"
# create admin user
data_user = {
'user_name': gogs_user,
'password': gogs_pwd,
'retype': gogs_pwd,
'email': '[email protected]'
}
resp = requests.post(url = gogsURL + "/user/sign_up", data = data_user)
if resp.status_code != 200:
print("Error creating Gogs admin (status code: {})".format(resp.status_code))
print(resp.content)
else:
print("Created admin user {}:{}".format(gogs_user, gogs_pwd))
# create git repo spring-petclinic
data_repo = '{"clone_addr": "https://github.com/rcarrata/spring-petclinic", "uid": 1, "repo_name": "spring-petclinic"}'
headers = {'Content-Type': 'application/json'}
resp = requests.post(url = gogsURL + "/api/v1/repos/migrate", headers = headers, auth = (gogs_user, gogs_pwd), data = data_repo)
if resp.status_code != 200 and resp.status_code != 201:
print("Error creating git repo (status code: {})".format(resp.status_code))
print(resp.content)
else:
print("Created git repo spring-petclinic")
# configure webhook on spring-petclinic
data_webhook = '{"type": "gogs", "config": { "url": "' + webhookURL + '", "content_type": "json"}, "events": ["push"], "active": true}'
headers = {'Content-Type': 'application/json'}
resp = requests.post(url = gogsURL + "/api/v1/repos/" + gogs_user + "/spring-petclinic/hooks",
headers = headers,
auth = (gogs_user, gogs_pwd),
data = data_webhook)
if resp.status_code != 200 and resp.status_code != 201:
print("Error configuring the webhook (status code: {})".format(resp.status_code))
print(resp.content)
else:
print("Configured webhook: " + webhookURL)
# create git repo spring-petclinic-config
data_repo = '{"clone_addr": "https://github.com/rcarrata/spring-petclinic-config.git", "uid": 1, "repo_name": "spring-petclinic-config"}'
headers = {'Content-Type': 'application/json'}
resp = requests.post(url = gogsURL + "/api/v1/repos/migrate", headers = headers, auth = (gogs_user, gogs_pwd), data = data_repo)
if resp.status_code != 200 and resp.status_code != 201:
print("Error creating git repo (status code: {})".format(resp.status_code))
print(resp.content)
else:
print("Created git repo spring-petclinic-config")