- Update .woodpecker.yml to inject Mistral and JWT secrets as environment variables - Update docker-compose.yml to pass secrets to backend container - Secrets are loaded from Woodpecker and passed via environment variables: - MISTRAL_APIKEY, MISTRAL_BASEURL, MISTRAL_DEFAULTMODEL, etc. - JWT_KEY, JWT_ISSUER, JWT_AUDIENCE, JWT_EXPIREHOURS - Production deployment will use Woodpecker secrets instead of appsettings files Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
121 lines
No EOL
4 KiB
YAML
121 lines
No EOL
4 KiB
YAML
when:
|
|
- branch: main
|
|
event: push
|
|
|
|
steps:
|
|
- name: build-and-test
|
|
image: mcr.microsoft.com/dotnet/sdk:9.0
|
|
commands:
|
|
- dotnet restore GermanApp/GermanApp.csproj
|
|
- dotnet build GermanApp/GermanApp.csproj --no-restore --configuration Release
|
|
when:
|
|
- branch:
|
|
- main
|
|
- feature/*
|
|
- bugfix/*
|
|
- refactor/*
|
|
|
|
- name: build-backend
|
|
image: woodpeckerci/plugin-docker-buildx
|
|
privileged: true
|
|
settings:
|
|
dockerfile: GermanApp/Dockerfile
|
|
context: GermanApp
|
|
registry: registry.lrhdev.dk
|
|
repo: registry.lrhdev.dk/lasserh/deutschlernen-backend
|
|
username:
|
|
from_secret: REGISTRY_USERNAME
|
|
password:
|
|
from_secret: REGISTRY_PASSWORD
|
|
tags:
|
|
- latest
|
|
- ${CI_COMMIT_SHA}
|
|
when:
|
|
- branch: main
|
|
|
|
- name: build-frontend
|
|
image: woodpeckerci/plugin-docker-buildx
|
|
privileged: true
|
|
settings:
|
|
dockerfile: german-app-frontend/Dockerfile
|
|
context: german-app-frontend
|
|
registry: registry.lrhdev.dk
|
|
repo: registry.lrhdev.dk/lasserh/deutschlernen-frontend
|
|
username:
|
|
from_secret: REGISTRY_USERNAME
|
|
password:
|
|
from_secret: REGISTRY_PASSWORD
|
|
tags:
|
|
- latest
|
|
- ${CI_COMMIT_SHA}
|
|
when:
|
|
- branch: main
|
|
|
|
- name: deploy
|
|
image: appleboy/drone-ssh
|
|
settings:
|
|
host:
|
|
from_secret: SSH_HOST
|
|
username: root
|
|
key:
|
|
from_secret: SSH_PRIVATE_KEY
|
|
script:
|
|
- docker login registry.lrhdev.dk -u $REGISTRY_USERNAME -p $REGISTRY_PASSWORD
|
|
- docker pull registry.lrhdev.dk/lasserh/deutschlernen-backend:latest
|
|
- docker pull registry.lrhdev.dk/lasserh/deutschlernen-frontend:latest
|
|
- cd /opt/deutschlernen
|
|
- docker compose down
|
|
# Pass JWT and Mistral configuration as environment variables to docker compose
|
|
- export Jwt__Key=$JWT_KEY
|
|
- export Jwt__Issuer=$JWT_ISSUER
|
|
- export Jwt__Audience=$JWT_AUDIENCE
|
|
- export Jwt__ExpireHours=$JWT_EXPIREHOURS
|
|
- export Mistral__ApiKey=$MISTRAL_APIKEY
|
|
- export Mistral__BaseUrl=$MISTRAL_BASEURL
|
|
- export Mistral__DefaultModel=$MISTRAL_DEFAULTMODEL
|
|
- export Mistral__TimeoutSeconds=$MISTRAL_TIMEOUTSECONDS
|
|
- export Mistral__MaxRetries=$MISTRAL_MAXRETRIES
|
|
- export Mistral__RateLimitPerMinute=$MISTRAL_RATELIMITPERMINUTE
|
|
- export Mistral__EnableCaching=$MISTRAL_ENABLECACHING
|
|
- export Mistral__CacheTTLMinutes=$MISTRAL_CACHETTLMINUTES
|
|
- export Mistral__CircuitBreakerFailureThreshold=$MISTRAL_CIRCUITBREAKERFAILURETHRESHOLD
|
|
- export Mistral__CircuitBreakerResetMinutes=$MISTRAL_CIRCUITBREAKERRESETMINUTES
|
|
- docker compose up -d
|
|
- docker image prune -f
|
|
environment:
|
|
REGISTRY_USERNAME:
|
|
from_secret: REGISTRY_USERNAME
|
|
REGISTRY_PASSWORD:
|
|
from_secret: REGISTRY_PASSWORD
|
|
# JWT Configuration - Woodpecker secrets for production
|
|
JWT_KEY:
|
|
from_secret: JWT_KEY
|
|
JWT_ISSUER:
|
|
from_secret: JWT_ISSUER
|
|
JWT_AUDIENCE:
|
|
from_secret: JWT_AUDIENCE
|
|
JWT_EXPIREHOURS:
|
|
from_secret: JWT_EXPIREHOURS
|
|
# Mistral API Configuration - Woodpecker secrets for production
|
|
MISTRAL_APIKEY:
|
|
from_secret: MISTRAL_APIKEY
|
|
MISTRAL_BASEURL:
|
|
from_secret: MISTRAL_BASEURL
|
|
MISTRAL_DEFAULTMODEL:
|
|
from_secret: MISTRAL_DEFAULTMODEL
|
|
MISTRAL_TIMEOUTSECONDS:
|
|
from_secret: MISTRAL_TIMEOUTSECONDS
|
|
MISTRAL_MAXRETRIES:
|
|
from_secret: MISTRAL_MAXRETRIES
|
|
MISTRAL_RATELIMITPERMINUTE:
|
|
from_secret: MISTRAL_RATELIMITPERMINUTE
|
|
MISTRAL_ENABLECACHING:
|
|
from_secret: MISTRAL_ENABLECACHING
|
|
MISTRAL_CACHETTLMINUTES:
|
|
from_secret: MISTRAL_CACHETTLMINUTES
|
|
MISTRAL_CIRCUITBREAKERFAILURETHRESHOLD:
|
|
from_secret: MISTRAL_CIRCUITBREAKERFAILURETHRESHOLD
|
|
MISTRAL_CIRCUITBREAKERRESETMINUTES:
|
|
from_secret: MISTRAL_CIRCUITBREAKERRESETMINUTES
|
|
when:
|
|
- branch: main |