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)