Skip to content

Commit 989f2c0

Browse files
author
fmeng
committed
add gitlab tekton pipeline
1 parent 7f4bf38 commit 989f2c0

File tree

3 files changed

+221
-0
lines changed

3 files changed

+221
-0
lines changed
+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: gitlab
5+
spec:
6+
replicas: 1
7+
selector:
8+
matchLabels:
9+
run: gitlab
10+
template:
11+
metadata:
12+
labels:
13+
run: gitlab
14+
spec:
15+
containers:
16+
- image: gitlab/gitlab-ee
17+
imagePullPolicy: IfNotPresent
18+
name: gitlab
19+
---
20+
apiVersion: v1
21+
kind: Service
22+
metadata:
23+
name: gitlab
24+
spec:
25+
ports:
26+
- name: http
27+
port: 80
28+
protocol: TCP
29+
targetPort: 80
30+
selector:
31+
run: gitlab
32+
type: NodePort
+160
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: cncamp-gitlab-sa
5+
---
6+
apiVersion: triggers.tekton.dev/v1alpha1
7+
kind: EventListener
8+
metadata:
9+
name: gitlab-listener
10+
spec:
11+
serviceAccountName: cncamp-gitlab-sa
12+
triggers:
13+
- name: gitlab-push-events-trigger
14+
interceptors:
15+
- ref:
16+
name: gitlab
17+
params:
18+
- name: secretRef
19+
value:
20+
secretName: cncamp-gitlab-secret
21+
secretKey: secretToken
22+
- name: eventTypes
23+
value:
24+
- Push Hook
25+
bindings:
26+
- ref: gitlab-binding
27+
template:
28+
ref: gitlab-triggertemplate
29+
---
30+
apiVersion: v1
31+
kind: Secret
32+
metadata:
33+
name: cncamp-gitlab-secret
34+
type: Opaque
35+
stringData:
36+
secretToken: '1234567'
37+
---
38+
apiVersion: v1
39+
kind: Secret
40+
metadata:
41+
name: cncamp-gitlab-auth
42+
annotations:
43+
tekton.dev/git-1: http://gitlab.default.svc.cluster.local
44+
type: kubernetes.io/basic-auth
45+
stringData:
46+
username: root
47+
password: lzKyburULL0j4qnumSNI2fZycQCMkw8Is5t6D5iy790=
48+
---
49+
apiVersion: triggers.tekton.dev/v1alpha1
50+
kind: TriggerBinding
51+
metadata:
52+
name: gitlab-binding
53+
spec:
54+
params:
55+
- name: gitrevision
56+
value: $(body.checkout_sha)
57+
- name: gitrepositoryurl
58+
value: http://gitlab.default.svc.cluster.local/root/test.git
59+
---
60+
apiVersion: triggers.tekton.dev/v1alpha1
61+
kind: TriggerTemplate
62+
metadata:
63+
name: gitlab-triggertemplate
64+
spec:
65+
params:
66+
- name: gitrevision
67+
- name: gitrepositoryurl
68+
resourcetemplates:
69+
- apiVersion: tekton.dev/v1beta1
70+
kind: TaskRun
71+
metadata:
72+
generateName: gitlab-run-
73+
spec:
74+
serviceAccountName: cncamp-gitlab-sa
75+
taskSpec:
76+
resources:
77+
inputs:
78+
- name: source
79+
type: git
80+
steps:
81+
- name: show-path
82+
image: ubuntu
83+
script: |
84+
#! /bin/bash
85+
ls -la $(resources.inputs.source.path)
86+
resources:
87+
inputs:
88+
- name: source
89+
resourceSpec:
90+
type: git
91+
params:
92+
- name: revision
93+
value: $(tt.params.gitrevision)
94+
- name: url
95+
value: $(tt.params.gitrepositoryurl)
96+
---
97+
apiVersion: v1
98+
kind: ServiceAccount
99+
metadata:
100+
name: cncamp-gitlab-sa
101+
secrets:
102+
- name: cncamp-gitlab-secret
103+
- name: cncamp-gitlab-auth
104+
---
105+
apiVersion: rbac.authorization.k8s.io/v1
106+
kind: Role
107+
metadata:
108+
name: tekton-triggers-gitlab-minimal
109+
rules:
110+
- apiGroups: ['triggers.tekton.dev']
111+
resources:
112+
['eventlisteners', 'triggerbindings', 'triggertemplates', 'triggers']
113+
verbs: ['get', 'list', 'watch']
114+
- apiGroups: ['']
115+
resources: ['configmaps']
116+
verbs: ['get', 'list', 'watch']
117+
- apiGroups: ['tekton.dev']
118+
resources: ['pipelineruns', 'pipelineresources', 'taskruns']
119+
verbs: ['create']
120+
- apiGroups: ['']
121+
resources: ['serviceaccounts']
122+
verbs: ['impersonate']
123+
- apiGroups: ['policy']
124+
resources: ['podsecuritypolicies']
125+
resourceNames: ['tekton-triggers']
126+
verbs: ['use']
127+
---
128+
apiVersion: rbac.authorization.k8s.io/v1
129+
kind: RoleBinding
130+
metadata:
131+
name: tekton-triggers-gitlab-binding
132+
subjects:
133+
- kind: ServiceAccount
134+
name: cncamp-gitlab-sa
135+
roleRef:
136+
apiGroup: rbac.authorization.k8s.io
137+
kind: Role
138+
name: tekton-triggers-gitlab-minimal
139+
---
140+
kind: ClusterRole
141+
apiVersion: rbac.authorization.k8s.io/v1
142+
metadata:
143+
name: tekton-triggers-gitlab-clusterrole
144+
rules:
145+
- apiGroups: ['triggers.tekton.dev']
146+
resources: ['clustertriggerbindings', 'clusterinterceptors']
147+
verbs: ['get', 'list', 'watch']
148+
---
149+
apiVersion: rbac.authorization.k8s.io/v1
150+
kind: ClusterRoleBinding
151+
metadata:
152+
name: tekton-triggers-gitlab-clusterbinding
153+
subjects:
154+
- kind: ServiceAccount
155+
name: cncamp-gitlab-sa
156+
namespace: default
157+
roleRef:
158+
apiGroup: rbac.authorization.k8s.io
159+
kind: ClusterRole
160+
name: tekton-triggers-gitlab-clusterrole

tekton/local-gitlab/gitlab.md

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
## create tekton gitlab pipeline
2+
kubectl apply -f gitlab-pipeline.yaml
3+
4+
## create gitlab deploy
5+
kubectl create -f gitlab-deploy.yaml
6+
7+
## config gitlab
8+
### get root password
9+
kubectl get po -l run=gitlab
10+
kubectl exec -it <podname> grep 'Password:' /etc/gitlab/initial_root_password
11+
### access gitlab portal, and register a user cncamp
12+
kubectl get svc gitlab, check nodeport and access the portal via
13+
http://192.168.34.2:<nodeport>
14+
### login to gitlab with credential
15+
root/<password>
16+
### change admin setting via
17+
http://192.168.34.2:30370/admin/application_settings/network
18+
or browse menu->admin area->network->outbound request
19+
check `Allow requests to the local network from web hooks and services`
20+
### create a new project
21+
create a new project named test
22+
### create webhook
23+
go http://192.168.34.2:30370/root/test
24+
browse settings->webhook
25+
enter http://el-gitlab-listener:8080, and click add webhook
26+
### test webhook
27+
Test->Push Event
28+
kubectl get po, you show see the taskrun pod
29+
kubectl logs --all-containers -f <podname>

0 commit comments

Comments
 (0)