Atualizando um Azure App Service Web Apps usando Azure DevOps

O Azure App Service é um serviço PaaS (Platform as a Service) destinado a hospedagem de aplicações em várias tecnologias como ASP.NET Core, Java, Ruby, Node.js, PHP ou Python além de ser possivel a utilização com um container sejá via Docker Hub ou outro repositório privado como o Azure Container Registry (ACR).

Nesse contexto nós utilizaremos o Azure DevOps para atualizar um serviço criado previamente no Azure App Service Web.

Em um cenário normal você estaria executando o Dockefile usando o Docker Build, criando um tag e depois efeteuando o Push para o seu repositório no Docker ou similares. Eu estarei utilizando uma imagem publicada em meu Docker Hub.

Para iniciar vá ao Azure DevOps > Pipeline > New Pipeline e escolha um repositório do Git e depois “Starter pipeline”. Para o processo de publicação eu estarei utilizando três tarefas “Tasks” do Azure DevOps que já se integram ao App Service. Outra opção seria executar comandos pelo Power Shell.

A minha imagem Docker é um Microservices Cloud-Native criando utilizando o Stack do DevPrime que acelera o desenvolvimento de Microservices e API’s. Esse Microservices de conecta no mongodb que nesse cenário utilizada o CosmosDB do Azure e no Kafka que está vinculado ao Azure Event Hub.


01) Configurando uma imagem do docker no Azure App Service

task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: ‘AzureRM’ azureSubscription: ‘Microsoft Azure Sponsorship (XYA-4XMBC-01981818)’
appType: ‘webAppContainer’
WebAppName: ‘appdemo’
DockerNamespace: ‘ramonduraes’
DockerRepository: ‘ms’
DockerImageTag: ‘v1’
appSettings:

02) Definindo as variáveis de ambiente para o container dentro do Azure App Service
task: AzureAppServiceSettings@1
inputs:
azureSubscription: ‘Microsoft Azure (7d3aeccb-365c-42bf-83f2-894e68dd3682)’
appName: ‘appdemo’
resourceGroupName: ‘demo’
appSettings: |
[
{
“name”: “devprime_app”,
“value”: “debug=false|||debugweb=false|||debugstate=false|||debugstream=false|||debugservices=false|||License=MyDevPrimeID”,
“slotSetting”: false
},
{
“name”: “devprime_custom”,
“value”: “stream.orderevents=orderevents”,
“slotSetting”: false
},
{
“name”: “devprime_observability”,
“value”: “enable=true|||saveInFile=false|||hideDetails=false|||path=”,
“slotSetting”: false
},
{
“name”: “devprime_security”,
“value”: “enable=false”,
“slotSetting”: false
},
{
“name”: “devprime_state1”,
“value”: “dbtype=mongodb|||alias=State1|||connection=mongodb://mydevprimedb:AmcDoamma==@mydevprimedb.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@devprimedb@|||retry=3|||timeout=5|||dbname=WebAppLixo|||isssl=true|||numberofattempts=3|||durationofbreak=45”,
“slotSetting”: false
},
{
“name”: “devprime_stream1”,
“value”: “enable=true|||alias=Stream1|||streamtype=Kafka|||default=true|||hostName=kafka.servicebus.windows.net:9093|||user=$ConnectionString|||password=Endpoint=sb://kafka.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=CMAUAKA|||retry=3|||fallback=State1|||subscribe[]”,
“slotSetting”: false
},
{
“name”: “devprime_web”,
“value”: “enabled=true|||url=http://*:80|||enableswagger=true|||httpcodes=400;404;500|||PostSuccess=201|||PostFailure=500|||GetSuccess=200|||GetFailure=500|||PatchSuccess=200|||PatchFailure=|||500|||PutSuccess=200|||PutFailure=500|||DeleteSuccess=200|||DeleteFailure=500”,
“slotSetting”: false
},
{
“name”: “WEBSITE_HTTPLOGGING_RETENTION_DAYS”,
“value”: “5”,
“slotSetting”: false
}
]


03 ) Reinicializando o Azure App Service
task: AzureAppServiceManage@0
inputs:
azureSubscription: ‘Microsoft Azure (7d3aeccb-365c-42bf-83f2-894e68dd3682)’
Action: ‘Restart Azure App Service’
WebAppName: ‘appdemo’

Ao final basta salvar e executar o processo de deployment do Azure DevOps.

Para saber mais:

Cadastre-se no DevPrime e acelere o desenvolvimento de Microservices

Para contato para ajudarmos na sua estratégia de modernização de aplicações e arquitetura de software.
[],
Ramon Durães