В некоторых развертываниях, которые я выполняю для App Service
ресурс, содержащий 2 слота (a production
и staging
слоты), веб-задание постановки не останавливается после замены слотов.
В основном у меня в конвейере есть следующие задачи:
## 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
Если я пойду искать свой слот, служба приложений будет остановлена. Но иногда рабочее задание продолжает выполняться, в то время как оно не должно выполняться. так как у меня есть задача, которая должна возглавлять все непрерывные веб-задания после обмена с производством.
Подводя итог, можно сказать, что это может произойти:
- непрерывное выполнение веб-задания в промежуточном слоте
- непрерывная веб-работа в процессе производства слотов
После поиска я нашел эту тему на github https://github.com/projectkudu/kudu/issues/1886 Это указывает на то, что веб-задания выполняются на сайте scm, на который не влияет команда остановить сайт. Тем не менее, у меня есть задача, которая предположительно останавливает все непрерывные веб-задания.
Есть ли какая-то причина для этого? Как мы можем предотвратить это? Я не хочу, чтобы веб-задание со старым кодом выполнялось после развертывания.
WEBJOBS_STOPPED
это отличное решение, применяемое для промежуточного слота. Изящно ли это останавливает веб-задание, которое было заменено?