Webjob di messa in scena slot non fermarsi dopo una pipeline di distribuire in Azure Devops

0

Domanda

In alcuni distribuisce sto facendo per un App Service risorsa che contiene 2 slot (un production e staging slot machine), il webjob di messa in scena non si ferma dopo lo scambio di slot.

Fondamentalmente ho nella mia pipeline i seguenti compiti:

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

Se vado a guardare il mio slot per la gestione temporanea del servizio di app è stato arrestato. Ma a volte il workjob continua a funzionare mentre non dovrebbe essere così. dato che ho un compito che dovrebbe completare il tutto continua webjobs dopo lo scambio con la produzione.

Nel riassumere questo può accadere:

  • continua webjob in slot di gestione temporanea in esecuzione
  • continua webjob in slot di produzione in esecuzione

Dopo una ricerca ho trovato questo thread github https://github.com/projectkudu/kudu/issues/1886 Indica che webjobs sono in esecuzione in scm sito che non è interessato dal sito di comando. Ancora, ho un compito che presumibilmente si ferma tutto continua webjobs.

C'è qualche motivo perché questo accada? Come possiamo prevenire questo? Io non voglio una webjob con il vecchio codice, dopo l'esecuzione di una distribuzione.

1

Migliore risposta

1

Per distribuire un continuo WebJob stato arrestato semplicemente aggiungere un file chiamato disable.job alla radice del tuo WebJob (binari), questo dirà il quadro che il WebJob è attualmente fermo.

È possibile aggiungere Impostazione dell'Applicazione WEBJOBS_STOPPED per la gestione temporanea slot e metterlo a 1 (nel portale azure). Effettuare questa impostazione 'Slot Impostazione' in modo che non viene scambiato con la produzione.

Questo è ciò che accade quando si scambia una fonte slot (Staging) in un target slot (di Produzione).

  • Primo, la messa in scena sito deve passare attraverso alcune modifiche alle impostazioni di App Impostazione e le Stringhe di Connessione che sono contrassegnati come 'slot'. Ci sono anche altre modifiche relative al controllo del codice sorgente che può essere applicata. Questo provoca la messa in scena sito di riavviare, che è bene.

  • A quel punto, la messa in scena sito viene riscaldato, avendo una richiesta inviata al percorso principale (cioè,'/'), e in attesa che si completi.

  • Ora che il sito di Staging è caldo, si viene scambiati in Produzione. Non c'è nessun tempo di attesa, dal momento che va dritto da una calda sito a un altro.

  • Infine, il sito che ha usato per essere di Produzione ed è in allestimento anche bisogno di ottenere alcune impostazioni si applicano, causando il riavvio. Di nuovo, questo è bene, poiché avviene nel sito di staging.

Io non voglio una webjob con il vecchio codice, dopo l'esecuzione di una distribuzione.

  • Verificare se si dispone di un ambiente (add-stage per la Webapp di nome) e se è così per entrare nel portale di gestione di Azure e fermarli.

  • Non è sufficiente a fermare le Webapp, si deve interrompere il WebJobs direttamente. Questo viene fatto (il nuovo portale) in Impostazioni->WebJobs e quindi fare clic sul webjobs nome selezione di stop.

Si prega di fare riferimento Azure Applicazioni Web (Siti web) Distribuzione di Slot per ulteriori dettagli.

2021-11-24 08:07:57

Ciao @HarshithaVeeramalla-MT penso che la bandiera WEBJOBS_STOPPED è una grande soluzione applicata alla gestione temporanea slot. Lo fa con grazia interrompere il webjob che è stata scambiata?
Nmaster88

Si prega di fare riferimento a Gestire WebJobs
HarshithaVeeramalla-MT

WEBJOB_STOPPED con un valore di 1 per interrompere tutti WebJobs in esecuzione sul vostro sito. Questo può essere utile come un modo per prevenire il conflitto WebJobs esecuzione sia per la stadiazione e la produzione di slot.
HarshithaVeeramalla-MT

grazie ho già letto, ma non mi sembra di essere espliciti su come si ferma il continuo webjobs. Si dice solo che si ferma, suppongo che uccide il processo.
Nmaster88

Continua, è possibile farlo semplicemente inserendo un file chiamato "disable.lavoro" nella root della WebJob directory.
HarshithaVeeramalla-MT

Si prega di fare riferimento continuo WebJob punto 6
HarshithaVeeramalla-MT

Sto applicando il WEBJOBS_STOPPED bandiera sia stadiazione slot. Si ferma e continui attivato webjpbs esecuzione come un fascino.
Nmaster88

In altre lingue

Questa pagina è in altre lingue

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