Implementación continua en Azure App ServiceContinuous deployment to Azure App Service

En este artículo se muestra cómo configurar la implementación continua en Azure App Service.This article shows you how to configure continuous deployment for Azure App Service. App Service permite la implementación continua desde BitBucket, GitHub y Azure DevOps Services mediante la extracción de las actualizaciones más recientes del repositorio existente en alguno de estos servicios.App Service enables continuous deployment from BitBucket, GitHub, and Azure DevOps Services by pulling in the most recent updates from your existing repository in one of these services.

Para más información sobre cómo configurar una implementación continua manualmente desde un repositorio en la nube que no aparece en Azure Portal (como GitLab), consulte Setting up continuous deployment using manual steps (Configuración de la implementación continua de forma manual).To find out how to configure continuous deployment manually from a cloud repository not listed by the Azure portal (such as GitLab), see Setting up continuous deployment using manual steps.

Preparación del repositorioPrepare your repository

Para obtener compilaciones automáticas del servidor de compilación de Kudu para Azure App Service, asegúrese de que la raíz del repositorio tiene los archivos correctos del proyecto.To get automatic builds from the Azure App Service Kudu build server, make sure that your repository root has the correct files in your project.

Tiempo de ejecuciónRuntime Archivos del directorio raízRoot directory files
ASP.NET (solo Windows)ASP.NET (Windows only) *.sln, *.csproj o default.aspx*.sln, *.csproj, or default.aspx
ASP.NET CoreASP.NET Core *.sln o *.csproj*.sln or *.csproj
PHPPHP index.phpindex.php
Ruby (solo Linux)Ruby (Linux only) GemfileGemfile
Node.jsNode.js server.js, app.js o package.json con un script de inicioserver.js, app.js, or package.json with a start script
PythonPython *.py, requirements.txt o runtime.txt*.py, requirements.txt, or runtime.txt
HTMLHTML default.htm, default.html, default.asp, index.htm, index.html o iisstart.htmdefault.htm, default.html, default.asp, index.htm, index.html, or iisstart.htm
Trabajos webWebJobs <nombre_de_trabajo>/run.<extensión> en App_Data/jobs/continuous (para WebJobs continuos) o App_Data/jobs/triggered (para WebJobs desencadenados).<job_name>/run.<extension> under App_Data/jobs/continuous (for continuous WebJobs) or App_Data/jobs/triggered (for triggered WebJobs). Para más información, consulte la documentación de WebJobs de Kudu.For more information, see Kudu WebJobs documentation.
FunctionsFunctions Consulte Implementación continua para Azure Functions.See Continuous deployment for Azure Functions.

Para personalizar la implementación puede incluir un archivo .deployment en la raíz del repositorio.To customize your deployment, include a .deployment file in the repository root. 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.For more information, see Customize deployments and Custom deployment script.

Nota

Si desarrolla en Visual Studio, deje que Visual Studio cree un repositorio en su lugar.If you develop in Visual Studio, let Visual Studio create a repository for you. El proyecto está listo inmediatamente para su implementación mediante GIT.The project is immediately ready to be deployed by using Git.

Publique el repositorio preparado en alguno de los servicios compatibles.Publish your prepared repository to one of the supported services. Para más información sobre cómo publicar el proyecto en estos servicios, vea Crear un repositorio (GitHub), Crear un repositorio (BitBucket) y la introducción a Azure DevOps Services.For more information on publishing your project to these services, see Create a repo (GitHub), Create a repo (BitBucket), and Get started with Azure DevOps Services.

Implementación continua desde GitHubDeploy continuously from GitHub

Para habilitar la implementación continua con GitHub, vaya a la página de la aplicación de App Service en Azure Portal.To enable continuous deployment with GitHub, navigate to your App Service app page in the Azure portal.

En el menú de la izquierda, haga clic en Centro de implementación > GitHub > Autorizar.In the left menu, click Deployment Center > GitHub > Authorize. Siga las indicaciones de autorización.Follow the authorization prompts.

Solo necesita autorizarse una sola vez con GitHub.You only need to authorize with GitHub once. Si ya dispone de autorización, simplemente haga clic en Continuar.If you're already authorized, just click Continue. Puede cambiar la cuenta de GitHub autorizada si hace clic en Cambiar cuenta.You can change the authorized GitHub account by clicking Change account.

En la página Proveedor de compilación, elija el proveedor de compilación y haga clic en > Continuar.In the Build provider page, choose the build provider and click > Continue.

Opción 1: Usar el servidor de compilación de Kudu para App ServiceOption 1: use App Service Kudu build server

En la página Configurar, seleccione la organización, el repositorio y la rama desde los que desea realizar la implementación continua.In the Configure page, select the organization, repository, and branch from which you want to deploy continuously. Cuando haya terminado, haga clic en Continuar.When finished, click Continue.

Para implementar desde un repositorio en una organización de GitHub, vaya a GitHub y vaya a configuración > aplicaciones > autorizado aplicaciones OAuth.To deploy from a repository in a GitHub organization, browse to GitHub and go to Settings > Applications > Authorized OAuth Apps. A continuación, haga clic en "Azure App Service".Then click "Azure App Service".

Configuración > aplicaciones > OAuth aplicaciones autorizadas > Azure App Service

En la página siguiente, conceda acceso de App Service a repositorios de su organización, haga clic en el botón "Concesión" en el lado derecho.In the next page, grant App Service access to your organization's repositories by clicking the "Grant" button on the right-hand side.

Haga clic en "Autorizar" para conceder acceso de App Service en los repositorios de la organización

Su organización debería aparecer ahora en la lista de "Organización" en el configurar página del centro de implementación.Your organization should now show in the "Organization" list in the Configure page of the Deployment Center.

Opción 2: Usar Azure Pipelines (versión preliminar)Option 2: use Azure Pipelines (preview)

Nota

Para que App Service cree las instancias necesarias de Azure Pipelines en la organización de Azure DevOps Services, la cuenta de Azure debe tener el rol de propietario en la suscripción a Azure.For App Service to create the necessary Azure Pipelines in your Azure DevOps Services organization, your Azure account must have the role of Owner in your Azure subscription.

En la página Configurar, en la sección Código, seleccione la organización, el repositorio y la rama desde los que desea realizar la implementación continua.In the Configure page, in the Code section, select the organization, repository, and branch from which you want to deploy continuously. Cuando haya terminado, haga clic en Continuar.When finished, click Continue.

En la página Configurar, en la sección Compilar, cree una organización de Azure DevOps Services o especifique una organización existente.In the Configure page, in the Build section, configure a new Azure DevOps Services organization or specify an existing organization. Cuando haya terminado, haga clic en Continuar.When finished, click Continue.

Nota

Si desea usar una organización existente de Azure DevOps Services que no aparece, debe vincular la organización de Azure DevOps Services a la suscripción de Azure.If you want to use an existing Azure DevOps Services organization that is not listed, you need to link the Azure DevOps Services organization to your Azure subscription.

En la página Probar, elija si desea habilitar las pruebas de carga y, después, haga clic en Continuar.In the Test page, choose whether to enable load tests, then click Continue.

En función del plan de tarifa de App Service, también puede ver una página Implementar en el almacenamiento provisional.Depending on the pricing tier of your App Service plan, you may also see a Deploy to staging page. Elija si desea habilitar ranuras de implementación y después haga clic en Continuar.Choose whether to enable deployment slots, then click Continue.

Finalización de la configuraciónFinish configuration

En la página Resumen, verifique las opciones y haga clic en Finalizar.In the Summary page, verify your options and click Finish.

Cuando finalice la configuración, las nuevas confirmaciones en el repositorio seleccionado se implementan continuamente en la aplicación de App Service.When configuration completes, new commits in the selected repository are deployed continuously into your App Service app.

Implementación continua desde BitBucketDeploy continuously from BitBucket

Para habilitar la implementación continua con BitBucket, vaya a la página de la aplicación de App Service en Azure Portal.To enable continuous deployment with BitBucket, navigate to your App Service app page in the Azure portal.

En el menú de la izquierda, haga clic en Centro de implementación > BitBucket > Autorizar.In the left menu, click Deployment Center > BitBucket > Authorize. Siga las indicaciones de autorización.Follow the authorization prompts.

Solo necesita autorizarse una sola vez con BitBucket.You only need to authorize with BitBucket once. Si ya dispone de autorización, simplemente haga clic en Continuar.If you're already authorized, just click Continue. Puede cambiar la cuenta de BitBucket autorizada si hace clic en Cambiar cuenta.You can change the authorized BitBucket account by clicking Change account.

En la página Configurar, seleccione el repositorio y la rama desde los que desea realizar la implementación continua.In the Configure page, select the repository and branch from which you want to deploy continuously. Cuando haya terminado, haga clic en Continuar.When finished, click Continue.

En la página Resumen, verifique las opciones y haga clic en Finalizar.In the Summary page, verify your options and click Finish.

Cuando finalice la configuración, las nuevas confirmaciones en el repositorio seleccionado se implementan continuamente en la aplicación de App Service.When configuration completes, new commits in the selected repository are deployed continuously into your App Service app.

Implementación continua desde Azure Repos (DevOps Services)Deploy continuously from Azure Repos (DevOps Services)

Para habilitar la implementación continua con Azure Repos, vaya a la página de la aplicación de App Service en Azure Portal.To enable continuous deployment with from Azure Repos, navigate to your App Service app page in the Azure portal.

En el menú de la izquierda, haga clic en Centro de implementación > Azure Repos > Continuar.In the left menu, click Deployment Center > Azure Repos > Continue.

En la página Proveedor de compilación, elija el proveedor de compilación y haga clic en > Continuar.In the Build provider page, choose the build provider and click > Continue.

Nota

Si desea usar una organización existente de Azure DevOps Services que no aparece, debe vincular la organización de Azure DevOps Services a la suscripción de Azure.If you want to use an existing Azure DevOps Services organization that is not listed, you need to link the Azure DevOps Services organization to your Azure subscription.

Opción 1: Usar el servidor de compilación de Kudu para App ServiceOption 1: use App Service Kudu build server

En la página Configurar, seleccione la organización de Azure DevOps Services, el proyecto, el repositorio y la rama desde los que desea realizar la implementación continua.In the Configure page, select the Azure DevOps Services organization, project, repository, and branch from which you want to deploy continuously. Cuando haya terminado, haga clic en Continuar.When finished, click Continue.

Opción 2: Uso de la entrega continua de Azure DevOps ServicesOption 2: use Azure DevOps Services continuous delivery

Nota

Para que App Service cree las instancias necesarias de Azure Pipelines en la organización de Azure DevOps Services, la cuenta de Azure debe tener el rol de propietario en la suscripción a Azure.For App Service to create the necessary Azure Pipelines in your Azure DevOps Services organization, your Azure account must have the role of Owner in your Azure subscription.

En la página Configurar, en la sección Programar, seleccione la organización de Azure DevOps Services, el proyecto, el repositorio y la rama desde los que desea realizar la implementación continua.In the Configure page, in the Code section, select the Azure DevOps Services organization, project, repository, and branch from which you want to deploy continuously. Cuando haya terminado, haga clic en Continuar.When finished, click Continue.

En la página Configurar, en la sección Compilar, especifique el marco del lenguaje que debe usar Azure DevOps Services para ejecutar las tareas de compilación para el repositorio seleccionado.In the Configure page, in the Build section, specify the language framework that Azure DevOps Services should use to run the build tasks for your selected repository. Cuando haya terminado, haga clic en Continuar.When finished, click Continue.

En la página Probar, elija si desea habilitar las pruebas de carga y, después, haga clic en Continuar.In the Test page, choose whether to enable load tests, then click Continue.

En función del plan de tarifa de App Service, también puede ver una página Implementar en el almacenamiento provisional.Depending on the pricing tier of your App Service plan, you may also see a Deploy to staging page. Elija si desea habilitar ranuras de implementación y después haga clic en Continuar.Choose whether to enable deployment slots, then click Continue. DevOps no permite la entrega continua a la ranura de producción.DevOps does not allow continous delivery to the production slot. Esto es así por diseño para evitar que las implementaciones accidentales a producción.This is by design to prevent accidental deployments to production. Debe configurar la entrega continua para una ranura de ensayo, compruebe los cambios e intercambiar las ranuras cuando esté listo.You should set up continuous delivery to a staging slot, verify the changes there, and swap the slots when you are ready.

Finalización de la configuraciónFinish configuration

En la página Resumen, verifique las opciones y haga clic en Finalizar.In the Summary page, verify your options and click Finish.

Cuando finalice la configuración, las nuevas confirmaciones en el repositorio seleccionado se implementan continuamente en la aplicación de App Service.When configuration completes, new commits in the selected repository are deployed continuously into your App Service app.

Deshabilitación de la implementación continuaDisable continuous deployment

Para deshabilitar la implementación continua, vaya a la página de la aplicación de App Service en Azure Portal.To disable continuous deployment, navigate to your App Service app page in the Azure portal.

En el menú de la izquierda, haga clic en Centro de implementación > GitHub, Azure DevOps Services o BitBucket > Desconectar.In the left menu, click Deployment Center > GitHub or Azure DevOps Services or BitBucket > Disconnect.

¿Qué ocurre con mi aplicación durante la implementación?What happens to my app during deployment?

Todos los métodos de implementación admitidos oficialmente tienen algo en común: realizan cambios en los archivos de la carpeta /home/site/wwwroot de la aplicación.All the officially supported deployment methods have one thing in common: they make changes to the files in the /home/site/wwwroot folder of your app. Estos son los mismos archivos que se ejecutan en producción.These are the same files that are run in production. Por tanto, se puede producir un error durante la implementación debido a archivos bloqueados, o puede que la aplicación de producción tenga un comportamiento impredecible durante la implementación debido a que no todos los archivos se actualizan simultáneamente.Therefore, the deployment can fail due to locked files, or the app in production may have unpredictable behavior during deployment because not all the files are updated simultaneously. Hay varias formas de evitar estos problemas:There are a few different ways to avoid these issues:

Recursos adicionalesAdditional Resources