Webjob de la mise en scène fente de ne pas s'arrêter après un pipeline de déployer dans Azure Devops

0

La question

Dans certains déploie, je suis en train de faire à un App Service ressource qui contient 2 slots (un production et staging slots), le webjob de la mise en scène ne s'arrête pas après l'échange de logements.

En gros je l'ai dans mon pipeline les tâches suivantes:

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

Si je vais chercher de mon logement en scène dans le service d'application est arrêtée. Mais parfois, le workjob continue de fonctionner alors qu'il ne devrait pas. depuis que j'ai une tâche qui devrait couronner le tout continue webjobs après l'échange avec la production.

En résumé de ce qui peut arriver:

  • continue webjob dans le logement mise en scène de course
  • continue webjob dans la fente de la production de course

Après recherche j'ai trouvé ce fil github https://github.com/projectkudu/kudu/issues/1886 Il indique que webjobs sont en cours d'exécution du gestionnaire de site qui n'est pas affecté par le site d'arrêt de commande. Pourtant, j'ai une tâche qui soi-disant s'arrête tout continu webjobs.

Est-il une raison pour que cela arrive? Comment pouvons-nous faire pour éviter cela? Je ne veux pas d'un webjob avec l'ancien code en cours d'exécution après un déploiement.

1

La meilleure réponse

1

Pour déployer un continu WebJob dans un état arrêté il suffit d'ajouter un fichier appelé disable.job à la racine de votre WebJob (binaires), cela indique que le cadre de la WebJob est actuellement arrêté.

Vous pouvez ajouter le Paramètre d'Application WEBJOBS_STOPPED pour votre mise en scène fente et mis à 1 (dans le portail azure). Faites ce réglage de machine à sous " paramètres de sorte qu'il n'est pas échangé avec la production.

C'est ce qui arrive lorsque vous changez une source de logement (mise en scène) dans une cible logement (Production).

  • Tout d'abord, la mise en scène du site doit passer par certains changements de réglage pour l'Application de Réglage et de Chaînes de Connexion qui sont marqués comme "machine à sous". Il y a aussi d'autres changements liés à la source de contrôle qui doivent être appliquées. Cela provoque la mise en scène du site de redémarrer, ce qui est bien.

  • Ensuite, la mise en scène du site se réchauffe, par une demande adressée à son chemin d'accès racine (c'est à dire '/'), et attendre qu'il termine.

  • Maintenant que le site de test est chaud, il obtient échangé dans la Production. Il n'y a aucun temps d'arrêt, car il passe directement d'une place au chaud à un autre.

  • Enfin, le site qui sert à la Production et est maintenant mise en scène aussi besoin d'obtenir certains paramètres s'appliquent, à l'origine pour redémarrer. Encore une fois, c'est très bien comme il arrive dans le site de test.

Je ne veux pas d'un webjob avec l'ancien code en cours d'exécution après un déploiement.

  • Vérifiez si vous disposez d'un stade de l'environnement (ajouter au stade de la Webapp nom) et si oui, rendez-vous sur le portail de gestion Azure et de les arrêter.

  • Il n'est pas assez pour arrêter la Webapp, vous devez arrêter le WebJobs directement. Cela est fait (dans le nouveau portail) sous Paramètres->WebJobs puis clic-droit sur le webjobs nom en sélectionnant arrêter.

Veuillez vous référer Azure Applications Web (Sites web) - Déploiement des Fentes pour plus de détails.

2021-11-24 08:07:57

Bonjour @HarshithaVeeramalla-MT je pense que le drapeau WEBJOBS_STOPPED est une excellente solution appliquée à la mise en scène de fente. Est-il arrêter le webjob qui a été échangé?
Nmaster88

Veuillez vous référer à Gérer WebJobs
HarshithaVeeramalla-MT

WEBJOB_STOPPED avec une valeur de 1 à arrêter tous les WebJobs en cours d'exécution sur votre site. Cela peut être pratique comme un moyen d'éviter tout conflit d'WebJobs de l'exécution à la fois dans la mise en scène et la production de machines à sous.
HarshithaVeeramalla-MT

merci, j'ai déjà lu, mais il ne semble pas être explicite sur la façon dont il arrête le continu webjobs. Il dit juste qu'il s'arrête, je suppose qu'il tue le processus.
Nmaster88

Pour en continu, vous pouvez le faire simplement en mettant un fichier appelé "désactiver.travail" à la racine de la WebJob répertoire.
HarshithaVeeramalla-MT

Veuillez vous référer continue WebJob point 6
HarshithaVeeramalla-MT

Je suis à l'application de la WEBJOBS_STOPPED drapeau à la fois mise en scène logement. Il s'arrête à la fois continue et déclenché webjpbs de courir comme un charme.
Nmaster88

Dans d'autres langues

Cette page est dans d'autres langues

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