Tarea de aplicación web de Azure

ParámetrosDescripción
azureSubscription
Suscripción a Azure
(Obligatorio) Nombre de la conexión Azure Resource Manager servicio
appType
Tipo de aplicación
(Opcional) Tipo de aplicación web
appName
Nombre de la aplicación
(Obligatorio) Nombre de un objeto App Service
deployToSlotOrASE
Implementación en ranura o App Service Environment
(Opcional) Seleccione la opción para implementar en una ranura de implementación existente o Azure App Service Environment. Para ambos destinos, la tarea necesita el nombre del grupo de recursos. En caso de que el destino de implementación sea una ranura, la implementación se realiza de forma predeterminada en la ranura de producción. También se puede proporcionar cualquier otro nombre de ranura existente. En caso de que el destino de implementación sea un Azure App Service, especifique el nombre del grupo de recursos.
Valor predeterminado: false
resourceGroupName
Resource group
(Obligatorio si deployToSlotOrASE == true) Nombre del grupo de recursos
slotName
Slot
(Obligatorio si deployToSlotOrASE == true) Nombre de la ranura
Valor predeterminado: producción
package
Paquete o carpeta
(Obligatorio) Ruta de acceso de archivo al paquete o a una carpeta que contiene App Service generado por MSBuild o a un archivo zip o war comprimido.
Se admiten variables decompilación o variablesde versión ) y caracteres comodín. Por ejemplo, $(System.DefaultWorkingDirectory)/**/*.zip o $(System.DefaultWorkingDirectory)/**/*.war.
runtimeStack
Pila en tiempo de ejecución
(Opcional) Web App on Linux ofrece dos opciones diferentes para publicar la aplicación, una es la implementación de imágenes personalizadas (Web App for Containers) y la otra es la implementación de aplicaciones con una imagen de plataforma integrada (Aplicación web en Linux). Solo verá este parámetro cuando seleccione Aplicación web linux en la opción de selección de tipo de aplicación de la tarea.
startUpCommand
Comando de inicio
(Opcional; Relevante si appType == webAppLinux) Comando de inicio que se va a ejecutar después de la implementación
customWebConfig
Generación web.config parámetros para aplicaciones python, Node.js, Go y Java
(Opcional) Se generará web.config estándar y se implementará en Azure App Service si la aplicación no tiene una. Los valores de web.config pueden editarse y variar en función del marco de trabajo de la aplicación. Por ejemplo, node.js aplicación, web.config archivo de inicio y iis_node módulo. Esta característica de edición solo es para los web.config. Aprende más
appSettings
Configuración de la aplicación
(Opcional) Configuración de la aplicación que se va a especificar con la sintaxis "-key value". Los valores que contienen espacios deben incluirse entre comillas dobles.
Ejemplo: -Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE "Hora estándar del Este"
configurationStrings
Parámetros de configuración
(Opcional) Cadenas de configuración que se especificarán mediante la sintaxis "-key value". Los valores que contienen espacios deben incluirse entre comillas dobles.
Ejemplo: -phpVersion 5.6 -linuxFxVersion: node|6.11
deploymentMethod
Método de implementación
(Obligatorio) Método de implementación para la aplicación. Los valores aceptables son auto,zipDeploy,runFromPackage
Valor predeterminado: auto

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

Ejemplo


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 esta establezca 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 menciona, auto se toma como valor predeterminado.

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 en la tarea del diseñador, expanda Opciones de implementación adicionales y habilite Seleccionar método de implementación para elegir entre opciones de implementación adicionales basadas en paquetes.

Según el tipo de agente Azure App Service y Azure Pipelines, la tarea elige una tecnología de implementación adecuada. Las distintas tecnologías de implementación utilizadas por la tarea son:

  • API REST de Kudu
  • Implementación de archivos 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 app service y el sistema operativo del agente.

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

En el agente que no Windows (para cualquier tipo de App Service), la tarea se basa en las API REST de Kudu para implementar la aplicación web.

API REST de Kudu

Funciona en Windows, así como en el agente de automatización de Linux cuando el destino es Web App on Windows o Web App on Linux (origen integrado) o Function App. La tarea usa Kudu para copiar archivos en App de Azure servicio.

Implementación de archivos ZIP

Crea un .zip de implementación de la carpeta o paquete elegido e implementa el contenido del archivo en la carpeta wwwroot de la aplicación de función App Service nombre en Azure. Esta opción sobrescribe todo el contenido existente en la carpeta wwwroot. Para obtener más información, vea Implementación de archivos ZIP 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 runtime de 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 Run your Azure Functions from a package file (Ejecución de Azure Functions desde un archivo de paquete).

Solución de problemas

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 el App Service, se produce este 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 la 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 genera errores de validación del certificado, probablemente se esté usando un certificado autofirmado. Establezca una variable denominada en el valor de la canalización de compilación o VSTS_ARM_REST_IGNORE_SSL_ERRORS versión para resolver el true error.

Una versión se bloquea durante mucho tiempo y luego se produce un error.

Este problema podría deberse a una capacidad insuficiente en el App Service plan. 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 bien probar con un plan de App Service diferente.

5códigos de error xx

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

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

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

Error: No se admite la publicación mediante la opción de implementación zip para el tipo de paquete msBuild

Los paquetes web creados mediante MSBuild tarea (con argumentos predeterminados) tienen una estructura de carpetas anidada que solo se puede implementar correctamente Web Deploy. La opción de implementación publish-to-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 los argumentos MSBuild a :

    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 manera siguiente:

    1. Cambie la carpeta o el archivo raíz para archivarlo en .

    2. Desactive la casilla Anteponer el nombre de la carpeta raíz a las rutas de acceso de archivo:

      Captura de pantalla que muestra los valores de Archivo.

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

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

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

Generar parámetros web.config diálogo

  • Haga clic en el botón Más para generar web.config parámetros para python, Node.js, go y aplicaciones java para editar los parámetros.

Cuadro de diálogo desplegable

  • Seleccione el tipo de aplicación en la lista desplegable.
  • Haga clic en Aceptar. Esto rellenará los web.config necesarios para generar web.config.

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

  • Asegúrese de que Azure DevOps agente de compilación está en la misma red virtual (la subred puede ser diferente) que el Load Balancer interno (ILB) de ASE. Esto permitirá que el agente extraiga código de Azure DevOps e implemente en ASE.
  • Si usa Azure DevOps, el agente no debe ser accesible desde Internet, pero solo necesita acceso saliente para conectarse a Azure DevOps Service.
  • Si usa TFS/Azure DevOps servidor implementado en un Virtual Network, 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. Puesto que los recursos privados del Virtual Network no tienen entradas en Azure DNS, debe agregarse al archivo de hosts en la máquina del agente.
  • Si se usa un certificado autofirmado para la configuración de ASE, también se recomienda establecer la opción "-allowUntrusted" en la tarea de implementación de MSDeploy.It para 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.

Preguntas más frecuentes

¿Cómo se debe configurar la conexión de servicio?

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

¿Cómo se debe configurar la implementación de trabajos web con Application Ideas?

Al implementar en un App Service, si tiene application Ideas configurado y ha habilitado , también debe habilitar Exclude files from the App_Data folder . La habilitación de esta opción mantiene la extensión application Ideas en un estado seguro. Este paso es necesario porque la aplicación Ideas webjob continuo está instalado en la carpeta App_Data aplicación.

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

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

Código abierto

Esta tarea es de código abierto en GitHub. Los comentarios y las contribuciones son bienvenidos.

Azure Pipelines

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

Argumentos