woodpecker ci
This commit is contained in:
@@ -35,3 +35,6 @@ creation_rules:
|
|||||||
- path_regex: gitea.*\.enc\.yaml$
|
- path_regex: gitea.*\.enc\.yaml$
|
||||||
encrypted_regex: ^(data|stringData)$
|
encrypted_regex: ^(data|stringData)$
|
||||||
age: age1ktlxm0hukw6jxm62txqy5x2nl8hpdnal8nv00kfhrf3pw33574aqa6j5cj
|
age: age1ktlxm0hukw6jxm62txqy5x2nl8hpdnal8nv00kfhrf3pw33574aqa6j5cj
|
||||||
|
- path_regex: woodpecker.*\.enc\.yaml$
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
age: age13qwkssk8esashln2j3gfv6e9csashr4vddkdav5v38hm5wejl36qd2ew9s
|
||||||
|
|||||||
@@ -0,0 +1,100 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: woodpecker
|
||||||
|
namespace: ci
|
||||||
|
spec:
|
||||||
|
interval: 10m
|
||||||
|
chartRef:
|
||||||
|
kind: OCIRepository
|
||||||
|
name: woodpecker
|
||||||
|
driftDetection:
|
||||||
|
mode: enabled
|
||||||
|
values:
|
||||||
|
controllers:
|
||||||
|
server:
|
||||||
|
replicas: 1
|
||||||
|
strategy: Recreate # sqlite on RWO volume
|
||||||
|
containers:
|
||||||
|
app:
|
||||||
|
image:
|
||||||
|
repository: woodpeckerci/woodpecker-server
|
||||||
|
tag: v3.8.0
|
||||||
|
env:
|
||||||
|
WOODPECKER_HOST: https://ci.aggtaa.com
|
||||||
|
WOODPECKER_OPEN: "false"
|
||||||
|
WOODPECKER_ADMIN: anton
|
||||||
|
WOODPECKER_GITEA: "true"
|
||||||
|
WOODPECKER_GITEA_URL: https://git.aggtaa.com
|
||||||
|
WOODPECKER_DATABASE_DRIVER: sqlite3
|
||||||
|
WOODPECKER_DATABASE_DATASOURCE: /var/lib/woodpecker/woodpecker.sqlite
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: woodpecker-secrets
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 128Mi
|
||||||
|
limits:
|
||||||
|
memory: 512Mi
|
||||||
|
agent:
|
||||||
|
replicas: 1
|
||||||
|
serviceAccount:
|
||||||
|
name: woodpecker-agent # created in rbac.yaml
|
||||||
|
containers:
|
||||||
|
app:
|
||||||
|
image:
|
||||||
|
repository: woodpeckerci/woodpecker-agent
|
||||||
|
tag: v3.8.0
|
||||||
|
env:
|
||||||
|
WOODPECKER_SERVER: woodpecker-server:9000
|
||||||
|
WOODPECKER_BACKEND: kubernetes
|
||||||
|
WOODPECKER_BACKEND_K8S_NAMESPACE: ci
|
||||||
|
WOODPECKER_BACKEND_K8S_STORAGE_CLASS: longhorn-no-retain
|
||||||
|
WOODPECKER_BACKEND_K8S_VOLUME_SIZE: 5G
|
||||||
|
WOODPECKER_MAX_WORKFLOWS: "2"
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: woodpecker-secrets
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 20m
|
||||||
|
memory: 64Mi
|
||||||
|
limits:
|
||||||
|
memory: 256Mi
|
||||||
|
|
||||||
|
service:
|
||||||
|
server:
|
||||||
|
controller: server
|
||||||
|
ports:
|
||||||
|
http:
|
||||||
|
port: 8000
|
||||||
|
grpc:
|
||||||
|
port: 9000
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
server:
|
||||||
|
className: traefik
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
hosts:
|
||||||
|
- host: ci.aggtaa.com
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
service:
|
||||||
|
identifier: server
|
||||||
|
port: http
|
||||||
|
tls:
|
||||||
|
- secretName: woodpecker-tls
|
||||||
|
hosts:
|
||||||
|
- ci.aggtaa.com
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
data:
|
||||||
|
type: persistentVolumeClaim
|
||||||
|
existingClaim: woodpecker-data
|
||||||
|
advancedMounts:
|
||||||
|
server:
|
||||||
|
app:
|
||||||
|
- path: /var/lib/woodpecker
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: source.toolkit.fluxcd.io/v1
|
||||||
|
kind: OCIRepository
|
||||||
|
metadata:
|
||||||
|
name: woodpecker
|
||||||
|
namespace: ci
|
||||||
|
spec:
|
||||||
|
interval: 10m
|
||||||
|
url: oci://ghcr.io/bjw-s-labs/helm/app-template
|
||||||
|
ref:
|
||||||
|
tag: "5.0.1"
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- helmrepository.yaml
|
||||||
|
- secret.enc.yaml
|
||||||
|
- pvc.yaml
|
||||||
|
- rbac.yaml
|
||||||
|
- helmrelease.yaml
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-data
|
||||||
|
namespace: ci
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
storageClassName: longhorn
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 2Gi
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# Agent runs pipeline steps as pods in this namespace (kubernetes backend)
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-agent
|
||||||
|
namespace: ci
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-agent
|
||||||
|
namespace: ci
|
||||||
|
rules:
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: [pods, pods/log]
|
||||||
|
verbs: [create, get, list, watch, delete]
|
||||||
|
- apiGroups: [""]
|
||||||
|
resources: [persistentvolumeclaims, services, secrets, configmaps]
|
||||||
|
verbs: [create, get, list, watch, update, delete]
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-agent
|
||||||
|
namespace: ci
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: woodpecker-agent
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: woodpecker-agent
|
||||||
|
namespace: ci
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-secrets
|
||||||
|
namespace: ci
|
||||||
|
stringData:
|
||||||
|
WOODPECKER_AGENT_SECRET: ENC[AES256_GCM,data:UyYPJpkHb2G1Vpe2tEtkNDMktp6zFbeNtDF34Kp8vf6nAY5/2EYXBJvT4+Ns2oOGNZOupdCUmTowrJ+ITNFwhQ==,iv:EtXILwt+FFYvqvLw9kLODh0wyhrHG+GJNGZRu6wzXd4=,tag:Ly5dsTWio741VxgtPy51XQ==,type:str]
|
||||||
|
WOODPECKER_GITEA_CLIENT: ENC[AES256_GCM,data:hXBo5EwhHuCTQ4vQBAmjnLTlQ6cY2dKeJ5vZJ27wMFUsKZpS,iv:Pzt78GVSWngjVvpVSEgvsImK+siHEHOqQy+jOAxrGkc=,tag:JYu+Jf+n9J4L4LPwRPPbSw==,type:str]
|
||||||
|
WOODPECKER_GITEA_SECRET: ENC[AES256_GCM,data:nu4FTBjdJe7oHx2Vt1ElxJXVnYzONC3kKYlXwvtmVI3/DokjSGA0YwLy0jI58l7K9nBbzGKuuZM=,iv:U6mfIG+LYhSfooIK3yhJay+fQh5oCNyGUggN+MrY4os=,tag:Oho0FnhePMLhFzsyhFISZQ==,type:str]
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age13qwkssk8esashln2j3gfv6e9csashr4vddkdav5v38hm5wejl36qd2ew9s
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA1anNnNDlnSjhMU2h4clVV
|
||||||
|
eFJnNEx6VmU1RjR0a1RQQTRML3lBaUphSkU4CnNuM0I2NkFPMlU1clFNY3V5Sk9Y
|
||||||
|
b0NJNzlUMjJsRVZMdndzUWYyNWhjeHMKLS0tIEp0Y2E3dTRwRTUyUmprRktFNUJp
|
||||||
|
TXlXWjViSGNFb1FhQ0xDT0gvajdwSlEKXB7N64RmaWgCCSvG/nNWOziO7QnN729i
|
||||||
|
jJLB6SPiHjgNMn1GP+rsAstVFStB0fn2mh6QpWrdhAM3/NFBqQfy7A==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2026-10-07T08:19:00Z"
|
||||||
|
mac: ENC[AES256_GCM,data:MInWU0fjxmodXDN7x9U6rd2V2xCjty94Bb7Y0HlwJscaSmLR0jgkjTV0dYimPlyBfVhNlJzgmKcMj9ZvZOqxMKVive6L5Hghq5RXG2LKimWu5VyjffMabP9w3Edob+4prfT2EJ8rAY1OjuP00CiKc/958+ZoVYafN/hj4wqEmas=,iv:cpc2LcbdxJv0LenEA0W7TWLQSAMyCCEd/pHgxs9EUus=,tag:5dC2RKTm079OxgyG8aF3Ow==,type:str]
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.11.0
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: ci
|
||||||
@@ -16,4 +16,5 @@ resources:
|
|||||||
- immich.yaml
|
- immich.yaml
|
||||||
- joplin.yaml
|
- joplin.yaml
|
||||||
- gitea.yaml
|
- gitea.yaml
|
||||||
- dev.yaml
|
- dev.yaml
|
||||||
|
- woodpecker.yaml
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||||
|
kind: Kustomization
|
||||||
|
metadata:
|
||||||
|
name: woodpecker
|
||||||
|
namespace: flux-system
|
||||||
|
spec:
|
||||||
|
interval: 10m
|
||||||
|
sourceRef:
|
||||||
|
kind: GitRepository
|
||||||
|
name: flux-system
|
||||||
|
path: ./clusters/base/apps/woodpecker
|
||||||
|
prune: true
|
||||||
|
wait: true
|
||||||
|
dependsOn:
|
||||||
|
- name: namespaces
|
||||||
|
- name: infra
|
||||||
|
- name: gitea
|
||||||
|
retryInterval: 5s
|
||||||
|
decryption:
|
||||||
|
provider: sops
|
||||||
|
secretRef:
|
||||||
|
name: sops-age-woodpecker
|
||||||
@@ -18,3 +18,4 @@ resources:
|
|||||||
- ../../base/namespaces/photo.yaml
|
- ../../base/namespaces/photo.yaml
|
||||||
- ../../base/namespaces/git.yaml
|
- ../../base/namespaces/git.yaml
|
||||||
- ../../base/namespaces/dev.yaml
|
- ../../base/namespaces/dev.yaml
|
||||||
|
- ../../base/namespaces/ci.yaml
|
||||||
|
|||||||
Reference in New Issue
Block a user