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

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-а:

  1. JWT ключове — base64 декодирани и записани в keys/private.pem, keys/public.pem (chmod 600)
  2. .env файл — генериран с всички production стойности (DB, OAuth, Stripe, Turnstile, Grafana, tunnels)
  3. Git pullgit pull origin main
  4. Docker composedocker compose up -d --build --force-recreate

3. Health check verification

Проверява два endpoint-а:

  • https://api.dictaro.ai/health → HTTP 200
  • https://monitoring.dictaro.ai/api/health → HTTP 200

До 18 опита × 10 секунди (timeout: 4 минути).

Важни детайли

  • JWT ключовете се предават като base64 за да се избегнат проблеми с multiline стойности в az vm run-command
  • .env файлът се записва с heredoc (<< 'ENVEOF') за да се избегне shell expansion
  • AZURE_TENANT_ID=common за OAuth (позволява логин от всеки tenant)
  • Деплоймент-ът рестартира всички услуги (licensing API + мониторинг стек)