Deploy Licensing Pipeline
Workflow: .github/workflows/deploy-licensing.yml
Тригер
- Push в
mainс промени вlicensing-go/** workflow_dispatchза ръчен деплой
Механизъм
Deployment-ът се извършва чрез az vm run-command invoke — изпълнява shell скрипт на Azure VM-а dictaro-vm.
Стъпки
1. Azure login
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
2. Write secrets & deploy
Shell скрипт изпълнен на VM-а:
- JWT ключове — base64 декодирани и записани в
keys/private.pem,keys/public.pem(chmod 600) .envфайл — генериран с всички production стойности (DB, OAuth, Stripe, Turnstile, Grafana, tunnels)- Git pull —
git pull origin main - Docker compose —
docker compose up -d --build --force-recreate
3. Health check verification
Проверява два endpoint-а:
https://api.dictaro.ai/health→ HTTP 200https://monitoring.dictaro.ai/api/health→ HTTP 200
До 18 опита × 10 секунди (timeout: 4 минути).
Важни детайли
- JWT ключовете се предават като base64 за да се избегнат проблеми с multiline стойности в
az vm run-command .envфайлът се записва с heredoc (<< 'ENVEOF') за да се избегне shell expansionAZURE_TENANT_ID=commonза OAuth (позволява логин от всеки tenant)- Деплоймент-ът рестартира всички услуги (licensing API + мониторинг стек)