Implementación de Git local en Azure App Service

En esta guía se muestra cómo implementar la aplicación en Azure App Service desde un repositorio Git en la máquina local.

Nota:

Cuando la autenticación básica SCM está deshabilitada, la implementación de Git local no funciona y no se puede configurar la implementación de Git local en el Centro de implementación de la aplicación.

Requisitos previos

Para seguir los pasos de esta guía:

  • Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

  • Instale Git.

  • Obtenga un repositorio Git local con el código que quiere implementar. Para descargar un repositorio de ejemplo, ejecute el comando siguiente en la ventana del terminal local:

    git clone https://github.com/Azure-Samples/nodejs-docs-hello-world.git
    

Preparación del repositorio

Para obtener compilaciones automáticas del servidor de compilación de Azure App Service, asegúrese de que la raíz del repositorio tenga los archivos correctos del proyecto.

Tiempo de ejecución Archivos del directorio raíz
ASP.NET (solo Windows) *.sln, *.csprojo default.aspx
ASP.NET Core *.sln o *.csproj
PHP index.php
Ruby (solo Linux) Gemfile
Node.js server.js, app.jso package.json con un script de inicio
Python *.py, requirements.txto runtime.txt
HTML default.htm, default.html, default.asp, index.htm, index.html o iisstart.htm
Trabajos web <job_name>/run.<extension> en App_Data/jobs/continuous para WebJobs continuos o App_Data/jobs/triggered para WebJobs desencadenados. Para más información, consulte la documentación de WebJobs de Kudu.
Functions Consulte Implementación continua para Azure Functions.

Para personalizar la implementación, puede incluir un archivo .deployment en la raíz del repositorio. Para más información, consulte el artículo sobre la personalización de las implementaciones y el artículo sobre el script de implementación personalizado.

Nota

Si usa Visual Studio, deje que Visual Studio cree un repositorio automáticamente. El proyecto está listo inmediatamente para su implementación por medio de Git.

Configuración de un usuario de implementación

Consulte Configuración de credenciales de implementación para Azure App Service. Puede usar credenciales de ámbito de usuario o credenciales de ámbito de aplicación.

Creación de una aplicación habilitada para Git

Si ya tiene una aplicación App Service y quiere configurar una implementación de Git local para ella, consulte Configuración de una aplicación existente en su lugar.

Ejecute az webapp create con la opción --deployment-local-git. Por ejemplo:

az webapp create --resource-group <group-name> --plan <plan-name> --name <app-name> --runtime "<runtime-flag>" --deployment-local-git

La salida contiene una dirección URL, como: https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Use esta dirección URL para implementar la aplicación en el siguiente paso.

Configuración de una aplicación existente

Si aún no tiene una aplicación, consulte Creación de una aplicación habilitada para Git en su lugar.

Ejecute az webapp deployment source config-local-git. Por ejemplo:

az webapp deployment source config-local-git --name <app-name> --resource-group <group-name>

La salida contiene una dirección URL, como: https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Use esta dirección URL para implementar la aplicación en el siguiente paso.

Sugerencia

Esta dirección URL contiene el nombre de usuario de la implementación de ámbito de usuario. Si lo desea, puede usar las credenciales del ámbito de aplicación en su lugar.

Implementación de la aplicación web

  1. En una ventana del terminal local, cambie el directorio a la raíz del repositorio de Git y agregue un repositorio remoto de Git mediante la dirección URL que ha recibido de la aplicación. Si el método elegido no le proporciona una dirección URL, use https://<app-name>.scm.azurewebsites.net/<app-name>.git con el nombre de la aplicación en <app-name>.

    git remote add azure <url>
    

    Nota

    Si ha creado una aplicación habilitada para Git en PowerShell mediante New-AzWebApp, el repositorio remoto ya se ha creado.

  2. Envíe los cambios a la instancia remota de Azure con git push azure master (consulte Cambiar la rama de implementación).

  3. En la ventana Administrador de credenciales de Git, escriba las credenciales de ámbito de usuario o ámbito de aplicación, no las credenciales de inicio de sesión de Azure.

    Si la dirección URL del repositorio remoto de Git ya contiene el nombre de usuario y la contraseña, no se le pedirá.

  4. Revise el resultado. Es posible que vea la automatización específica para el entorno de tiempo de ejecución, como MSBuild para ASP.NET, npm install para Node.js y pip install para Python.

  5. Busque su aplicación en Azure Portal para comprobar que el contenido esté implementado.

Cambiar la rama de implementación

Al insertar confirmaciones en el repositorio de App Service, App Service implementa los archivos de la rama master de forma predeterminada. Dado que muchos repositorios de Git van a pasar de master a main, debe asegurarse de que realiza la inserción en la rama correcta del repositorio de App Service de una de estas dos maneras:

  • Implemente en master explícitamente con un comando como:

    git push azure main:master
    
  • Cambie la rama de implementación estableciendo la configuración de la aplicación DEPLOYMENT_BRANCH y, a continuación, inserte las confirmaciones en la rama personalizada. Para hacerlo con la CLI de Azure:

    az webapp config appsettings set --name <app-name> --resource-group <group-name> --settings DEPLOYMENT_BRANCH='main'
    git push azure main
    

    También puede cambiar la configuración de la aplicación DEPLOYMENT_BRANCH en Azure Portal, seleccionando Variables de entorno en Configuración y agregando una nueva configuración de aplicación con un nombre DEPLOYMENT_BRANCH y un valor de main.

Solución de problemas de implementación

Puede ver los siguientes mensajes de error comunes cuando usa Git para publicar en una aplicación de App Service en Azure:

Message Causa Solución
Unable to access '[siteURL]': Failed to connect to [scmAddress] La aplicación no está funcionando. inicie la aplicación en Azure Portal. La implementación de GIT no está disponible cuando la aplicación web está detenida.
Couldn't resolve host 'hostname' La información de dirección del repositorio remoto de azure es incorrecta. use el comando git remote -v para obtener un listado de todos los remotos, junto con la dirección URL asociada. Compruebe que la URL para el repositorio correcto azure es correcta. Si lo necesita, suprima y vuelva a crear este repositorio remoto utilizando la URL correcta.
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'main'. No especificó una rama durante git push, o no ha establecido el valor push.default en .gitconfig. Vuelva a ejecutar git push y especifique la rama principal: git push azure main.
Error - Changes committed to remote repository but deployment to website failed. Insertó una rama local que no coincide con la rama de implementación de la aplicación en azure. Compruebe que la rama actual sea master. Para cambiar la rama predeterminada, use la configuración de aplicación DEPLOYMENT_BRANCH (consulte Cambiar la rama de implementación).
src refspec [branchname] does not match any. Ha intentado agregar una rama que no es la principal en el repositorio remoto azure. Vuelva a ejecutar git push y especifique la rama principal: git push azure main.
RPC failed; result=22, HTTP code = 5xx. este error puede producirse si se trata de insertar un repositorio Git de gran tamaño a través de HTTPS. Cambie la configuración de Git en la máquina local para aumentar el tamaño de postBuffer. Por ejemplo: git config --global http.postBuffer 524288000.
Error - Changes committed to remote repository but your web app not updated. Implementó una aplicación Node.js con un archivo package.json que especifica los módulos adicionales requeridos. Revise los mensajes de error npm ERR! anteriores a este error para obtener más contexto sobre el error. A continuación se indican las causas conocidas de este error y los mensajes npm ERR!:

El archivo package.json tiene una estructura incorrecta: npm ERR! Couldn't read dependencies.

Módulo nativo que no tiene una distribución binaria para Windows:
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
o bien
npm ERR! [modulename@version] preinstall: \make \|\| gmake\

Más recursos