簡體   English   中英

在 Azure Devops 中部署管道后,暫存槽的 Web 作業未停止

[英]Webjob of staging slot not stopping after a pipeline deploy in Azure Devops

在我對包含 2 個插槽( productionstaging插槽)的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 之上。

總而言之,這可能會發生:

  • 插槽分段運行中的連續 webjob
  • 插槽生產運行中的連續網絡作業

經過搜索,我發現這個 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM