Webjob de la celebración de la ranura no se detiene después de una tubería de implementar en Azure Devops

0

Pregunta

En algunos de los despliega estoy haciendo para un App Service de recursos que contiene 2 ranuras (una production y staging ranuras), el webjob de la puesta en escena es de no parar después del intercambio de las ranuras.

Básicamente tengo en mi canalización de las siguientes tareas:

## 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 he de ir a buscar a mi espacio de realización de la aplicación se ha detenido el servicio. Pero a veces la workjob sigue funcionando aunque no debería. ya que tengo una tarea que debe top de todas continua de webjobs después del intercambio con la producción.

En resumen esto puede suceder:

  • continua webjob en la ranura de ensayo en ejecución
  • continua webjob en la ranura de la producción en marcha

Después de buscar he encontrado este hilo de github https://github.com/projectkudu/kudu/issues/1886 Indica que webjobs se están ejecutando en scm sitio que no está afectado por el centro de comando. Aún así, tengo una tarea que, supuestamente, se detiene todo el continuo de webjobs.

¿Hay alguna razón para que esto suceda? ¿Cómo podemos evitar esto? No quiero un webjob con el viejo código que se ejecuta después de implementar.

1

Mejor respuesta

1

Para implementar un continuo WebJob en un estado detenido simplemente agregar un archivo llamado disable.job en la raíz de su WebJob (binarios), esto indicará que el marco de la WebJob está detenido.

Usted puede agregar la opción de la Aplicación WEBJOBS_STOPPED a su ensayo de ranura y configurarlo para que 1 (en el portal azul). Hacer esta configuración 'de la Ranura de Ajuste', por lo que no se intercambia con la producción.

Esto es lo que sucede cuando usted cambiar la fuente de la ranura (puesta en escena) en una ranura (Producción).

  • En primer lugar, la puesta en escena sitio tiene que ir a través de algunos cambios en la configuración de la Aplicación de Configuración y Conexión de las Cadenas que están marcados como "ranura". También hay otros cambios relacionados con el control de código fuente que puede ser necesario aplicar. Esto hace que el sitio de Ensayo para reiniciar, lo cual está bien.

  • A continuación, el sitio de Ensayo se calienta, por tener una solicitud enviada a su ruta de acceso raíz (es decir,'/'), y esperando a que se complete.

  • Ahora que el sitio de Ensayo está caliente, se pone intercambiados en la Producción. No hay tiempo de inactividad, ya que va directamente de un cálido sitio a otro.

  • Finalmente, el sitio que solía ser la Producción y es ahora de Ensayo también necesita algunos ajustes se aplican, haciendo que se reinicie. De nuevo, esto está muy bien, ya que ocurre en el sitio de ensayo.

No quiero un webjob con el viejo código que se ejecuta después de implementar.

  • Compruebe si usted tiene un escenario (complemento de la etapa para la Webapp nombre) y si es así vaya en el portal de administración de Azure y detenerlos.

  • No es suficiente para detener la aplicación Web, se debe detener el WebJobs directamente. Esto se hace (en el nuevo portal) en Ajustes->WebJobs y, a continuación, haga clic en el nombre de webjobs la selección de detener.

Por favor, consulte Azure Aplicaciones Web (Sitios web) de Implementación de las Ranuras para obtener más detalles.

2021-11-24 08:07:57

Hola @HarshithaVeeramalla-MT creo que la bandera WEBJOBS_STOPPED es una gran solución aplicada para la estadificación de la ranura. Hace detener correctamente el webjob que fue canjeado?
Nmaster88

Por favor, consulte Administrar WebJobs
HarshithaVeeramalla-MT

WEBJOB_STOPPED con un valor de 1 para detener todos los WebJobs que se ejecuta en su sitio. Esto puede ser útil como una forma de prevenir el conflicto de WebJobs de que se ejecuta tanto en puesta en escena y la producción de las ranuras.
HarshithaVeeramalla-MT

gracias ya lo he leído, pero no parece ser explícito sobre cómo se detiene el continuo webjobs. Sólo dice que se detenga, supongo que mata el proceso.
Nmaster88

Para continuo, puede hacerlo simplemente por poner un archivo llamado "deshabilitar.trabajo" en la raíz de la WebJob directorio.
HarshithaVeeramalla-MT

Por favor, consulte continua WebJob punto 6
HarshithaVeeramalla-MT

Estoy aplicando el WEBJOBS_STOPPED bandera de tanto ensayo de ranura. Deja continua y activa webjpbs de correr como un encanto.
Nmaster88

En otros idiomas

Esta página está en otros idiomas

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