[英]Webjob of staging slot not stopping after a pipeline deploy in Azure Devops
在我對包含 2 個插槽( production
和staging
插槽)的App Service
資源進行的一些部署中,暫存的 Web 作業在交換插槽后不會停止。
基本上我的管道中有以下任務:
## 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
如果我 go 查看我的插槽暫存應用程序服務已停止。 但有時工作作業會繼續運行,而它不應該運行。 因為我有一個任務應該在與生產交換后的所有連續 webjobs 之上。
總而言之,這可能會發生:
經過搜索,我發現這個 github 線程https://github.com/projectkudu/kudu/issues/1886它表明 webjobs 正在 scm 站點中運行,不受停止站點命令的影響。 不過,我有一項任務據說會停止所有連續的網絡作業。
發生這種情況有什么原因嗎? 我們怎樣才能防止這種情況發生? 我不希望在部署后運行舊代碼的網絡作業。
要在停止的 state 中部署連續的 WebJob,只需在 WebJob(二進制文件)的根目錄添加一個名為disable.job
的文件,這將告訴框架 WebJob 當前已停止。
您可以將應用程序設置WEBJOBS_STOPPED
添加到暫存槽並將其設置為1
(在 azure 門戶中)。 將此設置設置為“插槽設置”,以便不與生產交換。
當您將源槽(暫存)交換到目標槽(生產)時,就會發生這種情況。
首先,暫存站點需要通過對標記為“插槽”的應用程序設置和連接字符串的一些設置更改來 go。 還可能需要應用與源代碼控制相關的其他更改。 這會導致暫存站點重新啟動,這很好。
接下來,Staging 站點通過將請求發送到其根路徑(即'/')並等待它完成來預熱。
現在暫存站點是溫暖的,它被交換到生產中。 沒有停機時間,因為它直接從一個溫暖的站點到另一個站點。
最后,曾經是 Production 而現在是 Staging 的站點也需要應用一些設置,導致它重新啟動。 同樣,這很好,因為它發生在臨時站點中。
我不希望在部署后運行舊代碼的網絡作業。
檢查您是否有舞台環境(將 -stage 添加到 Webapp 名稱),如果有 go 進入 Azure 管理門戶並停止它們。
僅停止 Webapp 是不夠的,您必須直接停止 WebJobs。 這是在 Settings->WebJobs 下完成的(在新門戶中),然后右鍵單擊 webjobs 名稱選擇停止。
有關詳細信息,請參閱Azure Web 應用程序(網站)部署槽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.