Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019
Use o Azure Pipelines para implantar automaticamente o seu aplicativo Web no Serviço de Aplicativo do Azure em cada build bem-sucedido. O Azure Pipelines permite criar, testar e implantar com CI/CD (integração contínua e entrega contínua) usando o Azure DevOps.
Os pipelines YAML são definidos usando um arquivo YAML em seu repositório. Uma etapa é o menor bloco de construção de um pipeline e pode ser um script ou tarefa (script pré-empacotado). Saiba mais sobre os principais conceitos e componentes que compõem um pipeline.
Você usará a tarefa do Aplicativo Web do Azure (AzureWebApp
) para implantar no Serviço de Aplicativo do Azure no seu pipeline. Para cenários mais complicados, como quando você precisa usar parâmetros XML em sua implantação, você pode usar a tarefa AzureRmWebAppDeployment
de implantação do Serviço de Aplicativo do Azure.
Pré-requisitos:
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Uma organização do Azure DevOps. Crie um gratuitamente.
- A capacidade de executar pipelines em agentes hospedados pela Microsoft. Você pode comprar um trabalho paralelo ou solicitar uma camada gratuita.
- Um aplicativo do Serviço de Aplicativo do Azure em funcionamento com o código hospedado no GitHub ou no Azure Repos.
- .NET: Criar um aplicativo Web ASP.NET Core no Azure.
- ASP.NET: criar um aplicativo Web do ASP.NET Framework no Azure.
- JavaScript: criar um aplicativo Web Node.js no Serviço de Aplicativo do Azure.
- Java: criar um aplicativo Java no Serviço de Aplicativo do Azure.
- Python: criar um aplicativo Python no Serviço de Aplicativo do Azure.
1. Criar um pipeline para a sua pilha
Os exemplos de código nesta seção pressupõem que você está implantando um aplicativo Web ASP.NET. Você pode adaptar as instruções para outras estruturas.
Saiba mais sobre o suporte ao ecossistema do Azure Pipelines.
Entre na organização do Azure DevOps e acesse seu projeto.
Vá para Pipelines e selecione Novo Pipeline.
Quando solicitado, selecione o local do código-fonte: Azure Repos Git ou GitHub.
Você pode ser redirecionado para o GitHub para então entrar. Nesse caso, insira suas credenciais do GitHub.
Quando a lista de repositórios for exibida, selecione o repositório.
Você poderá ser redirecionado ao GitHub para instalar o aplicativo do Azure Pipelines. Se sim, selecione Aprovar e instalar.
Na guia Configurar, selecione ASP.NET Core.
Quando o seu novo pipeline aparecer, observe o YAML para ver o que ele faz. Ao final, selecione Salvar e executar.
2. Adicionar a tarefa de implantação
Selecione o final do arquivo YAML e, em seguida, selecione Mostrar assistente.
Use o Assistente de Tarefa para adicionar a tarefa do Aplicativo Web do Azure.
Como alternativa, você pode adicionar a tarefa de implantação
AzureRmWebAppDeployment
do Serviço de Aplicativo do Azure.Escolha sua assinatura do Azure. Selecione Autorizar para autorizar sua conexão. A autorização criará a conexão de serviço necessária.
Selecione o Tipo de aplicativo, o Nome do aplicativo e a Pilha de runtime com base no aplicativo do Serviço de Aplicativo. O YAML completo será semelhante ao código a seguir.
variables: buildConfiguration: 'Release' steps: - task: DotNetCoreCLI@2 inputs: command: 'publish' publishWebProjects: true - task: AzureWebApp@1 inputs: azureSubscription: '<service-connection-name>' appType: 'webAppLinux' appName: '<app-name>' package: '$(System.DefaultWorkingDirectory)/**/*.zip'
-
azureSubscription
: nome da conexão de serviço autorizada à sua assinatura do Azure. -
appName
: nome do aplicativo existente. -
package
: caminho do arquivo para o pacote ou uma pasta contendo o conteúdo do Serviço de Aplicativo. Os caracteres curinga têm suporte.
-
Exemplo: implantar um aplicativo .NET
Para implantar um pacote Web .zip (por exemplo, de um aplicativo Web ASP.NET) em um aplicativo Web do Azure, use o snippet a seguir para implantar o build em um aplicativo.
variables:
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: 'webAppLinux'
appName: '<app-name>'
package: '$(System.DefaultWorkingDirectory)/**/*.zip'
-
azureSubscription
: sua assinatura do Azure. -
appType
: seu tipo de aplicativo Web. -
appName
: o nome do serviço de aplicativo existente. -
package
: caminho do arquivo para o pacote ou uma pasta contendo o conteúdo do Serviço de Aplicativo. Os caracteres curinga têm suporte.
Exemplo: Implantar em um aplicativo virtual
Por padrão, sua implantação ocorre com o aplicativo raiz no aplicativo Web do Azure. Você pode implantar em uma aplicação virtual específica usando a propriedade VirtualApplication
da tarefa de implantação AzureRmWebAppDeployment
do Serviço de Aplicativo do Azure.
- task: AzureRmWebAppDeployment@4
inputs:
VirtualApplication: '<name of virtual application>'
-
VirtualApplication
: o nome do aplicativo virtual configurado no portal do Azure. Confira Configurar um aplicativo do Serviço de Aplicativo no portal do Azure para obter mais detalhes.
Exemplo: implantar em um slot
O exemplo a seguir mostra como implantar em um slot de preparo e, em seguida, alternar para um slot de produção:
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: webAppLinux
appName: '<app-name>'
deployToSlotOrASE: true
resourceGroupName: '<name of resource group>'
slotName: staging
package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- task: AzureAppServiceManage@0
inputs:
azureSubscription: '<service-connection-name>'
appType: webAppLinux
WebAppName: '<app-name>'
ResourceGroupName: '<name of resource group>'
SourceSlot: staging
SwapWithProduction: true
-
azureSubscription
: sua assinatura do Azure. -
appType
: (Opcional) UsewebAppLinux
para implantar em um aplicativo Web no Linux. -
appName
: o nome do serviço de aplicativo existente. -
deployToSlotOrASE*
: Booliano. Implantar em um slot de implantação existente ou em um Ambiente de Serviço de Aplicativos do Azure. -
resourceGroupName
: nome do grupo de recursos. Necessário sedeployToSlotOrASE
for true. -
slotName
: nome do slot, que usaproduction
como padrão . Necessário sedeployToSlotOrASE
for true. -
package
: caminho do arquivo para o pacote ou uma pasta contendo o conteúdo do Serviço de Aplicativo. Os caracteres curinga têm suporte. -
SourceSlot
: slot enviado para a produção quandoSwapWithProduction
for true. -
SwapWithProduction
: Booliano. Troque o tráfego do slot de origem pelo de produção.
Exemplo: implantação em vários aplicativos Web
No seu arquivo YAML, você pode usar jobs para configurar um pipeline de desdobramentos. Usando tarefas, você pode controlar a ordem de implantação em várias aplicações web.
jobs:
- job: buildandtest
pool:
vmImage: ubuntu-latest
steps:
# publish an artifact called drop
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: drop
# deploy to Azure Web App staging
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: <app type>
appName: '<staging-app-name>'
deployToSlotOrASE: true
resourceGroupName: <group-name>
slotName: 'staging'
package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- job: deploy
dependsOn: buildandtest
condition: succeeded()
pool:
vmImage: ubuntu-latest
steps:
# download the artifact drop from the previous job
- task: DownloadPipelineArtifact@2
inputs:
source: 'current'
artifact: 'drop'
path: '$(Pipeline.Workspace)'
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: <app type>
appName: '<production-app-name>'
resourceGroupName: <group-name>
package: '$(Pipeline.Workspace)/**/*.zip'
Exemplo: implementação condicional
Para implantar condicionalmente no YAML, você pode usar uma das seguintes técnicas:
- Isole as etapas de implantação em um trabalho separado e adicione uma condição a esse trabalho.
- Adicione uma condição à etapa.
O exemplo a seguir mostra como usar condições de etapa para implantar somente builds originados do branch principal:
- task: AzureWebApp@1
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
inputs:
azureSubscription: '<service-connection-name>'
appName: '<app-name>'
Para saber mais sobre condições, confira Especificar condições.
Exemplo: Implantar usando o Web Deploy
A tarefa de implantação do Serviço de Aplicativo do Azure AzureRmWebAppDeployment
pode ser implantada no Serviço de Aplicativo por meio da Implantação da Web.
trigger:
- main
pool:
vmImage: windows-latest
variables:
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
arguments: '--configuration $(buildConfiguration)'
zipAfterPublish: true
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '<service-connection-name>'
appType: 'webApp'
WebAppName: '<app-name>'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
enableCustomDeployment: true
DeploymentType: 'webDeploy'
Perguntas frequentes
Qual é a diferença entre as tarefas AzureWebApp
e AzureRmWebAppDeployment
?
A tarefa Azure Web App é a maneira mais simples de implantar em um aplicativo web do Azure. Por padrão, sua implantação ocorre com o aplicativo raiz no aplicativo Web do Azure.
A tarefa Implantação do Serviço de Aplicativo do Azure (AzureRmWebAppDeployment
) pode lidar com cenários mais personalizados, como:
- Implante com a Implantação da Web se você costuma usar o processo de implantação do Serviços de Informações da Internet (IIS).
- Implantar em aplicativos virtuais.
- Implante em outros tipos de aplicativo, como aplicativos de contêiner, aplicativos de funções, WebJobs ou API e aplicativos móveis.
Observação
A tarefa Transformação de Arquivo separada também dá suporte a transformações de arquivo e substituição de variável para uso no Azure Pipelines. Você pode usar a tarefa Transformação de Arquivo para aplicar transformações de arquivo e substituições de variáveis em qualquer arquivo de configuração e parâmetros.
Por que recebo a mensagem "Pacote do Serviço de Aplicativo inválido ou caminho de pasta fornecido"?
Em pipelines em YAML, dependendo do seu pipeline, pode haver uma incompatibilidade entre o local em que o pacote web compilado é salvo e o local em que a tarefa de implantação procura por ele. Por exemplo, a tarefa AzureWebApp
seleciona o pacote web para implantação. A tarefa AzureWebApp
talvez procure em $(System.DefaultWorkingDirectory)/**/*.zip
. Se o pacote da web estiver depositado em outro lugar, modifique o valor de package
.
Por que recebo a mensagem "Publicar usando opções de webdeploy só têm suporte ao usar o agente do Windows"?
Esse erro ocorre na tarefa AzureRmWebAppDeployment
quando você configura a tarefa a ser implantada usando a Implantação da Web, mas o seu agente não estiver executando o Windows. Verifique se o YAML inclui algo semelhante ao seguinte código:
pool:
vmImage: windows-latest
Por que o Web Deploy não funciona quando desabilito a autenticação básica?
Para obter informações de solução de problemas sobre como habilitar a autenticação do Microsoft Entra ID para trabalhar com a tarefa AzureRmWebAppDeployment
, confira Não consigo usar a Implantação da Web no meu Serviço de Aplicativo do Azure usando a autenticação do Microsoft Entra ID do meu agente do Windows.
Conteúdo relacionado
- Personalize o seu pipeline do Azure DevOps.