forked from k-space/kube
		
	Add Woodpecker CI
This commit is contained in:
		| @@ -53,3 +53,16 @@ volumeBindingMode: WaitForFirstConsumer | ||||
| allowVolumeExpansion: true | ||||
| parameters: | ||||
|   fsType: "xfs" | ||||
| --- | ||||
| apiVersion: storage.k8s.io/v1 | ||||
| kind: StorageClass | ||||
| metadata: | ||||
|   name: woodpecker | ||||
| provisioner: driver.longhorn.io | ||||
| reclaimPolicy: Delete | ||||
| volumeBindingMode: Immediate | ||||
| allowVolumeExpansion: true | ||||
| parameters: | ||||
|   dataLocality: best-effort | ||||
|   numberOfReplicas: "1" | ||||
|   fsType: "xfs" | ||||
|   | ||||
							
								
								
									
										17
									
								
								woodpecker/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								woodpecker/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| # Woodpecker CI | ||||
| Woodpecker CI obsoletes Drone CI which has confusing licensing conditions. | ||||
|  | ||||
| Deployment steps: | ||||
|  | ||||
| ``` | ||||
| kubectl create namespace woodpecker | ||||
| kubectl create namespace woodpecker-execution | ||||
| kubectl create secret generic -n woodpecker woodpecker-secret \ | ||||
|   --from-literal=WOODPECKER_AGENT_SECRET=$(openssl rand -hex 32) \ | ||||
|   --from-literal=WOODPECKER_GITEA_CLIENT=... \ | ||||
|   --from-literal=WOODPECKER_GITEA_SECRET=... | ||||
| kubectl create secret generic -n woodpecker-execution woodpecker-secret \ | ||||
|   --from-literal=WOODPECKER_AGENT_SECRET=$(kubectl get secret -n woodpecker woodpecker-secret -o jsonpath="{.data.WOODPECKER_AGENT_SECRET}" | base64 -d) | ||||
| kubectl apply -n woodpecker -f woodpecker-server.yml | ||||
| kubectl apply -n woodpecker-execution -f woodpecker-agent.yml | ||||
| ``` | ||||
							
								
								
									
										98
									
								
								woodpecker/woodpecker-agent.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								woodpecker/woodpecker-agent.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,98 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: ServiceAccount | ||||
| metadata: | ||||
|   name: woodpecker-agent | ||||
|   namespace: woodpecker-execution | ||||
| --- | ||||
| apiVersion: rbac.authorization.k8s.io/v1 | ||||
| kind: Role | ||||
| metadata: | ||||
|   name: woodpecker-agent | ||||
|   namespace: woodpecker-execution | ||||
| rules: | ||||
|   - apiGroups: | ||||
|       - '' | ||||
|     resources: | ||||
|       - persistentvolumeclaims | ||||
|     verbs: | ||||
|       - create | ||||
|       - delete | ||||
|   - apiGroups: | ||||
|       - '' | ||||
|     resources: | ||||
|       - services | ||||
|     verbs: | ||||
|       - create | ||||
|       - delete | ||||
|   - apiGroups: | ||||
|       - '' | ||||
|     resources: | ||||
|       - pods | ||||
|       - pods/log | ||||
|     verbs: | ||||
|       - watch | ||||
|       - create | ||||
|       - delete | ||||
|       - get | ||||
|       - list | ||||
| --- | ||||
| apiVersion: rbac.authorization.k8s.io/v1 | ||||
| kind: RoleBinding | ||||
| metadata: | ||||
|   name: woodpecker-agent | ||||
|   namespace: woodpecker-execution | ||||
| subjects: | ||||
|   - kind: ServiceAccount | ||||
|     name: woodpecker-agent | ||||
|     namespace: woodpecker-execution | ||||
| roleRef: | ||||
|   kind: Role | ||||
|   name: woodpecker-agent | ||||
|   apiGroup: rbac.authorization.k8s.io | ||||
| --- | ||||
| apiVersion: apps/v1 | ||||
| kind: Deployment | ||||
| metadata: | ||||
|   name: woodpecker-agent | ||||
|   namespace: woodpecker-execution | ||||
| spec: | ||||
|   replicas: 2 | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: woodpecker-agent | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: woodpecker-agent | ||||
|     spec: | ||||
|       serviceAccountName: woodpecker-agent | ||||
|       securityContext: | ||||
|         {} | ||||
|       containers: | ||||
|         - name: agent | ||||
|           securityContext: | ||||
|             {} | ||||
|           image: woodpeckerci/woodpecker-agent:next | ||||
|           ports: | ||||
|             - name: http | ||||
|               containerPort: 3000 | ||||
|               protocol: TCP | ||||
|           env: | ||||
|             - name: WOODPECKER_BACKEND | ||||
|               value: kubernetes | ||||
|             - name: WOODPECKER_BACKEND_K8S_NAMESPACE | ||||
|               value: woodpecker-execution | ||||
|             - name: WOODPECKER_BACKEND_K8S_STORAGE_CLASS | ||||
|               value: woodpecker | ||||
|             - name: WOODPECKER_BACKEND_K8S_STORAGE_RWX | ||||
|               value: "false" | ||||
|             - name: WOODPECKER_BACKEND_K8S_VOLUME_SIZE | ||||
|               value: 100Mi | ||||
|             - name: WOODPECKER_SERVER | ||||
|               value: "woodpecker-grpc.woodpecker.svc.cluster.local:9000" | ||||
|             - name: WOODPECKER_AGENT_SECRET | ||||
|               valueFrom: | ||||
|                 secretKeyRef: | ||||
|                   name: woodpecker-secret | ||||
|                   key: WOODPECKER_AGENT_SECRET | ||||
							
								
								
									
										129
									
								
								woodpecker/woodpecker-server.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								woodpecker/woodpecker-server.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,129 @@ | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: woodpecker | ||||
| spec: | ||||
|   type: ClusterIP | ||||
|   ports: | ||||
|     - port: 80 | ||||
|       targetPort: http | ||||
|       protocol: TCP | ||||
|       name: http | ||||
|   selector: | ||||
|     app: woodpecker | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: woodpecker-grpc | ||||
| spec: | ||||
|   type: ClusterIP | ||||
|   ports: | ||||
|     - port: 9000 | ||||
|       targetPort: grpc | ||||
|       protocol: TCP | ||||
|       name: grpc | ||||
|   selector: | ||||
|     app: woodpecker | ||||
| --- | ||||
| apiVersion: apps/v1 | ||||
| kind: StatefulSet | ||||
| metadata: | ||||
|   name: woodpecker | ||||
| spec: | ||||
|   serviceName: woodpecker | ||||
|   replicas: 1 | ||||
|   selector: | ||||
|     matchLabels: | ||||
|       app: woodpecker | ||||
|   template: | ||||
|     metadata: | ||||
|       labels: | ||||
|         app: woodpecker | ||||
|     spec: | ||||
|       automountServiceAccountToken: false | ||||
|       securityContext: | ||||
|         {} | ||||
|       containers: | ||||
|         - name: server | ||||
|           securityContext: | ||||
|             {} | ||||
|           image: woodpeckerci/woodpecker-server:next | ||||
|           ports: | ||||
|             - name: http | ||||
|               containerPort: 8000 | ||||
|               protocol: TCP | ||||
|             - name: grpc | ||||
|               containerPort: 9000 | ||||
|               protocol: TCP | ||||
|           livenessProbe: | ||||
|             httpGet: | ||||
|               path: / | ||||
|               port: http | ||||
|           env: | ||||
|             - name: WOODPECKER_ADMIN | ||||
|               value: laurivosandi | ||||
|             - name: WOODPECKER_OPEN | ||||
|               value: "true" | ||||
|             - name: WOODPECKER_ORGS | ||||
|               value: codemowers | ||||
|             - name: WOODPECKER_HOST | ||||
|               value: "https://woodpecker.k-space.ee" | ||||
|             - name: WOODPECKER_GITEA | ||||
|               value: "true" | ||||
|             - name: WOODPECKER_GITEA_URL | ||||
|               value: "https://git.k-space.ee/" | ||||
|             - name: WOODPECKER_GITEA_CLIENT | ||||
|               valueFrom: | ||||
|                 secretKeyRef: | ||||
|                   name: woodpecker-secret | ||||
|                   key: WOODPECKER_GITEA_CLIENT | ||||
|             - name: WOODPECKER_GITEA_SECRET | ||||
|               valueFrom: | ||||
|                 secretKeyRef: | ||||
|                   name: woodpecker-secret | ||||
|                   key: WOODPECKER_GITEA_SECRET | ||||
|             - name: "WOODPECKER_AGENT_SECRET" | ||||
|               valueFrom: | ||||
|                 secretKeyRef: | ||||
|                   name: woodpecker-secret | ||||
|                   key: WOODPECKER_AGENT_SECRET | ||||
|           volumeMounts: | ||||
|             - name: woodpecker-data | ||||
|               mountPath: /var/lib/woodpecker | ||||
|   volumeClaimTemplates: | ||||
|     - metadata: | ||||
|         name: woodpecker-data | ||||
|       spec: | ||||
|         storageClassName: longhorn | ||||
|         accessModes: | ||||
|           - ReadWriteOnce | ||||
|         resources: | ||||
|           requests: | ||||
|             storage: 8Gi | ||||
| --- | ||||
| apiVersion: networking.k8s.io/v1 | ||||
| kind: Ingress | ||||
| metadata: | ||||
|   name: woodpecker | ||||
|   annotations: | ||||
|     external-dns.alpha.kubernetes.io/target: traefik.k-space.ee | ||||
|     kubernetes.io/ingress.class: traefik | ||||
|     traefik.ingress.kubernetes.io/router.entrypoints: websecure | ||||
|     traefik.ingress.kubernetes.io/router.tls: "true" | ||||
| spec: | ||||
|   tls: | ||||
|     - hosts: | ||||
|         - "*.k-space.ee" | ||||
|   rules: | ||||
|     - host: "woodpecker.k-space.ee" | ||||
|       http: | ||||
|         paths: | ||||
|           - pathType: Prefix | ||||
|             path: / | ||||
|             backend: | ||||
|               service: | ||||
|                 name: woodpecker | ||||
|                 port: | ||||
|                   number: 80 | ||||
		Reference in New Issue
	
	Block a user