Skip to content

Deployment

Source Control

Propriedade Valor
Azure DevOps https://dev.azure.com/double-pt/Unicef/_git/Unicef
Git remote azure Azure DevOps (principal)
Git remote origin GitHub (legacy mirror)
Branch principal main
Branch development develop (historicamente), qual

Processo de Deploy atual

Aviso

Não foi identificado um pipeline CI/CD ativo no Azure DevOps. O deploy parece ser feito manualmente ou via slot swap.

O App Service de produção (uncwebprd) tem um staging slot disponível que pode ser utilizado para deploys seguros.

Deploy recomendado (Slot Swap)

O processo recomendado utiliza o staging slot para minimizar downtime e permitir rollback imediato.

flowchart LR A[Build local / pipeline] --> B[Deploy para staging slot] B --> C[Testar no staging] C --> D{Testes OK?} D -->|Sim| E[Swap staging - production] D -->|Nao| F[Corrigir e voltar ao passo 1] E --> G{Producao OK?} G -->|Sim| H[Deploy concluido] G -->|Nao| I[Swap de volta - rollback]

Passo 1: Deploy para o staging slot

# Via Azure CLI (publish de um pacote ZIP)
az webapp deployment source config-zip \
  --name uncwebprd \
  --resource-group unc-prd \
  --slot staging \
  --src <caminho-para-pacote.zip> \
  --subscription 2e6c7ed6-c6f8-4058-901c-c3113a4df82a

Em alternativa, configurar deploy via Git para o staging slot:

# Obter URL de deploy do staging
az webapp deployment source config-local-git \
  --name uncwebprd \
  --resource-group unc-prd \
  --slot staging \
  --subscription 2e6c7ed6-c6f8-4058-901c-c3113a4df82a

# Push para o staging
git push staging main

Passo 2: Testar no staging slot

Aceder ao URL do staging slot e validar:

  • Homepage carrega corretamente
  • Navegacao funciona
  • API responde: curl https://uncwebprd-staging.azurewebsites.net/umbraco/Api/ContentApi/GetData/?url=/
  • Backoffice acessivel

Passo 3: Swap staging para producao

az webapp deployment slot swap \
  --name uncwebprd \
  --resource-group unc-prd \
  --slot staging \
  --subscription 2e6c7ed6-c6f8-4058-901c-c3113a4df82a

Passo 4: Verificar producao

# Verificar que a homepage responde
curl -s -o /dev/null -w "%{http_code}" https://www.unicef.pt

# Verificar que a API responde
curl -s -o /dev/null -w "%{http_code}" \
  "https://www.unicef.pt/umbraco/Api/ContentApi/GetData/?url=/"

Rollback (se necessário)

Se a produção apresentar problemas após o swap, reverter imediatamente:

az webapp deployment slot swap \
  --name uncwebprd \
  --resource-group unc-prd \
  --slot staging \
  --subscription 2e6c7ed6-c6f8-4058-901c-c3113a4df82a

O segundo swap reverte a produção para a versão anterior.

Configurações por ambiente

O projeto utiliza Web.config transforms para diferenciar configurações entre ambientes:

Ficheiro Ambiente Notas
Web.config Local (dev) SQL Express / Docker local
Web.Qual.config Qualidade Azure SQL qual, HTTPS para qual.unicef.pt
Web.Prod.config Producao Azure SQL prd, HTTPS para www.unicef.pt, PayPal live

Diferenças principais entre ambientes

Configuração Local Qualidade Produção
SQL Server localhost,1434 Azure SQL (qual) Azure SQL (prd)
HTTPS Não Sim (qual.unicef.pt) Sim (www.unicef.pt)
PayPal Sandbox Sandbox Live
Debug Ativado Ativado Desativado
Custom errors Off On On

Deploy para o ambiente de Qualidade

# Deploy para qualidade
az webapp deployment source config-zip \
  --name uncwebqual \
  --resource-group unc-qual \
  --src <caminho-para-pacote.zip> \
  --subscription 2e6c7ed6-c6f8-4058-901c-c3113a4df82a

Recomendações futuras

  • Implementar pipeline CI/CD no Azure DevOps com build automático, testes e deploy para staging
  • Configurar aprovações para o swap de staging para produção
  • Migrar segredos do Web.config para Azure Key Vault
  • Automatizar testes de smoke após deploy (verificação de homepage e API)