Преминете към основното съдържание

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 200
  • http://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) се запазват между деплоймент-и