Implantação do git local no serviço Azure AppLocal Git deployment to Azure App Service

Este guia de instruções mostra como implantar seu aplicativo no serviço Azure app de um repositório git em seu computador local.This how-to guide shows you how to deploy your app to Azure App Service from a Git repository on your local computer.

Pré-requisitosPrerequisites

Para seguir as etapas neste guia de instruções:To follow the steps in this how-to guide:

  • Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

  • Instalar o Git.Install Git.

  • Ter um repositório git local com código que você deseja implantar.Have a local Git repository with code you want to deploy. Para baixar um repositório de exemplo, execute o seguinte comando na janela do seu terminal local:To download a sample repository, run the following command in your local terminal window:

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

Preparar o seu repositórioPrepare your repository

Para obter as compilações automáticas do servidor de compilação Kudu de serviço de aplicações do Azure, certifique-se de que a raiz do repositório tem os arquivos corretos no seu projeto.To get automatic builds from Azure App Service Kudu build server, make sure that your repository root has the correct files in your project.

RuntimeRuntime Ficheiros do diretório de raizRoot directory files
ASP.NET (apenas Windows)ASP.NET (Windows only) *.sln, *.csproj, or default.aspx*.sln, *.csproj, or default.aspx
Núcleo de ASP.NETASP.NET Core *.sln or *.csproj*.sln or *.csproj
PHPPHP index.phpindex.php
Ruby (apenas Linux)Ruby (Linux only) GemfileGemfile
Node.jsNode.js Server. js, App. js, ou Package. JSON com um script de inícioserver.js, app.js, or package.json with a start script
PythonPython *. PY, Requirements. txt, ou Runtime. txt*.py, requirements.txt, or runtime.txt
HTMLHTML default. htm, default. HTML, default, htm, Index, ou iisstart. htmdefault.htm, default.html, default.asp, index.htm, index.html, or iisstart.htm
Trabalhos WebWebJobs <job_name > / run. <extensão > sob App_dados/tarefas/contínua para o WebJobs contínuos, ou aplicação_dados/tarefas/acionada para acionada WebJobs.<job_name>/run.<extension> under App_Data/jobs/continuous for continuous WebJobs, or App_Data/jobs/triggered for triggered WebJobs. Para obter mais informações, consulte documentação de WebJobs do Kudu.For more information, see Kudu WebJobs documentation.
FunçõesFunctions Ver implementação contínua para funções do Azure.See Continuous deployment for Azure Functions.

Para personalizar sua implantação, inclua uma . Deployment ficheiro na raiz do repositório.To customize your deployment, include a .deployment file in the repository root. Para obter mais informações, consulte personalizar implementações e script de implementação personalizado.For more information, see Customize deployments and Custom deployment script.

Nota

Se desenvolver no Visual Studio, permitem Visual Studio criar um repositório para si.If you develop in Visual Studio, let Visual Studio create a repository for you. O projeto é imediatamente pronto para ser implementado utilizando o Git.The project is immediately ready to be deployed by using Git.

Utilizar o Azure Cloud ShellUse Azure Cloud Shell

O Azure hospeda Azure Cloud Shell, um ambiente de shell interativo que você pode usar por meio de seu navegador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Você pode usar o bash ou o PowerShell com Cloud Shell para trabalhar com os serviços do Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Você pode usar o Cloud Shell comandos pré-instalados para executar o código neste artigo sem precisar instalar nada em seu ambiente local.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Para iniciar Azure Cloud Shell:To start Azure Cloud Shell:

OpçãoOption Exemplo/linkExample/Link
Selecione Experimentar no canto superior direito de um bloco de código.Select Try It in the upper-right corner of a code block. A seleção de try não copia automaticamente o código para Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Exemplo de teste para Azure Cloud Shell
Vá para https://shell.azure.comou selecione o botão Iniciar Cloud Shell para abrir Cloud Shell em seu navegador.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. iniciar Cloud Shell em uma nova janelaLaunch Cloud Shell in a new window
Selecione o botão Cloud Shell na barra de menus superior direita na portal do Azure.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Botão Cloud Shell no portal do Azure

Para executar o código neste artigo em Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Iniciar Cloud Shell.Start Cloud Shell.

  2. Selecione o botão copiar em um bloco de código para copiar o código.Select the Copy button on a code block to copy the code.

  3. Cole o código na sessão de Cloud Shell selecionando Ctrl+Shift+v no Windows e Linux ou selecionando cmd+Shift+v no MacOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Selecione Enter para executar o código.Select Enter to run the code.

Implantar com o servidor de Build do kuduDeploy with Kudu build server

A maneira mais fácil de habilitar a implantação do git local para seu aplicativo com o servidor de Build do serviço de aplicativo do kudu é usar Azure Cloud Shell.The easiest way to enable local Git deployment for your app with the Kudu App Service build server is to use Azure Cloud Shell.

Configurar um utilizador de implementaçãoConfigure a deployment user

FTP e local Git podem implementar uma aplicação web do Azure ao utilizar um utilizador de implementação.FTP and local Git can deploy to an Azure web app by using a deployment user. Depois de configurar o seu utilizador de implementação, pode usá-lo para todas as suas implementações do Azure.Once you configure your deployment user, you can use it for all your Azure deployments. O nome de utilizador de implementação ao nível da conta e palavra-passe são diferentes das credenciais da sua subscrição do Azure.Your account-level deployment username and password are different from your Azure subscription credentials.

Para configurar o utilizador de implementação, execute o conjunto de usuários do az webapp deployment comando no Azure Cloud Shell.To configure the deployment user, run the az webapp deployment user set command in Azure Cloud Shell. Substitua <nome de utilizador > e <palavra-passe > com um nome de utilizador de utilizador de implementação e a palavra-passe.Replace <username> and <password> with a deployment user username and password.

  • O nome de utilizador tem de ser exclusivo no Azure e para local Git pushes, não pode conter o ' @' símbolo.The username must be unique within Azure, and for local Git pushes, must not contain the ‘@’ symbol.
  • A palavra-passe tem de ser, pelo menos, oito carateres de comprimento, com dois dos seguintes três elementos: letras, números e símbolos.The password must be at least eight characters long, with two of the following three elements: letters, numbers, and symbols.
az webapp deployment user set --user-name <username> --password <password>

A saída JSON mostra a palavra-passe como null.The JSON output shows the password as null. Se obtiver o erro 'Conflict'. Details: 409, altere o nome de utilizador.If you get a 'Conflict'. Details: 409 error, change the username. Se obtiver o 'Bad Request'. Details: 400 erro, utilize uma palavra-passe mais forte.If you get a 'Bad Request'. Details: 400 error, use a stronger password.

Registe o seu nome de utilizador e palavra-passe para utilizar para implementar as suas aplicações web.Record your username and password to use to deploy your web apps.

Obter a URL de implantaçãoGet the deployment URL

Para obter a URL para habilitar a implantação do git local para um aplicativo existente, execute az webapp deployment source config-local-git no Cloud Shell.To get the URL to enable local Git deployment for an existing app, run az webapp deployment source config-local-git in the Cloud Shell. Substitua <> de nome de aplicativo e <> de nome de grupo pelos nomes de seu aplicativo e seu grupo de recursos do Azure.Replace <app-name> and <group-name> with the names of your app and its Azure resource group.

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

Ou, para criar um novo aplicativo habilitado para git, execute az webapp create no Cloud shell com o parâmetro --deployment-local-git.Or, to create a new Git-enabled app, run az webapp create in the Cloud Shell with the --deployment-local-git parameter. Substitua <> de nome de aplicativo, <> de nome de grupo e <nome do plano > com os nomes de seu novo aplicativo git, seu grupo de recursos do Azure e seu plano de serviço do Azure App.Replace <app-name>, <group-name>, and <plan-name> with the names for your new Git app, its Azure resource group, and its Azure App Service plan.

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

Um dos comandos retorna uma URL como: https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git.Either command returns a URL like: https://<deployment-username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Use essa URL para implantar seu aplicativo na próxima etapa.Use this URL to deploy your app in the next step.

Em vez de usar essa URL de nível de conta, você também pode habilitar o Git local usando credenciais de nível de aplicativo.Instead of using this account-level URL, you can also enable local Git by using app-level credentials. Azure App serviço gera automaticamente essas credenciais para cada aplicativo.Azure App Service automatically generates these credentials for every app.

Obtenha as credenciais do aplicativo executando o comando a seguir no Cloud Shell.Get the app credentials by running the following command in the Cloud Shell. Substitua <nome do aplicativo > e <> do nome do grupo com o nome do seu aplicativo e o nome do grupo de recursos do Azure.Replace <app-name> and <group-name> with your app's name and Azure resource group name.

az webapp deployment list-publishing-credentials --name <app-name> --resource-group <group-name> --query scmUri --output tsv

Use a URL que retorna para implantar seu aplicativo na próxima etapa.Use the URL that returns to deploy your app in the next step.

Implantar o aplicativo WebDeploy the web app

  1. Abra uma janela de terminal local para seu repositório git local e adicione um Azure remoto.Open a local terminal window to your local Git repository, and add an Azure remote. No comando a seguir, substitua <URL > com a URL específica do usuário de implantação ou URL específica do aplicativo obtida da etapa anterior.In the following command, replace <url> with the deployment user-specific URL or app-specific URL you got from the previous step.

    git remote add azure <url>
    
  2. Envie por push para o remoto do Azure com o git push azure master.Push to the Azure remote with git push azure master.

  3. Na janela Gerenciador de credenciais do git , insira sua senha de usuário de implantação, não sua senha de logon do Azure.In the Git Credential Manager window, enter your deployment user password, not your Azure sign-in password.

  4. Reveja a saída.Review the output. Você pode ver a automação específica do tempo de execução, como o MSBuild para ASP.NET, npm install para node. js e pip install para Python.You may see runtime-specific automation, such as MSBuild for ASP.NET, npm install for Node.js, and pip install for Python.

  5. Navegue até seu aplicativo no portal do Azure para verificar se o conteúdo está implantado.Browse to your app in the Azure portal to verify that the content is deployed.

Implantar com Builds Azure PipelinesDeploy with Azure Pipelines builds

Se sua conta tiver as permissões necessárias, você poderá configurar Azure Pipelines (versão prévia) para habilitar a implantação do git local para seu aplicativo.If your account has the necessary permissions, you can set up Azure Pipelines (Preview) to enable local Git deployment for your app.

  • Sua conta do Azure deve ter permissões para gravar em Azure Active Directory e criar um serviço.Your Azure account must have permissions to write to Azure Active Directory and create a service.

  • Sua conta do Azure deve ter a função de proprietário em sua assinatura do Azure.Your Azure account must have the Owner role in your Azure subscription.

  • Você deve ser um administrador no projeto DevOps do Azure que deseja usar.You must be an administrator in the Azure DevOps project you want to use.

Para habilitar a implantação do git local para seu aplicativo com Azure Pipelines (versão prévia):To enable local Git deployment for your app with Azure Pipelines (Preview):

  1. Navegue até a página do aplicativo de serviço Azure App no portal do Azuree selecione central de implantação no menu à esquerda.Navigate to your Azure App Service app page in the Azure portal, and select Deployment Center in the left menu.

  2. Na página centro de implantação , selecione git locale, em seguida, selecione continuar.On the Deployment Center page, select Local Git, and then select Continue.

    Selecione git local e, em seguida, selecione continuar

  3. Na página provedor de compilação , selecione Azure pipelines (versão prévia) e, em seguida, selecione continuar.On the Build provider page, select Azure Pipelines (Preview), and then select Continue.

    Selecione Azure Pipelines (versão prévia) e, em seguida, selecione continuar.

  4. Na página Configurar , configure uma nova organização de DevOps do Azure ou especifique uma organização existente e, em seguida, selecione continuar.On the Configure page, configure a new Azure DevOps organization, or specify an existing organization, and then select Continue.

    Nota

    Se sua organização do Azure DevOps existente não estiver listada, talvez seja necessário vinculá-la à sua assinatura do Azure.If your existing Azure DevOps organization isn't listed, you may need to link it to your Azure subscription. Para obter mais informações, consulte definir o pipeline de liberação de CD.For more information, see Define your CD release pipeline.

  5. Dependendo do tipo de preçodo plano do serviço de aplicativo, você poderá ver uma página implantar na preparação .Depending on your App Service plan pricing tier, you may see a Deploy to staging page. Escolha se deseja habilitar os slots de implantaçãoe, em seguida, selecione continuar.Choose whether to enable deployment slots, and then select Continue.

  6. Na página Resumo , examine as configurações e selecione concluir.On the Summary page, review the settings, and then select Finish.

  7. Quando o pipeline do Azure estiver pronto, copie a URL do repositório git da página centro de implantação para usar na próxima etapa.When the Azure Pipeline is ready, copy the Git repository URL from the Deployment Center page to use in the next step.

    Copiar a URL do repositório git

  8. Na janela do terminal local, adicione um remoto do Azure ao repositório git local.In your local terminal window, add an Azure remote to your local Git repository. No comando, substitua <URL > pela URL do repositório git que você obteve da etapa anterior.In the command, replace <url> with the URL of the Git repository that you got from the previous step.

    git remote add azure <url>
    
  9. Envie por push para o remoto do Azure com o git push azure master.Push to the Azure remote with git push azure master.

  10. Na página Gerenciador de credenciais do git , entre com seu nome de usuário do VisualStudio.com.On the Git Credential Manager page, sign in with your visualstudio.com username. Para obter outros métodos de autenticação, consulte visão geral da autenticação de Azure DevOps Services.For other authentication methods, see Azure DevOps Services authentication overview.

  11. Depois que a implantação for concluída, exiba o progresso da compilação em https://<azure_devops_account>.visualstudio.com/<project_name>/_builde o progresso da implantação em https://<azure_devops_account>.visualstudio.com/<project_name>/_release.Once deployment is finished, view the build progress at https://<azure_devops_account>.visualstudio.com/<project_name>/_build, and the deployment progress at https://<azure_devops_account>.visualstudio.com/<project_name>/_release.

  12. Navegue até seu aplicativo no portal do Azure para verificar se o conteúdo está implantado.Browse to your app in the Azure portal to verify that the content is deployed.

O que acontece ao meu aplicativo durante a implantação?What happens to my app during deployment?

Todos os métodos de implementação suportadas oficialmente fazem alterações aos ficheiros no /home/site/wwwroot pasta da sua aplicação.All the officially supported deployment methods make changes to the files in the /home/site/wwwroot folder of your app. Estes ficheiros são os mesmos aqueles que são executados na produção.These files are the same ones that are run in production. Por conseguinte, a implementação pode falhar devido a arquivos bloqueados.Therefore, the deployment can fail because of locked files. A aplicação na produção pode também ter um comportamento imprevisível durante a implementação, porque nem todos os ficheiros atualizados ao mesmo tempo.The app in production may also behave unpredictably during deployment, because not all the files updated at the same time. Existem várias formas de evitar esses problemas:There are a few different ways to avoid these issues:

Solucionar problemas de implantaçãoTroubleshoot deployment

Você poderá ver as seguintes mensagens de erro comuns ao usar o Git para publicar em um aplicativo do serviço de aplicativo no Azure:You may see the following common error messages when you use Git to publish to an App Service app in Azure:

MensagemMessage CausaCause ResoluçãoResolution
Unable to access '[siteURL]': Failed to connect to [scmAddress] O aplicativo não está em funcionamento.The app isn't up and running. Inicie o aplicativo no portal do Azure.Start the app in the Azure portal. A implantação do git não está disponível quando o aplicativo Web é interrompido.Git deployment isn't available when the web app is stopped.
Couldn't resolve host 'hostname' As informações de endereço para o remoto ' Azure ' estão incorretas.The address information for the 'azure' remote is incorrect. Use o comando git remote -v para listar todas as remotas, juntamente com a URL associada.Use the git remote -v command to list all remotes, along with the associated URL. Verifique se a URL para o remoto ' Azure ' está correta.Verify that the URL for the 'azure' remote is correct. Se necessário, remova e recrie esse controle remoto usando a URL correta.If needed, remove and recreate this remote using the correct URL.
No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'master'. Você não especificou uma ramificação durante git pushou não definiu o valor de push.default no .gitconfig.You didn't specify a branch during git push, or you haven't set the push.default value in .gitconfig. Execute git push novamente, especificando o Branch mestre: git push azure master.Run git push again, specifying the master branch: git push azure master.
src refspec [branchname] does not match any. Você tentou enviar por push para um Branch que não seja o mestre no remoto ' Azure '.You tried to push to a branch other than master on the 'azure' remote. Execute git push novamente, especificando o Branch mestre: git push azure master.Run git push again, specifying the master branch: git push azure master.
RPC failed; result=22, HTTP code = 5xx. Esse erro pode ocorrer se você tentar enviar por push um repositório git grande por HTTPS.This error can happen if you try to push a large git repository over HTTPS. Altere a configuração do git no computador local para tornar o postBuffer maior.Change the git configuration on the local machine to make the postBuffer bigger. Por exemplo: git config --global http.postBuffer 524288000.For example: git config --global http.postBuffer 524288000.
Error - Changes committed to remote repository but your web app not updated. Você implantou um aplicativo node. js com um arquivo Package. JSON que especifica módulos adicionais necessários.You deployed a Node.js app with a package.json file that specifies additional required modules. Examine as npm ERR! mensagens de erro antes desse erro para obter mais contexto sobre a falha.Review the npm ERR! error messages before this error for more context on the failure. Veja a seguir as causas conhecidas desse erro e as mensagens de npm ERR! correspondentes:The following are the known causes of this error, and the corresponding npm ERR! messages:

Arquivo Package. JSON malformado: npm ERR! Couldn't read dependencies.Malformed package.json file: npm ERR! Couldn't read dependencies.

O módulo nativo não tem uma distribuição binária para o Windows:Native module doesn't have a binary distribution for Windows:
npm ERR! \cmd "/c" "node-gyp rebuild"\ failed with 1
ouor
npm ERR! [modulename@version] preinstall: \make || gmake\

Recursos adicionaisAdditional resources