Web-zadanie pośrednie gniazda, nie останавливающееся po wdrożeniu przenośnika w Azure Devops

0

Pytanie

W niektórych wdrożeniach, które robię dla App Service zasób, który zawiera 2 gniazda (a production i staging slots), web-zadanie inscenizacji nie zatrzymuje się po wymianie gniazda.

W zasadzie u mnie w przenośniku są następujące zadania:

## 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

Jeśli idę szukać swojego gniazda, aplikacja zostanie zatrzymana. Ale czasem pracy zadanie będzie kontynuowane, podczas gdy ono nie powinno być wykonywane. tak jak u mnie jest zadanie, które musi przewodzić wszystkie ciągłe www zadania po wymianie z produkcją.

Podsumowując, można powiedzieć, że to może się zdarzyć:

  • ciągłe wykonywanie stron-zadania w pośrednim miejscu
  • ciągła stron-praca w procesie produkcji gniazd

Po poszukiwaniach znalazłem ten temat na github https://github.com/projectkudu/kudu/issues/1886 Oznacza to, że strony-zadania są wykonywane na miejscu scm, na który nie ma wpływu zespół zatrzymać stronę. Niemniej jednak, mam zadanie, które przypuszczalnie zatrzymuje wszystkie ciągłe www zadania.

Czy istnieje jakiś powód do tego? Jak możemy temu zapobiec? Nie chcę, aby witryny zadanie ze starym kodem wykonano po wdrożeniu.

1

Najlepsza odpowiedź

1

Aby rozwinąć ciągłe www zadanie w stanie zatrzymanym, wystarczy dodać plik o nazwie disable.job w głównym katalogu twojej strony-zadania (pliki binarne) to poinformuje platformie, że web zadanie w tej chwili zatrzymany.

Możesz dodać ustawienia aplikacji WEBJOBS_STOPPED w swój pośredni gniazda i ustaw go w 1 (na portalu azure). Zrób to ustawienie "Ustawienia gniazda", aby nie zmieniała się miejscami z produkcją.

To, co się dzieje, gdy zmieniasz oryginalny slot (Pośredni) na docelowy gniazdo (Produkcyjny).

  • Po pierwsze, w pośrednim miejscu należy wprowadzić pewne zmiany w aplikacji, ustawień i parametrów połączenia, które zostały oznaczone jako "gniazdo". Istnieją również inne zmiany, związane z zarządzaniem wersjami, które, być może trzeba będzie zastosować. To prowadzi do ponownego uruchomienia tymczasowej witryny, co jest normalne.

  • Następnie pośredni strona nagrzewa się, wysyłając zapytanie na jego ścieżkę do katalogu głównego (tj."/") i czekając na jego zakończenie.

  • Teraz, kiedy Pośredni zabaw ogrzewa się jej tłumaczy się w produkcji. Przestojów nie ma, tak jak on idzie bezpośrednio z jednego ciepłego fazy do drugiej.

  • W końcu, strona, który wcześniej był produkcyjnych, a teraz jest na etapie rozwoju, wymaga także stosowania niektórych ustawień, co spowoduje jego ponowne uruchomienie. Ponownie, jest to normalne, tak jak to się dzieje w pośrednim miejscu.

Nie chcę, aby witryny zadanie ze starym kodem wykonano po wdrożeniu.

  • Sprawdź, czy masz środa stage (dodaj etap do nazwy aplikacji internetowej), a jeśli tak, zaloguj się do portalu zarządzania systemu Azure i zatrzymać ich.

  • Nie wystarczy zatrzymać aplikację sieci web, należy zatrzymać www zadania bezpośrednio. To się robi (na nowej stronie) w sekcji Ustawienia->Www zadania, a następnie kliknij prawym przyciskiem myszy na nazwie sieci web zadań, wybierając opcję Zatrzymaj.

Proszę, skontaktuj się z webaplikacji Azure (stron internetowych) Sloty wdrażania w celu uzyskania bardziej szczegółowych informacji.

2021-11-24 08:07:57

Cześć @HarshithaVeeramalla-góra, myślę, flaga WEBJOBS_STOPPED jest to świetne rozwiązanie, stosowane do pośredniego gniazda. Z wdziękiem czy to zatrzymuje www zadanie, które zostało zastąpione?
Nmaster88

Proszę odnieść się do sekcji Sterowanie web zadaniami
HarshithaVeeramalla-MT

WEBJOB_STOPPED z wartością 1, aby zatrzymać wszystkie strony-zadania wykonywane na swojej stronie. To może być wygodne dla zapobiegania wykonywaniu konfliktów w sieci web zadań zarówno pośrednich, jak i w gniazdach produkcyjnych.
HarshithaVeeramalla-MT

dziękuję, ja już przeczytałem to, ale wydaje się, że w nim nie określono, jak on zatrzymuje ciągłe www zadania. To po prostu mówi o tym, że zatrzymuje się, przypuszczam, że to zabija proces.
Nmaster88

Dla ciągłości możesz to zrobić, po prostu umieszczając plik dla pliku o nazwie "disable.job" do głównego katalogu zadań WebJob.
HarshithaVeeramalla-MT

Proszę odnieść się do punktu 6 ciągłej strony-pracy
HarshithaVeeramalla-MT

Stosuję flaga WEBJOBS_STOPPED do obu pośrednim gniazd. To zatrzymuje jako ciągły, tak i działa webjpbs, który działa jak zaklęcie.
Nmaster88

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................