Em alguns dos implanta eu estou fazendo para uma App Service
recurso que contém 2 slots (um production
e staging
slots), o webjob de preparo é não parar após a trocar de slots.
Basicamente, eu tenho na minha pipeline as seguintes tarefas:
## Start App Service (staging)
- task: AzureAppServiceManage@0
displayName: 'Start Azure App Service: some-app-webjob (staging)'
inputs:
azureSubscription: 'xxx'
Action: 'Start Azure App Service'
WebAppName: 'some-app-webjob'
SpecifySlotOrASE: true
ResourceGroupName: 'some-rg-app-webjob'
Slot: staging
##Start staging continuous webjob
- task: AzureAppServiceManage@0
displayName: 'Start all continuous webjobs: some-app-webjob (staging)'
inputs:
azureSubscription: 'Subscrição do Visual Studio Enterprise(c9f20c2b-15cf-41fb-8122-ddf095c6db02)'
Action: 'Start all continuous webjobs'
WebAppName: 'some-app-webjob'
SpecifySlotOrASE: true
ResourceGroupName: 'some-rg-app-webjob'
Slot: 'staging'
## Swap Slots (staging to production)
- task: AzureAppServiceManage@0
displayName: 'Swap Slots: some-app-webjob'
inputs:
azureSubscription: 'xxx'
WebAppName: 'some-app-webjob'
ResourceGroupName: 'some-rg-app-webjob'
SourceSlot: staging
TargetSlot: production
# Stop WebJobs running Staging
- task: AzureAppServiceManage@0
displayName: 'Stop all continuous webjobs: some-app-webjob (staging)'
inputs:
azureSubscription: 'xxx'
Action: 'Stop all continuous webjobs'
WebAppName: 'some-app-webjob'
SpecifySlotOrASE: true
ResourceGroupName: 'some-rg-app-webjob'
Slot: staging
## Stop App Service (staging)
- task: AzureAppServiceManage@0
displayName: 'Stop Azure App Service: some-app-webjob (staging)'
inputs:
azureSubscription: 'xxx'
Action: 'Stop Azure App Service'
WebAppName: 'some-app-webjob'
SpecifySlotOrASE: true
ResourceGroupName: 'some-rg-app-webjob'
Slot: staging
Se eu for olhar para o meu slot de teste o aplicativo de serviço é interrompido. Mas, às vezes, o workjob continua funcionando enquanto ele não deveria. desde que eu tenho uma tarefa que deveriam estar no topo de todas as contínuo webjobs após a troca com produção.
Em resumir isso pode acontecer:
- contínua webjob no slot de preparo execução
- contínua webjob no slot de produção de execução
Depois de pesquisar, encontrei esta thread github https://github.com/projectkudu/kudu/issues/1886 Ele indica que webjobs estão em execução no scm site que não é afetado pela parada site de comando. Ainda assim, eu tenho uma tarefa que supostamente deixa de todos contínua webjobs.
Há alguma razão para isto acontecer? Como podemos evitar isso? Eu não quero um webjob com o velho código em execução depois de um implante.
WEBJOBS_STOPPED
é uma ótima solução aplicada para preparo de fenda. Não é graciosamente parar o webjob que foi trocado?