Azure App Service implementar tarea

ParámetrosDescripción
ConnectionType
(Tipo de conexión)
(Obligatorio) Seleccione el tipo de conexión de servicio que se usará para implementar la aplicación web.
Valor predeterminado: AzureRM
Conectado
Servicename

(suscripción de Azure)
(Obligatorio si ConnectionType = AzureRM) Seleccione la Azure Resource Manager suscripción para la implementación.
Alias de argumento: azureSubscription
PublishProfilePath
(Ruta de acceso del perfil de publicación)
(Obligatorio si ConnectionType = PublishProfile) Ruta de acceso al archivo que contiene la información de publicación.
Valor predeterminado:$(System.DefaultWorkingDirectory)/**/*.pubxml
PublishProfilePassword
(Publicar contraseña de perfil)
(Obligatorio si ConnectionType = PublishProfile) Contraseña del archivo de perfil. Considere la posibilidad de almacenar la contraseña en una variable secreta y usar esa variable aquí. Ejemplo: $(Password)
WebAppKind
(App Service tipo)
(Obligatorio si ConnectionType = AzureRM) Elija entre Web App On Windows, Web App On Linux, Web App for Containers, Function App, Function App on Linux, Function App for Containers y Mobile App
Valor predeterminado: webApp
Alias de argumento: appType
WebAppName
(App Service nombre)
(Obligatorio si ConnectionType = AzureRM) Escriba o seleccione el nombre de un Azure App Service. Solo App Services en función del tipo de aplicación seleccionado.
DeployTo
SlotOrASEFlag

(Implementar en ranura o App Service Environment)
(Opcional) Seleccione la opción para implementar en una ranura de implementación existente o Azure App Service entorno. Para ambos destinos, la tarea requiere un nombre de grupo de recursos.
Si el destino de implementación es una ranura, de forma predeterminada la implementación es en la ranura de producción. Se puede proporcionar cualquier otro nombre de ranura existente.
Si el destino de implementación es un entorno Azure App Service, deje el nombre de la ranura como producción y especifique solo el nombre del grupo de recursos.
Valor predeterminado: false
Alias de argumento: deployToSlotOrASE
ResourceGroupName
(Grupo de recursos)
(Obligatorio si DeployToSlotOrASEFlag = true) El nombre del grupo de recursos es necesario cuando el destino de implementación es una ranura de implementación o un entorno App Service implementación. Escriba o seleccione el grupo de recursos de Azure que contiene el Azure App Service especificado anteriormente.
SlotName
(Ranura)
(Obligatorio, si DeployToSlotOrASEFlag = true) Escriba o seleccione una ranura existente que no sea la ranura de producción.
Valor predeterminado: producción
DockerNamespace
(Registro o espacio de nombres)
(Obligatorio si WebAppKind = webAppContainer
o WebAppkind = functionAppContainer) Un nombre de dominio de nivel superior único global para el registro o espacio de nombres específicos. Nota:El nombre completo de la imagen tendrá el formato: {registro o espacio de nombres}/{repositorio}:{etiqueta}. Por ejemplo, myregistry.azurecr.io/nginx:latest
DockerRepository
(Imagen)
(Obligatorio si WebAppKind = webAppContainer
o WebAppkind = functionAppContainer) Nombre del repositorio donde se almacenan las imágenes de contenedor. Nota: El nombre completo de la imagen tendrá el formato: {registro o espacio de nombres}/{repositorio}:{etiqueta}. Por ejemplo, myregistry.azurecr.io/nginx:latest
DockerImageTag
(Etiqueta)
(Opcional) Las etiquetas son opcionales, pero son el mecanismo que usan los registros para aplicar información de versión a las imágenes de Docker. Nota: El nombre completo de la imagen tendrá el formato: {registro o espacio de nombres}/{repositorio}:{etiqueta}. Por ejemplo, myregistry.azurecr.io/nginx:latest
VirtualApplication
(Aplicación virtual)
(Opcional) Especifique el nombre de la aplicación virtual que se ha configurado en el Azure Portal. Esta opción no es necesaria para las implementaciones en la raíz del sitio web. La aplicación virtual debe estar configurada antes de la implementación del proyecto web.
Package
(Paquete o carpeta)
(Obligatorio si ConnectionType = PublishProfile o WebAppKind = webApp, apiApp, functionApp, mobileApp, webAppLinux o functionAppLinux) 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.
Valor predeterminado: $(System.DefaultWorkingDirectory)/**/*.zip
Alias de argumento: packageForLinux
RuntimeStack
(Pila en tiempo de ejecución)
(Opcional) Seleccione el marco y la versión. Esto es para WebApp para Linux.
RuntimeStackFunction
(Pila en tiempo de ejecución)
(Opcional) Seleccione el marco y la versión. Esto es para Function App en Linux.
StartupCommand
(Comando de inicio)
(Opcional) Escriba el comando de inicio.
ScriptType
(Tipo de script de implementación)
(Opcional) Personalice la implementación proporcionando un script que se ejecute en el Azure App Service una implementación correcta. Elija el script de implementación en línea o la ruta de acceso y el nombre de un archivo de script. Más información.
InlineScript
(Script en línea)
(Obligatorio si ScriptType == Script en línea) Script que se ejecutará. Puede proporcionar los comandos de implementación aquí, un comando por línea. Consulte este ejemplo.
ScriptPath
(Ruta de acceso del script de implementación)
(Obligatorio si ScriptType == Ruta de acceso del archivo) Ruta de acceso y nombre del script que se ejecutará.
Web
ConfigParameters

(Generar 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 se pueden editar y variarán en función del marco de trabajo de la aplicación. Por ejemplo, para Node.js, web.config archivos de inicio y iis_node módulo. Esta característica de edición solo es para el archivo web.config generado. Más información.
AppSettings
(Configuración de la aplicación)
(Opcional) Edite la configuración de la aplicación web con el valor de sintaxis -key. Los valores que contienen espacios deben ir entre comillas dobles. Ejemplos: -Port 5000 -RequestTimeout 5000 y -WEBSITE_TIME_ZONE "Hora estándar del Este".
ConfigurationSettings
(Opciones de configuración)
(Opcional) Edite los valores de configuración de la aplicación web con el valor de sintaxis -key. Los valores que contienen espacios deben ir entre comillas dobles. Ejemplo: -phpVersion 5.6 -linuxFxVersion: node|6.11
UseWebDeploy
(Seleccionar método de implementación)
(Opcional) Si está desactivada, la tarea detecta automáticamente el mejor método de implementación en función del tipo de aplicación, el formato del paquete y otros parámetros. Seleccione la opción para ver los métodos de implementación admitidos y elija uno para implementar la aplicación.
Alias de argumento: enableCustomDeployment
DeploymentType
(Método de implementación)
(Obligatorio si UseWebDeploy == true) Elija el método de implementación de la aplicación.
Valor predeterminado: webDeploy
TakeAppOfflineFlag
(Desconectar la aplicación)
(Opcional) Seleccione esta opción para desconectar el Azure App Service colocando un archivo app_offline.htm en el directorio raíz antes de que comience la operación de sincronización. El archivo se quitará una vez que la sincronización se complete correctamente.
Valor predeterminado: true.
SetParametersFile
(Archivo SetParameters)
(Opcional) ubicación del archivoSetParameters.xml que se va a usar.
RemoveAdditional
FilesFlag

(Quitar archivos adicionales en el destino)
(Opcional) Seleccione la opción para eliminar archivos de la Azure App Service que no tengan archivos que coincidan en el App Service o carpeta.
Nota: Esto también quitará todos los archivos relacionados con las extensiones instaladas en este Azure App Service. Para evitarlo, establezca la casilla Excluir archivos App_Data carpeta.
Valor predeterminado: false
ExcludeFiles
FromAppDataFlag

(Excluya los archivos de App_Data carpeta)
(Opcional) Seleccione la opción para evitar que los archivos de la carpeta App_Data se implementen o eliminen de la Azure App Service.
Valor predeterminado: true.
AdditionalArguments
(Argumentos adicionales)
(Opcional) Argumentos Web Deploy argumentos adicionales siguiendo la sintaxis -key:value. Se aplicarán al implementar el Azure App Service. Ejemplo: -disableLink:AppPoolExtension -disableLink:ContentExtension.Más ejemplos.
Valor predeterminado: -retryAttempts:6 -retryInterval:10000
RenameFilesFlag
(Cambiar el nombre de los archivos bloqueados)
(Opcional) Seleccione esta opción para habilitar la marca MSDeploy MSDEPLOY_RENAME_LOCKED_FILES=1 en la configuración Azure App Service aplicación. Cuando se establece, permite a MSDeploy cambiar el nombre de los archivos que están bloqueados durante la implementación de la aplicación.
Valor predeterminado: true.
XmlTransformation
(transformación XML)
(Opcional) Las transformaciones de configuración se ejecutarán para .Release.config y .{ EnvironmentName}.config en los archivos *.config. Las transformaciones de configuración se ejecutan antes de la sustitución de variables. Las transformaciones XML solo se admiten para Windows plataforma. Más información.
Valor predeterminado: false
Alias de argumento: enableXmlTransform
XmlVariable
Sustitución

(Sustitución de variables XML)
(Opcional) Las variables definidas en la canalización de compilación o versión se comparan con las entradas de clave o nombre de las secciones appSettings, applicationSettingsy connectionStrings de cualquier archivo de configuración yparameters.xmlarchivo. La sustitución de variables se ejecuta después de las transformaciones de configuración.
Nota: Si se definen las mismas variables en la canalización de versión y en la fase, las variables de fase sustituirán a las variables de canalización de versión. Más información
Valor predeterminado: false
Alias de argumento: enableXmlVariableSubstitution
JSONFiles
(Sustitución de variables JSON)
(Opcional) Proporcione una lista de archivos JSON separados por nueva línea para sustituir los valores de variable. Los nombres de archivo deben ser relativos a la carpeta raíz. Para sustituir variables JSON anidadas o jerárquicas, es especificarlas mediante expresiones JSONPath. Por ejemplo, para reemplazar el valor de ConnectionString en el ejemplo siguiente, defina una variable denominada Data.DefaultConnection.ConnectionString en la canalización de compilación o versión (o fase de canalizaciones de versión).

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB; Trusted_Connection=True"
    }
  }
}

La sustitución de variables se ejecuta después de las transformaciones de configuración. Nota:Las variables de canalización de compilación y versión se excluyen de la sustitución. Más información.

Este ejemplo de YAML se implementa en un contenedor de Azure Web App (Linux).

pool:
  vmImage: ubuntu-latest

variables:
  azureSubscriptionEndpoint: Contoso
  DockerNamespace: contoso.azurecr.io
  DockerRepository: aspnetcore
  WebAppName: containersdemoapp

steps:

- task: AzureRMWebAppDeployment@4
  displayName: Azure App Service Deploy
  inputs:
    appType: webAppContainer
    ConnectedServiceName: $(azureSubscriptionEndpoint)
    WebAppName: $(WebAppName)
    DockerNamespace: $(DockerNamespace)
    DockerRepository: $(DockerRepository)
    DockerImageTag: $(Build.BuildId)

Este es otro ejemplo que implementa una aplicación web en un Windows App Service entre ranuras de implementación.

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
 - stage: DeployDevStage
    displayName: 'Deploy App to Dev Slot'
    jobs:
      - job:  DeployApp
        displayName: 'Deploy App'
        steps:
        - task: DownloadPipelineArtifact@2
          inputs:
            buildType: 'current'
            artifactName: 'drop'
            targetPath: '$(System.DefaultWorkingDirectory)'
        - task: AzureRmWebAppDeployment@4
          inputs:
            ConnectionType: 'AzureRM'
            azureSubscription: 'Fabrikam Azure Subscription - PartsUnlimited'
            appType: 'webApp'
            WebAppName: 'partsunlimited'
            deployToSlotOrASE: true
            ResourceGroupName: 'rgPartsUnlimited'
            SlotName: 'Dev'
            packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'

  - stage: DeployStagingStage
    displayName: 'Deploy App to Staging Slot'
    dependsOn: DeployDevStage
    jobs:
      - job:  DeployApp
        displayName: 'Deploy App'
        steps:
        - task: DownloadPipelineArtifact@2
          inputs:
            buildType: 'current'
            artifactName: 'drop'
            targetPath: '$(System.DefaultWorkingDirectory)'
        - task: AzureRmWebAppDeployment@4
          inputs:
            appType: webApp
            ConnectionType: AzureRM            
            ConnectedServiceName: 'Fabrikam Azure Subscription - PartsUnlimited'
            ResourceGroupName: 'rgPartsUnlimited'
            WebAppName: 'partsunlimited'
            Package: '$(System.DefaultWorkingDirectory)/**/*.zip'
            deployToSlotOrASE: true
            SlotName: 'staging'

  • Para implementar en un tipo de aplicación específico, establezca en cualquiera de los siguientes valores appType aceptados: webApp (Web App on Windows), webAppLinux (Web App on Linux), webAppContainer (Web App for Containers - Linux), functionApp (Function App on Windows), functionAppLinux (Function App on Linux), functionAppContainer (Function App for Containers - Linux), apiApp (API App) mobileApp (Mobile App). Si no se menciona, webApp se toma como valor predeterminado.

  • Para habilitar cualquier opción de implementación anticipada, agregue el parámetro enableCustomDeployment: true e incluya los parámetros siguientes según sea necesario.

        # deploymentMethod: 'runFromPackage' # supports zipDeploy as well
        # appOffline: boolean    # Not applicable for 'runFromPackage'
        # setParametersFile: string
        # removeAdditionalFilesFlag: boolean
        # additionalArguments: string
    

Variables de salida

  • Dirección URL hospedada de aplicación web: Proporcione un nombre, como , para la variable rellenada con la Azure App Service url hospedada. La variable se puede usar como $(variableName. AppServiceApplicationUrl), por ejemplo, para hacer referencia a la dirección URL hospedada del Azure App Service en las tareas posteriores.

Notas de uso

  • La tarea solo funciona con Azure Resource Manager API.
  • Para pasar por alto los errores SSL, defina una variable denominada VSTS_ARM_REST_IGNORE_SSL_ERRORS con valor en la canalización de true versión.
  • En el caso de las aplicaciones .NET que tienen como destino Web App on Windows, evite los errores de implementación con el error asegurándose de que están habilitadas las opciones Cambiar nombre de archivos bloqueados y Desconectar ERROR_FILE_IN_USE aplicación. ERROR_FILE_IN_USE Para una implementación sin tiempo de inactividad, use la opción de intercambio de ranuras.
  • Al implementar en un App Service que tiene configurada la aplicación Ideas y ha habilitado Quitar archivos adicionales en el destino ,asegúrese de habilitar también Excluir archivos de la carpeta App_Data para mantener la extensión de Application Insights en un estado seguro. Esto es necesario porque application Ideas trabajo web continuo está instalado en la carpeta App_Data.

Script de ejemplo posterior a la implementación

La tarea proporciona una opción para personalizar la implementación proporcionando un script que se ejecutará en el Azure App Service después de que los artefactos de la aplicación se hayan copiado correctamente en el App Service. Puede optar por proporcionar un script de implementación en línea o la ruta de acceso y el nombre de un archivo de script en la carpeta de artefactos.

Esto es muy útil cuando desea restaurar las dependencias de la aplicación directamente en el App Service. La restauración de paquetes para aplicaciones de Node, PHP y Python ayuda a evitar tiempos de espera cuando la dependencia de la aplicación provoca la copia de un artefacto grande desde el agente al Azure App Service.

Un ejemplo de un script de implementación es:

@echo off
if NOT exist requirements.txt (
 echo No Requirements.txt found.
 EXIT /b 0
)
if NOT exist "$(PYTHON_EXT)/python.exe" (
 echo Python extension not available >&2
 EXIT /b 1
)
echo Installing dependencies
call "$(PYTHON_EXT)/python.exe" -m pip install -U setuptools
if %errorlevel% NEQ 0 (
 echo Failed to install setuptools >&2
 EXIT /b 1
)
call "$(PYTHON_EXT)/python.exe" -m pip install -r requirements.txt
if %errorlevel% NEQ 0 (
 echo Failed to install dependencies>&2
 EXIT /b 1
)

Métodos de implementación

Hay varios métodos de implementación disponibles en esta tarea. Web Deploy (msdeploy.exe) es el valor predeterminado. Para cambiar la opción de implementación, 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.

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

De forma predeterminada, la tarea intenta seleccionar la tecnología de implementación adecuada en función del tipo de paquete de entrada, App Service y el sistema operativo del agente.

Lógica de detección automática

Para agentes basados en ventanas.

App Service tipoTipo de paqueteMétodo de implementación
WebApp en Linux o Function App en LinuxFolder/Zip/jar
Guerra
Implementación de zip
Implementación de la guerra
WebApp for Containers (Linux) o Function App for Containers (Linux)Actualización de la configuración de la aplicaciónN/D
WebApp on Windows, Function App on Windows, API App o Mobile AppGuerra
Tarro
Tipo de paquete de MsBuild o implementación en aplicación virtual


Carpeta/Zip
Implementación de la guerra
Implementación de zip
Web Deploy

si postDeploymentScript == true, Zip Deploy
else, Run From Package

En los agentes Windows (para cualquier tipo de App Service), la tarea se basa en las API REST de Kudu para implementar la aplicación.

Web Deploy

Web Deploy (msdeploy.exe) se puede usar para implementar una aplicación web en Windows o una aplicación de función en el Azure App Service mediante un agente Windows. Web Deploy tiene muchas características y ofrece opciones como:

  • Cambiar el nombre de los archivos bloqueados: Cambie el nombre de cualquier archivo que todavía esté en uso por el servidor web habilitando la marca msdeploy MSDEPLOY_RENAME_LOCKED_FILES=1 en la configuración Azure App Service configuración. Esta opción, si se establece, permite a msdeploy cambiar el nombre de los archivos que están bloqueados durante la implementación de la aplicación.

  • Quitar archivos adicionales en el destino: Elimina los archivos de la Azure App Service que no tienen archivos que coincidan en la carpeta o el paquete App Service artefacto que se va a implementar.

  • Excluya los archivos de App_Data carpeta: Impedir que los archivos de App_Data carpeta (en el paquete o carpeta de artefacto que se va a implementar) se implementen en el Azure App Service

  • Argumentos Web Deploy adicionales: Argumentos que se aplicarán al implementar el Azure App Service. Ejemplo: -disableLink:AppPoolExtension -disableLink:ContentExtension. Para obtener más ejemplos de Web Deploy configuración de la operación, vea Web Deploy Operation Configuración.

Instale Web Deploy en el agente mediante el Instalador de plataforma web de Microsoft. Web Deploy 3.5 debe instalarse sin la compatibilidad SQL paquetes. No es necesario elegir ninguna configuración personalizada al instalar Web Deploy. Web Deploy se instala en C:\Archivos de programa (x86)\IIS\Microsoft Web Deploy V3.

API REST de Kudu

Las API REST de Kudu funcionan en agentes de automatización de Windows y Linux cuando el destino es una aplicación web en Windows, aplicación web en Linux (origen integrado) o aplicación de función. La tarea usa Kudu para copiar archivos en App de Azure servicio.

Container Registry

Funciona en agentes Windows y de automatización de Linux cuando el destino es un Web App for Containers. La tarea actualiza la aplicación estableciendo el registro de contenedor, el repositorio, el nombre de la imagen y la información de etiqueta adecuados. También puede usar la tarea para pasar un comando de inicio para la imagen de contenedor.

Implementación de zip

Espera un paquete .zip implementación e implementa el contenido del archivo en la carpeta wwwroot de App Service o Function App en Azure. Esta opción sobrescribe todo el contenido existente en la carpeta wwwroot. Para obtener más información, vea Implementación de zip para Azure Functions.

Ejecutar desde el paquete

Espera el mismo paquete de implementación que Zip Deploy. Sin embargo, en lugar de implementar archivos en la carpeta wwwroot, el tiempo de ejecución de Functions monta todo el paquete y 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).

Implementación de la guerra

Espera un paquete de implementación .war e implementa el contenido del archivo en la carpeta wwwroot o la carpeta webapps de la App Service en Azure.

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 VSTS_ARM_REST_IGNORE_SSL_ERRORS en el valor de la canalización de true compilación o versión para resolver el 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 plan de App Service trabajo. 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.

5xx códigos de error

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 Archive y cambie los valores de la manera siguiente:

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

    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 las opciones Transformaciones de archivo y Sustitución de variables de la tarea.

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

    Cuadro de diálogo Generar web.config parámetros

  • Haga clic en el botón más 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.

Nota

Esta sección está en desuso y se ha reemplazado por la tarea Transformación de archivos.

ERROR_FILE_IN_USE

Al implementar aplicaciones .NET en Web App en Windows, la implementación puede producir un error con el código de error ERROR_FILE_IN_USE. Para resolver el error, asegúrese de que las opciones Cambiar nombre de archivos bloqueados y Desconectar aplicación están habilitadas en la tarea. Para implementaciones sin tiempo de inactividad, use el intercambio de ranuras.

También puede usar el método Ejecutar desde implementación de paquetes para evitar el bloqueo de recursos.

Web Deploy Error

Si usa Web Deploy para implementar la aplicación, en algunos escenarios de error de Web Deploy mostrarán un código de error en el registro. Para solucionar un error de implementación web, vea este .

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

  • Asegúrese de que el Azure DevOps de compilación está en la misma red virtual (la subred puede ser diferente) que el Load Balancer interno (ILB) de ASE. Esto permitirá al agente extraer código de Azure DevOps implementar 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 Server 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 en un intervalo de App Services en Azure. La tarea funciona en agentes multiplataforma que ejecutan Windows, Linux o Mac y usa varias tecnologías de implementación subyacentes diferentes.

La tarea funciona para ASP.NET, ASP.NET Core, PHP,Java,Python,GoyNode.js web basadas en .

La tarea se puede usar para implementar en un intervalo de servicios App de Azure como:

Requisitos previos para la tarea

Los siguientes requisitos previos deben configurarse en las máquinas de destino para que la tarea funcione correctamente.

  • App Service instancia de. La tarea se usa para implementar un proyecto de aplicación web o un proyecto de Azure Function en una instancia de Azure App Service existente, que debe existir antes de que se ejecute la tarea. La App Service instancia de se puede crear desde el Azure Portal y configurarse allí. Como alternativa, la Azure PowerShell puede usarse para ejecutar scripts de PowerShell de AzureRM para aprovisionar y configurar la aplicación web.

  • Suscripción de Azure. Para implementar en Azure, se debe vincular una suscripción de Azure a la canalización. La tarea no funciona con la conexión de servicio clásico de Azure y no enumerará estas conexiones en la configuración de la tarea.