Deploy Licensing Pipeline
Workflow: .github/workflows/deploy-licensing.yml
Тригер
- Push в
mainс промени вlicensing-go/** workflow_dispatchза ръчен деплой
Механизъм
Deployment-ът се извършва чрез self-hosted GitHub Actions runner на dictaro-vm (същия подход като DGX Spark за ASR).
Стъпки
1. Checkout
uses: actions/checkout@v4
Runner-ът чекаутва кода директно на VM-а.
2. Write JWT keys
JWT ключовете (raw PEM) се записват от GitHub Secrets в keys/private.pem и keys/public.pem.
3. Build and deploy
Всички secrets се подават като environment variables към docker compose:
env:
DATABASE_URL: postgresql://dictaro:${{ secrets.DB_PASSWORD }}@...
SESSION_SECRET: ${{ secrets.SESSION_SECRET }}
# ... 20+ env vars
run: docker compose -f docker-compose.yml up -d --build --force-recreate
docker-compose.yml използва ${VAR} интерполация — без .env файл.
4. Health check verification
Проверява два endpoint-а локално:
http://localhost:8000/health→ HTTP 200http://localhost:3000/api/health→ HTTP 200
До 18 опита × 10 секунди (timeout: 4 минути).
Важни детайли
- Без
.envфайл — env vars идват директно от GitHub Actions - JWT ключовете са raw PEM в GitHub Secrets (без base64)
docker compose -f docker-compose.yml— без override файл в production- Деплоймент-ът рестартира всички услуги (licensing API + мониторинг стек)
- Docker volume-ите (
prometheus-data,grafana-data,loki-data) се запазват между деплоймент-и