chore(ci): add woodpecker pipelines for backend and web

This commit is contained in:
2026-04-28 14:04:16 +02:00
parent 5f96daf7f3
commit 8fd3e53fe6
2 changed files with 136 additions and 0 deletions

79
.woodpecker/backend.yaml Normal file
View File

@@ -0,0 +1,79 @@
when:
- event: push
branch: main
path:
- 'backend/**'
- '.woodpecker/backend.yaml'
services:
docker:
image: docker:29-dind
privileged: true
environment:
DOCKER_TLS_CERTDIR: ''
commands:
- dockerd-entrypoint.sh --host=tcp://0.0.0.0:2375 --tls=false
steps:
build:
image: docker:29
environment:
DOCKER_HOST: tcp://docker:2375
REGISTRY_USER:
from_secret: registry_user
REGISTRY_PASSWORD:
from_secret: registry_password
commands:
- apk add --no-cache git
- until docker info > /dev/null 2>&1; do echo "waiting for dind..."; sleep 1; done
- docker login -u "$REGISTRY_USER" -p "$REGISTRY_PASSWORD" registry.itsh.dev
- docker buildx create --name ci-builder --driver docker-container --use
- export SOURCE_DATE_EPOCH=$(git log -1 --format=%ct)
- SHORT_SHA=$(echo "$CI_COMMIT_SHA" | cut -c1-8)
- |
docker buildx build \
--output "type=image,push=true,rewrite-timestamp=true" \
-f backend/deploy/Dockerfile \
-t "registry.itsh.dev/vikingowl/marktvogt.de/backend:$SHORT_SHA" \
backend/
deploy:
image: alpine/helm:4.1
depends_on: [build]
environment:
KUBECONFIG_DATA:
from_secret: kubeconfig_data
SMTP_HOST:
from_secret: smtp_host
SMTP_USER:
from_secret: smtp_user
SMTP_PASSWORD:
from_secret: smtp_password
AI_API_KEY:
from_secret: ai_api_key
AI_AGENT_SIMPLE:
from_secret: ai_agent_simple
AI_AGENT_DISCOVERY:
from_secret: ai_agent_discovery
DISCOVERY_TOKEN:
from_secret: discovery_token
TURNSTILE_SECRET_KEY:
from_secret: turnstile_secret_key
commands:
- mkdir -p ~/.kube
- echo "$KUBECONFIG_DATA" > ~/.kube/config
- chmod 600 ~/.kube/config
- SHORT_SHA=$(echo "$CI_COMMIT_SHA" | cut -c1-8)
- |
helm upgrade --install marktvogt-backend ./backend/deploy/helm/ \
--namespace tenant-2 \
--set image.tag="$SHORT_SHA" \
--set smtp.host="$SMTP_HOST" \
--set smtp.user="$SMTP_USER" \
--set smtp.password="$SMTP_PASSWORD" \
--set ai.apiKey="$AI_API_KEY" \
--set ai.agentSimple="$AI_AGENT_SIMPLE" \
--set ai.agentDiscovery="$AI_AGENT_DISCOVERY" \
--set discovery.token="$DISCOVERY_TOKEN" \
--set turnstile.secretKey="$TURNSTILE_SECRET_KEY" \
--rollback-on-failure --wait=watcher --timeout 5m

57
.woodpecker/web.yaml Normal file
View File

@@ -0,0 +1,57 @@
when:
- event: push
branch: main
path:
- 'web/**'
- '.woodpecker/web.yaml'
services:
docker:
image: docker:29-dind
privileged: true
environment:
DOCKER_TLS_CERTDIR: ''
commands:
- dockerd-entrypoint.sh --host=tcp://0.0.0.0:2375 --tls=false
steps:
build:
image: docker:29
environment:
DOCKER_HOST: tcp://docker:2375
REGISTRY_USER:
from_secret: registry_user
REGISTRY_PASSWORD:
from_secret: registry_password
commands:
- apk add --no-cache git
- until docker info > /dev/null 2>&1; do echo "waiting for dind..."; sleep 1; done
- docker login -u "$REGISTRY_USER" -p "$REGISTRY_PASSWORD" registry.itsh.dev
- docker buildx create --name ci-builder --driver docker-container --use
- export SOURCE_DATE_EPOCH=$(git log -1 --format=%ct)
- SHORT_SHA=$(echo "$CI_COMMIT_SHA" | cut -c1-8)
- |
docker buildx build \
--output "type=image,push=true,rewrite-timestamp=true" \
-f web/Dockerfile \
--build-arg PUBLIC_API_BASE_URL=https://api.marktvogt.de \
--build-arg PUBLIC_TURNSTILE_SITE_KEY=0x4AAAAAACjLCV-78Ql1oTPz \
-t "registry.itsh.dev/vikingowl/marktvogt.de/web:$SHORT_SHA" \
web/
deploy:
image: alpine/helm:4.1
depends_on: [build]
environment:
KUBECONFIG_DATA:
from_secret: kubeconfig_data
commands:
- mkdir -p ~/.kube
- echo "$KUBECONFIG_DATA" > ~/.kube/config
- chmod 600 ~/.kube/config
- SHORT_SHA=$(echo "$CI_COMMIT_SHA" | cut -c1-8)
- |
helm upgrade --install marktvogt-web ./web/deploy/helm/ \
--namespace tenant-2 \
--set image.tag="$SHORT_SHA" \
--rollback-on-failure --wait=watcher --timeout 5m