AzureWebApp@1 - Attività App Web di Azure v1

Questa attività distribuisce un'app Web di Azure per Linux o Windows.

Sintassi

# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #customDeployFolder: # string. Optional. Use when package EndsWith .war. Custom Deploy Folder. 
    #runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.

Ingressi

azureSubscription - sottoscrizione di Azure
string. Obbligatorio.

Specifica la connessione sottoscrizione di Azure Resource Manager per la distribuzione.


appType - Tipo di app
string. Obbligatorio. Valori consentiti: webApp (app Web in Windows), webAppLinux (app Web in Linux).

Specifica il tipo di app Web di Azure.


nome app
string. Obbligatorio.

Specifica il nome di un servizio app di Azure esistente. Verranno elencati solo i servizi app basati sul tipo di app selezionato.


deployToSlotOrASE - distribuire nell'ambiente del servizio app o slot
boolean. Opzionale. Usare quando appType != "". Valore predefinito: false.

Seleziona l'opzione per la distribuzione in uno slot di distribuzione esistente o in un ambiente del servizio app di Azure.
Per entrambe le destinazioni, l'attività richiede un nome di gruppo di risorse.
Se la destinazione di distribuzione è uno slot, il valore predefinito è lo slot di produzione. È anche possibile specificare qualsiasi altro nome di slot esistente.
Se la destinazione di distribuzione è un ambiente del servizio app di Azure, lasciare il nome dello slot come "produzione" e specificare il nome del gruppo di risorse.


resourceGroupName - gruppo di risorse
string. Obbligatorio quando deployToSlotOrASE = true.

Il nome del gruppo di risorse è obbligatorio quando la destinazione di distribuzione è uno slot di distribuzione o un ambiente del servizio app di Azure.
Specifica il gruppo di risorse di Azure che contiene il servizio app di Azure indicato in precedenza.


slotName - slot
string. Obbligatorio quando deployToSlotOrASE = true. Valore predefinito: production.

Specifica uno slot esistente, escluso lo slot di produzione.


package - pacchetto o cartella
string. Obbligatorio. Valore predefinito: $(System.DefaultWorkingDirectory)/**/*.zip.

Percorso del file del pacchetto o della cartella contenente il contenuto del servizio app generato da MSBuild, un file ZIP compresso o un file war. Sono supportate le variabili ( Build | Release) e i caratteri jolly. Ad esempio, $(System.DefaultWorkingDirectory)/**/*.zip o $(System.DefaultWorkingDirectory)/**/*.war.


customDeployFolder - cartella di distribuzione personalizzata
string. Opzionale. Usare quando package EndsWith .war.

Specifica il nome della cartella personalizzata in cui si vuole eseguire la distribuzione.
Se il campo è vuoto, il pacchetto viene distribuito in <appname>.azurewebsites.net/<warpackagename>.
Se si immette ROOT, il pacchetto viene distribuito in <appname>.azurewebsited.net.
In tutte le altre istanze, viene distribuito in <appname>.azurewebsited.net/<customWarName>.


runtimeStack - dello stack di runtime
string. Opzionale. Usare quando appType = webAppLinux.

L'app Web in Linux offre due diverse opzioni per pubblicare l'applicazione: distribuzione di immagini personalizzate (app Web per contenitori) e distribuzione di app con un'immagine della piattaforma predefinita (app Web in Linux). Questo parametro è disponibile solo quando app Web Linux è selezionato come tipo di app nell'attività.


startUpCommand - comando di avvio
string. Opzionale. Usare quando appType = webAppLinux.

Specifica il comando di avvio.
Per esempio:
dotnet run
dotnet filename.dll.


customWebConfig - Generare parametri di web.config per le app Python, Node.js, Go e Java
string. Opzionale. Usare quando appType != webAppLinux && package NotEndsWith .war.

Un web.config standard verrà generato e distribuito nel servizio app di Azure se l'applicazione non ne ha una. I valori in web.config variano in base al framework dell'applicazione e possono essere modificati. Ad esempio, per l'applicazione node.js, web.config avrà un file di avvio e iis_node valori del modulo. Questa funzionalità di modifica è solo per i generati web.config.


impostazioni dell'app
string.

Specificare le impostazioni dell'applicazione dell'app Web usando la sintassi -key value ( ad esempio, -Port 5000-RequestTimeout 5000-WEBSITE_TIME_ZONE). Racchiudere i valori che contengono spazi tra virgolette doppie , ad esempio "Eastern Standard Time".


configurationStrings - impostazioni di configurazione
string.

Specificare le impostazioni di configurazione dell'app Web usando la sintassi -key value ( ad esempio, -phpVersion 5.6-linuxFxVersion: node|6.11). Racchiudere i valori che contengono spazi tra virgolette doppie.


deploymentMethod - Metodo di distribuzione
string. Obbligatorio quando appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Valori consentiti: auto (rilevamento automatico), zipDeploy (distribuzione zip), runFromPackage (esegui dal pacchetto). Valore predefinito: auto.

Scegliere il metodo di distribuzione per l'app. I valori accettabili sono automatica , zipDeploye runFromPackage.


Opzioni di controllo attività

Tutte le attività hanno opzioni di controllo oltre ai relativi input di attività. Per altre informazioni, vedere Opzioni di controllo e proprietà comuni delle attività.

Variabili di output

Questa attività definisce le variabili di output seguenti , che è possibile utilizzare nei passaggi downstream, nei processi e nelle fasi.

AppServiceApplicationUrl
L'URL dell'applicazione del servizio app di Azure selezionato.

Osservazioni

Usare questa attività per distribuire applicazioni Web nel servizio app di Azure.

Metodi di distribuzione

In questa attività sono disponibili diversi metodi di distribuzione. Auto è l'opzione predefinita.

Per modificare l'opzione di distribuzione basata su pacchetti nell'attività di progettazione, espandere Opzioni di distribuzione aggiuntive e abilitare Selezionare il metodo di distribuzione.

In base al tipo di servizio app di Azure e all'agente di Azure Pipelines, l'attività sceglie una tecnologia di distribuzione appropriata. Le diverse tecnologie di distribuzione usate dall'attività sono:

  • API REST Kudu
  • Distribuzione zip
  • RunFromPackage

Per impostazione predefinita, l'attività tenta di selezionare la tecnologia di distribuzione appropriata in base al pacchetto di input, al tipo di servizio app e al sistema operativo agente.

  • Quando il tipo di servizio app è App Web in Un'app Linux, usare distribuzione ZIP
  • Se viene fornito un file War, usare War Deploy
  • Se viene fornito un file JAR, usare Esegui da pacchetto
  • Per tutti gli altri utenti, usare Esegui da zip (tramite Zip Deploy)

In un agente non Windows (per qualsiasi tipo di servizio app), l'attività si basa su API REST Kudu per distribuire l'app Web.

API REST Kudu

API REST Kudu funzionano su agenti di automazione Windows o Linux quando la destinazione è App Web in Windows, App Web in Linux (origine predefinita) o App per le funzioni. L'attività usa Kudu per copiare i file nel servizio app di Azure.

Distribuzione zip

Crea un pacchetto di distribuzione .zip del pacchetto o della cartella scelta. Il contenuto del file viene quindi distribuito nella cartella wwwroot dell'app per le funzioni nel servizio app di Azure. Questa opzione sovrascrive tutto il contenuto esistente nella cartella wwwroot. Per altre informazioni, vedere distribuzione zip per Funzioni di Azure.

RunFromPackage

Crea lo stesso pacchetto di distribuzione di Zip Deploy. Tuttavia, invece di distribuire i file nella cartella wwwroot, l'intero pacchetto viene montato dal runtime di Funzioni di Azure. Con questa opzione, i file nella cartella wwwroot diventano di sola lettura. Per altre informazioni, vedere Eseguire Funzioni di Azure da un file di pacchetto.

Errore: Non è stato possibile recuperare il token di accesso per Azure. Verificare se l'entità servizio usata è valida e non scaduta.

L'attività usa l'entità servizio nella connessione al servizio per l'autenticazione con Azure. Se l'entità servizio è scaduta o non dispone delle autorizzazioni per il servizio app, l'attività non riesce con questo errore. Verificare la validità dell'entità servizio usata e che sia presente nella registrazione dell'app. Per altre informazioni, vedere Usare il controllo degli accessi in base al ruolo per gestire l'accesso alle risorse della sottoscrizione di Azure. Questo post di blog contiene anche altre informazioni sull'uso dell'autenticazione dell'entità servizio.

Errore SSL

Se si vuole usare un certificato nel servizio app, il certificato deve essere firmato da un'autorità di certificazione attendibile. Se l'app Web restituisce errori di convalida dei certificati, è probabile che si stia usando un certificato autofirmato. Impostare una variabile denominata VSTS_ARM_REST_IGNORE_SSL_ERRORS sul valore true nella pipeline di compilazione o versione per risolvere l'errore.

Una versione si blocca per molto tempo e quindi ha esito negativo

Questo problema potrebbe essere il risultato di capacità insufficiente nel piano di servizio app. Per risolvere questo problema, è possibile aumentare le prestazioni dell'istanza del servizio app per aumentare la CPU, la RAM e lo spazio su disco disponibili o provare con un piano di servizio app diverso.

5xx codici di errore

Se viene visualizzato un errore di 5xx, controllare lo stato del servizio di Azure.

La funzione di Azure ha improvvisamente smesso di funzionare

Funzioni di Azure può improvvisamente smettere di funzionare se sono trascorsi più di un anno dall'ultima distribuzione. Se si esegue la distribuzione con "RunFromPackage" in "deploymentMethod", viene generata una firma di accesso condiviso con data di scadenza di 1 anno e impostata come valore di "WEBSITE_RUN_FROM_PACKAGE" nella configurazione dell'applicazione. Funzioni di Azure usa questa firma di accesso condiviso per fare riferimento al file del pacchetto per l'esecuzione della funzione, quindi se la firma di accesso condiviso è scaduta, la funzione non verrà eseguita. Per risolvere questo problema, eseguire di nuovo la distribuzione per generare una firma di accesso condiviso con una data di scadenza di un anno.

Errore: nessun pacchetto trovato con il criterio specificato

Controllare se il pacchetto indicato nell'attività viene pubblicato come artefatto nella compilazione o in una fase precedente e scaricato nel processo corrente.

Errore: l'opzione Publish using zip deploy non è supportata per il tipo di pacchetto msBuild

I pacchetti Web creati tramite l'attività MSBuild (con argomenti predefiniti) hanno una struttura di cartelle nidificata che può essere distribuita correttamente solo da Distribuzione Web. L'opzione di distribuzione publish-to-zip non può essere usata per distribuire tali pacchetti. Per convertire la struttura dei pacchetti, seguire questa procedura:

  1. Nell'attività Compila soluzione modificare il argomenti di MSBuild in /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent":

    Screenshot che mostra i valori della soluzione di compilazione.

  2. Aggiungere un'attività Archivia e modificare i valori nel modo seguente:

    1. Modificare cartella o file radice per archiviare in $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Deselezionare la casella di controllo Nome cartella radice anteporta ai percorsi di archiviazione:

      Screenshot che mostra i valori archivio.

Domande frequenti

Qual è la differenza tra le attività AzureWebApp e AzureRmWebAppDeployment?

L'attività app Web di Azure (AzureWebApp) è il modo più semplice per eseguire la distribuzione in un'app Web di Azure. Per impostazione predefinita, la distribuzione si verifica nell'applicazione radice nell'app Web di Azure.

L''attività Distribuzione del servizio app di Azure (AzureRmWebAppDeployment) può gestire scenari più personalizzati, ad esempio:

Nota

Le trasformazioni di file e la sostituzione delle variabili sono supportate anche dall'attività Trasformazione file separata da usare in Azure Pipelines. È possibile usare l'attività Trasformazione file per applicare trasformazioni di file e sostituzioni di variabili in qualsiasi file di configurazione e parametri.

La distribuzione di app Web in Windows ha esito positivo, ma l'app non funziona

Questo può essere dovuto al fatto che web.config non è presente nell'app. È possibile aggiungere un file di web.config all'origine o generarne uno automaticamente usando impostazioni di applicazione e configurazione.

  • Fare clic sull'attività e passare a Generare parametri web.config per Python, Node.js, Go e Java.

    screenshot della finestra di dialogo Genera parametri di web.config.

  • Fare clic sul pulsante altro ... per modificare i parametri.

    Screenshot della finestra di dialogo a discesa.

  • Selezionare il tipo di applicazione dall'elenco a discesa.

  • Fare clic su OK. Verranno popolati i parametri di web.config necessari per generare web.config.

La distribuzione di app Web nell'ambiente del servizio app non funziona

  • Assicurarsi che l'agente di compilazione di Azure DevOps si trova nella stessa rete virtuale (subnet) del servizio di bilanciamento del carico interno (ILB) dell'ambiente del servizio app. In questo modo l'agente potrà eseguire il pull del codice da Azure DevOps e distribuirlo nell'ambiente del servizio app.
  • Se si usa Azure DevOps, l'agente non deve essere accessibile da Internet, ma richiede solo l'accesso in uscita per connettersi al servizio Azure DevOps.
  • Se si usa TFS/Azure DevOps Server distribuito in una rete virtuale, l'agente può essere completamente isolato.
  • L'agente di compilazione deve essere configurato con la configurazione DNS dell'app Web in cui deve essere distribuito. Le risorse private nella rete virtuale non hanno voci in DNS di Azure, quindi è necessario aggiungerle al file dell'host nel computer agente.
  • Se per la configurazione dell'ambiente del servizio app viene usato un certificato autofirmato, l'opzione -allowUntrusted deve essere impostata nell'attività di distribuzione per MSDeploy. È inoltre consigliabile impostare la variabile VSTS_ARM_REST_IGNORE_SSL_ERRORS su true. Se per la configurazione dell'ambiente del servizio app viene usato un certificato di un'autorità di certificazione, questo non deve essere necessario.

Come configurare la connessione al servizio?

Questa attività richiede una connessione al servizio Azure Resource Manager .

Come configurare la distribuzione di processi Web con Application Insights?

Quando si esegue la distribuzione in un servizio app, se è stato configurato Application Insights ed è stato abilitato Remove additional files at destination, è necessario abilitare anche Exclude files from the App_Data folder. L'abilitazione di questa opzione mantiene l'estensione di Application Insights in uno stato sicuro. Questo passaggio è necessario perché il processo Web continuo di Application Insights è installato nella cartella App_Data.

Come si configura l'agente se è dietro un proxy durante la distribuzione nel servizio app?

Se l'agente self-hosted richiede un proxy Web, è possibile informare l'agente sul proxy durante la configurazione. In questo modo l'agente può connettersi ad Azure Pipelines o al server Azure DevOps tramite il proxy. Altre informazioni sull'esecuzione di un agente self-hosted dietro un proxy Web.

Esempi

Di seguito è riportato un frammento di codice YAML di esempio per distribuire l'applicazione Web nel servizio app Web di Azure in esecuzione in Windows.

variables:
  azureSubscription: Contoso
  # To ignore SSL error uncomment the below variable
  # VSTS_ARM_REST_IGNORE_SSL_ERRORS: true

steps:

- task: AzureWebApp@1
  displayName: Azure Web App Deploy
  inputs:
    azureSubscription: $(azureSubscription)
    appName: samplewebapp
    package: $(System.DefaultWorkingDirectory)/**/*.zip

Per distribuire l'app Web in Linux, aggiungere il parametro appType e impostarlo su appType: webAppLinux.

Per specificare il metodo di distribuzione come Zip Deploy, aggiungere il parametro deploymentMethod: zipDeploy. Un altro valore supportato per questo parametro è runFromPackage.

Se non specificato, auto è il valore predefinito.

Fabbisogno

Requisito Descrizione
Tipi di pipeline YAML, build classica, versione classica
Viene eseguito in Agente, DeploymentGroup
richieste Nessuno
funzionalità di Questa attività non soddisfa alcuna richiesta di attività successive nel processo.
restrizioni dei comandi Qualunque
variabili impostabili Qualunque
Versione dell'agente 2.209.0 o versione successiva
Categoria attività Schierare
Requisito Descrizione
Tipi di pipeline YAML, build classica, versione classica
Viene eseguito in Agente, DeploymentGroup
richieste Nessuno
funzionalità di Questa attività non soddisfa alcuna richiesta di attività successive nel processo.
restrizioni dei comandi Qualunque
variabili impostabili Qualunque
Versione dell'agente 2.104.1 o versione successiva
Categoria attività Schierare