AzureWebApp@1: tarea Azure Web App v1

Esta tarea implementa una aplicación web de Azure para Linux o Windows.

Sintaxis

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

Entradas

azureSubscription - de suscripción de Azure
string. Obligatorio.

Especifica el de conexión de suscripción de Azure Resource Manager para la implementación.


appType - tipo de aplicación
string. Obligatorio. Valores permitidos: webApp (Aplicación web en Windows), webAppLinux (Aplicación web en Linux).

Especifica el tipo de aplicación web de Azure.


de nombre de aplicación de
string. Obligatorio.

Especifica el nombre de una instancia de Azure App Service existente. Solo se mostrarán los servicios de aplicaciones basados en el tipo de aplicación seleccionado.


deployToSlotOrASE - implementación en ranuras o app Service Environment
boolean. Opcional. Use cuando appType != "". Valor predeterminado: false.

Selecciona la opción para implementar en una ranura de implementación existente o en una instancia de Azure App Service Environment.
Para ambos destinos, la tarea necesita un nombre de grupo de recursos.
Si el destino de implementación es una ranura, el valor predeterminado es el espacio de producción. También se puede proporcionar cualquier otro nombre de ranura existente.
Si el destino de implementación es un entorno de Azure App Service, deje el nombre de ranura como "producción" y especifique el nombre del grupo de recursos.


del grupo de recursos de
string. Obligatorio cuando deployToSlotOrASE = true.

El nombre del grupo de recursos es necesario cuando el destino de implementación es una ranura de implementación o una instancia de Azure App Service Environment.
Especifica el grupo de recursos de Azure que contiene azure App Service indicado anteriormente.


de ranura de
string. Obligatorio cuando deployToSlotOrASE = true. Valor predeterminado: production.

Especifica una ranura existente, excepto la ranura de producción.


package - paquete o carpeta
string. Obligatorio. Valor predeterminado: $(System.DefaultWorkingDirectory)/**/*.zip.

Ruta de acceso del archivo al paquete o carpeta que contiene el contenido de App Service generado por MSBuild, un archivo ZIP comprimido o un archivo war. Se admiten variables ( Build | Release) y caracteres comodín. Por ejemplo, $(System.DefaultWorkingDirectory)/**/*.zip o $(System.DefaultWorkingDirectory)/**/*.war.


customDeployFolder - de carpeta de implementación personalizada
string. Opcional. Use cuando package EndsWith .war.

Especifica el nombre de carpeta personalizado en el que desea implementar.
Si el campo está vacío, el paquete se implementa en <appname>.azurewebsites.net/<warpackagename>.
Si se especifica ROOT, el paquete se implementa en <appname>.azurewebsited.net.
En todas las demás instancias, se implementa en <appname>.azurewebsited.net/<customWarName>.


de pila en tiempo de ejecución de
string. Opcional. Use cuando appType = webAppLinux.

Web App en Linux ofrece dos opciones diferentes para publicar la aplicación: implementación de imágenes personalizadas (Web App for Containers) e implementación de aplicaciones con una imagen de plataforma integrada (Web App en Linux). Este parámetro solo está disponible cuando se selecciona De aplicación web Linux como un tipo de aplicación en la tarea.


startUpCommand - comando Startup
string. Opcional. Use cuando appType = webAppLinux.

Especifica el comando de inicio.
Por ejemplo:
dotnet run
dotnet filename.dll.


customWebConfig - Generar parámetros de web.config para aplicaciones python, Node.js, Go y Java
string. Opcional. Use cuando appType != webAppLinux && package NotEndsWith .war.

Se generará e implementará un web.config estándar en Azure App Service si la aplicación no tiene una. Los valores de web.config varían en función del marco de trabajo de la aplicación y se pueden editar. Por ejemplo, para la aplicación node.js, web.config tendrá un archivo de inicio y iis_node valores de módulo. Esta característica de edición solo es para el generado web.config.


de configuración de la aplicación de
string.

Especifique la configuración de la aplicación web con la sintaxis -key value (por ejemplo: -Port 5000-RequestTimeout 5000-WEBSITE_TIME_ZONE). Incluya valores que contengan espacios entre comillas dobles (por ejemplo: "Eastern Standard Time").


configurationStrings - opciones de configuración
string.

Especifique las opciones de configuración de la aplicación web con la sintaxis -key value (por ejemplo: -phpVersion 5.6-linuxFxVersion: node|6.11). Incluya valores que contengan espacios entre comillas dobles.


de método de implementación de
string. Obligatorio cuando appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Valores permitidos: auto (detección automática), zipDeploy (Zip Deploy), runFromPackage (Ejecutar desde paquete). Valor predeterminado: auto.

Elija el del método de implementación de para la aplicación. Los valores aceptables son auto, zipDeployy runFromPackage.


Opciones de control de tareas

Todas las tareas tienen opciones de control además de sus entradas de tarea. Para obtener más información, consulte Opciones de control y propiedades de tareas comunes.

Variables de salida

Esta tarea define las siguientes variables de salida , que puede consumir en pasos, trabajos y fases de bajada.

AppServiceApplicationUrl
La dirección URL de la aplicación de Azure App Service seleccionada.

Observaciones

Use esta tarea para implementar aplicaciones web en Azure App Service.

Métodos de implementación

Hay varios métodos de implementación disponibles en esta tarea. Auto es la opción predeterminada.

Para cambiar la opción de implementación basada en paquetes en la tarea del diseñador, expanda Opciones de implementación adicionales y habilite Seleccionar método de implementación.

En función del tipo de agente de Azure App Service y Azure Pipelines, la tarea elige una tecnología de implementación adecuada. Las distintas tecnologías de implementación usadas por la tarea son:

  • API rest de Kudu
  • Implementación de Zip
  • RunFromPackage

De forma predeterminada, la tarea intenta seleccionar la tecnología de implementación adecuada según el paquete de entrada, el tipo de servicio de aplicaciones y el sistema operativo del agente.

  • Cuando el tipo de servicio de aplicaciones sea Aplicación web en la aplicación Linux, use Zip Deploy
  • Si se proporciona un archivo War, use War Deploy
  • Si se proporciona un archivo Jar, use Ejecutar desde el paquete
  • Para todos los demás, use ejecutar desde zip (a través de Zip Deploy)

En un agente que no sea de Windows (para cualquier tipo de servicio de aplicación), la tarea se basa en API REST de Kudu para implementar la aplicación web.

API rest de Kudu

API rest de Kudu trabajar en agentes de automatización de Windows o Linux cuando el destino es Aplicación web en Windows, Aplicación web en Linux (origen integrado) o Aplicación de funciones. La tarea usa Kudu para copiar archivos en Azure App Service.

Implementación de Zip

Crea un paquete de implementación .zip del paquete o carpeta elegido. A continuación, el contenido del archivo se implementa en la carpeta wwwroot de la aplicación de funciones en Azure App Service. Esta opción sobrescribe todo el contenido existente en la carpeta wwwroot. Para más información, consulte implementación de Zip para Azure Functions.

RunFromPackage

Crea el mismo paquete de implementación que Zip Deploy. Sin embargo, en lugar de implementar archivos en la carpeta wwwroot, el entorno de ejecución de Azure Functions monta todo el paquete. Con esta opción, los archivos de la carpeta wwwroot se convierten en de solo lectura. Para más información, consulte Ejecución de Azure Functions desde un archivo de paquete.

Error: No se pudo capturar el token de acceso para Azure. Compruebe si la entidad de servicio usada es válida y no ha expirado.

La tarea usa la entidad de servicio en la conexión de servicio para autenticarse con Azure. Si la entidad de servicio ha expirado o no tiene permisos para App Service, se produce un error en la tarea. Compruebe la validez de la entidad de servicio usada y que esté presente en el registro de la aplicación. Para más información, consulte Uso del control de acceso basado en rol para administrar el acceso a los recursos de suscripción de Azure. Esta entrada de blog también contiene más información sobre el uso de la autenticación de entidad de servicio.

Error ssl

Si desea usar un certificado en App Service, el certificado debe estar firmado por una entidad de certificación de confianza. Si la aplicación web proporciona errores de validación de certificados, probablemente esté usando un certificado autofirmado. Establezca una variable denominada VSTS_ARM_REST_IGNORE_SSL_ERRORS en el valor true en la canalización de compilación o versión para resolver el error.

Una versión se bloquea durante mucho tiempo y, a continuación, se produce un error

Este problema podría ser el resultado de una capacidad insuficiente en el plan de App Service. Para resolver este problema, puede escalar verticalmente la instancia de App Service para aumentar la CPU, la RAM y el espacio en disco disponibles o probar con un plan de App Service diferente.

5 códigos de error xxxx

Si ve un error de 5xx, compruebe el estado del servicio de Azure.

La función de Azure de repente dejó de funcionar

Azure Functions puede dejar de funcionar repentinamente si ha transcurrido más de un año desde la última implementación. Si implementa con "RunFromPackage" en "deploymentMethod", se genera una SAS con una fecha de expiración de 1 año y se establece como el valor de "WEBSITE_RUN_FROM_PACKAGE" en la configuración de la aplicación. Azure Functions usa esta SAS para hacer referencia al archivo de paquete para la ejecución de la función, por lo que si la SAS ha expirado, la función no se ejecutará. Para resolver este problema, vuelva a implementar para generar una SAS con una fecha de expiración de un año.

Error: No se encontró ningún paquete con el patrón especificado

Compruebe si el paquete mencionado en la tarea se publica como un artefacto en la compilación o una fase anterior y se descarga en el trabajo actual.

Error: No se admite publicar con la opción de implementación zip para el tipo de paquete msBuild.

Los paquetes web creados a través de la tarea de MSBuild (con argumentos predeterminados) tienen una estructura de carpetas anidada que solo se puede implementar correctamente mediante Web Deploy. La opción de implementación publicar en zip no se puede usar para implementar esos paquetes. Para convertir la estructura de empaquetado, siga estos pasos:

  1. En la tarea Compilar solución, cambie el argumentos de MSBuild a /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent":

    Captura de pantalla que muestra los valores de la solución de compilación.

  2. Agregue una tarea Archivar y cambie los valores de la siguiente manera:

    1. Cambie carpeta raíz o archivo para archivar a $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Desactive la casilla Nombre de carpeta raíz anteponer para archivar rutas de acceso:

      Captura de pantalla que muestra los valores de archivo.

Preguntas más frecuentes

¿Cuál es la diferencia entre las tareas de AzureWebApp y AzureRmWebAppDeployment?

La tarea aplicación web de Azure (AzureWebApp) es la manera más sencilla de implementar en una aplicación web de Azure. De forma predeterminada, la implementación se produce en la aplicación raíz de Azure Web App.

La tarea De implementación de Azure App Service (AzureRmWebAppDeployment) puede controlar escenarios más personalizados, como:

Nota

Las transformaciones de archivos y la sustitución de variables también son compatibles con la tarea de transformación de archivos independiente para su uso en Azure Pipelines. Puede usar la tarea Transformación de archivos para aplicar transformaciones de archivo y sustituciones de variables en cualquier archivo de configuración y parámetros.

La implementación de aplicaciones web en Windows se realiza correctamente, pero la aplicación no funciona

Esto puede deberse a que web.config no está presente en la aplicación. Puede agregar un archivo de web.config al origen o generar uno automáticamente mediante configuración y la aplicación.

  • Haga clic en la tarea y vaya a Generar parámetros de web.config para Python, Node.js, Go y aplicaciones de Java.

    Captura de pantalla del cuadro de diálogo Generar parámetros de web.config.

  • Haga clic en el botón más ... para editar los parámetros.

    Captura de pantalla del cuadro de diálogo desplegable.

  • Seleccione el tipo de aplicación en la lista desplegable.

  • Haga clic en Aceptar. Esto rellenará los parámetros de web.config necesarios para generar web.config.

La implementación de aplicaciones web en App Service Environment (ASE) no funciona

  • Asegúrese de que el agente de compilación de Azure DevOps esté en la misma red virtual (la subred puede ser diferente) que el equilibrador de carga interno (ILB) de ASE. Esto permitirá que el agente extraiga código de Azure DevOps e implemente en ASE.
  • Si usa Azure DevOps, no es necesario que el agente sea accesible desde Internet, pero solo necesita acceso saliente para conectarse a Azure DevOps Service.
  • Si usa TFS/Azure DevOps Server implementado en una red virtual, el agente puede estar completamente aislado.
  • El agente de compilación debe configurarse con la configuración DNS de la aplicación web en la que debe implementarse. Los recursos privados de la red virtual no tienen entradas en Azure DNS, por lo que debe agregarse al archivo del host en la máquina del agente.
  • Si se usa un certificado autofirmado para la configuración de ASE, la opción -allowUntrusted debe establecerse en la tarea de implementación para MSDeploy. También se recomienda establecer la variable VSTS_ARM_REST_IGNORE_SSL_ERRORS en true. Si se usa un certificado de una entidad de certificación para la configuración de ASE, no debe ser necesario.

¿Cómo debo configurar mi conexión de servicio?

Esta tarea requiere una conexión de servicio de Azure Resource Manager .

¿Cómo debo configurar la implementación de trabajos web con Application Insights?

Al implementar en una instancia de App Service, si ha configurado Application Insights y ha habilitado Remove additional files at destination, también debe habilitar Exclude files from the App_Data folder. Al habilitar esta opción, la extensión de Application Insights se mantiene en un estado seguro. Este paso es necesario porque el trabajo web continuo de Application Insights se instala en la carpeta App_Data.

¿Cómo debo configurar mi agente si está detrás de un proxy mientras estoy implementando en App Service?

Si el agente autohospedado requiere un proxy web, puede informar al agente sobre el proxy durante la configuración. Esto permite al agente conectarse a Azure Pipelines o Azure DevOps Server a través del proxy. Obtenga más información sobre cómo ejecutar un agente autohospedado detrás de un proxy web.

Ejemplos

A continuación se muestra un fragmento de código YAML de ejemplo para implementar una aplicación web en Azure Web App Service que se ejecuta en 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

Para implementar Web App en Linux, agregue el parámetro appType y establézcalo en appType: webAppLinux.

Para especificar el método de implementación como Zip Deploy, agregue el parámetro deploymentMethod: zipDeploy. Otro valor admitido para este parámetro es runFromPackage.

Si no se especifica, auto es el valor predeterminado.

Requisitos

Requisito Descripción
Tipos de canalización YAML, compilación clásica, versión clásica
Se ejecuta en Agente, DeploymentGroup
demandas Ninguno
funcionalidades de Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo.
restricciones de comandos Cualquier
variables settable Cualquier
Versión del agente 2.209.0 o superior
Categoría de tarea Desplegar
Requisito Descripción
Tipos de canalización YAML, compilación clásica, versión clásica
Se ejecuta en Agente, DeploymentGroup
demandas Ninguno
funcionalidades de Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo.
restricciones de comandos Cualquier
variables settable Cualquier
Versión del agente 2.104.1 o superior
Categoría de tarea Desplegar