Use as Ações do GitHub para automatizar seu fluxo de trabalho e implantar no Serviço de Aplicativo do Azure a partir do GitHub.
Pré-requisitos
Configurar a implantação do GitHub Actions ao criar um aplicativo
A implantação do GitHub Actions é integrada ao processo padrão Create Web App. Defina Implantação contínua como Habilitar na guia Implantação e configure a organização, o repositório e a ramificação escolhidos.
Quando você habilita a implantação contínua, o processo Criar Aplicativo Web seleciona automaticamente o método de autenticação com base na seleção de autenticação básica e configura seu aplicativo e seu repositório GitHub de acordo:
Configurar a implantação do GitHub Actions a partir do Centro de Implantação
Para um aplicativo existente, você pode começar rapidamente com as Ações do GitHub usando o Centro de Implantação no Serviço de Aplicativo. Este método chave-na-mão gera um ficheiro de fluxo de trabalho do GitHub Actions com base na vossa pilha de aplicações e confirma-o no vosso repositório GitHub.
Usando o Centro de Implantação, você também pode configurar facilmente a autenticação OpenID Connect mais segura com uma identidade atribuída pelo usuário. Para obter mais informações, consulte a opção de identidade atribuída pelo usuário.
Se sua conta do Azure tiver as permissões necessárias, você poderá criar uma identidade atribuída pelo usuário. Caso contrário, você pode selecionar uma identidade gerenciada atribuída ao usuário existente no menu suspenso Identidade . Você pode trabalhar com o administrador da Azure para criar uma identidade gerida atribuída ao utilizador com a função de Colaborador do Site.
Para obter mais informações, consulte Implantação contínua no Azure App Service.
Configurar manualmente um fluxo de trabalho de Ações do GitHub
Você pode implantar um fluxo de trabalho sem usar a Central de Implantação. Execute estas três etapas:
-
Gere credenciais de implantação.
-
Configure o segredo do GitHub.
-
Adicione o arquivo de fluxo de trabalho ao repositório do GitHub.
Gerar credenciais de implantação
Recomendamos que você use o OpenID Connect para autenticar com o Serviço de Aplicativo do Azure para Ações do GitHub. Esse método de autenticação usa tokens de curta duração. Configurar o OpenID Connect com o GitHub Actions é mais complexo, mas oferece segurança reforçada.
Você também pode se autenticar com uma identidade gerenciada atribuída pelo usuário, uma entidade de serviço ou um perfil de publicação.
O procedimento a seguir descreve as etapas para criar um aplicativo Microsoft Entra, entidade de serviço e credenciais federadas usando instruções CLI do Azure. Para saber como criar um aplicativo, entidade de serviço e credenciais federadas do Microsoft Entra no portal do Azure, consulte Conectar o GitHub e o Azure.
Caso não tenha uma aplicação existente, registe uma nova aplicação Microsoft Entra e um principal de serviço que possa aceder aos recursos. Crie o aplicativo Microsoft Entra.
az ad app create --display-name myApp
Este comando retorna uma saída JSON com um appId
que é o seu client-id
. Salve o valor para usar como o segredo do AZURE_CLIENT_ID
GitHub mais tarde.
Você usa o valor objectId
ao criar credenciais federadas com a API do Graph e faz referência a esse valor como APPLICATION-OBJECT-ID
.
Crie um principal de serviço. Substitua o $appID
pelo appId
da sua saída JSON.
Este comando gera uma saída JSON com um diferente objectId
para usar na próxima etapa. O novo objectId
é o assignee-object-id
.
Copie o appOwnerTenantId
para usar posteriormente como um segredo do GitHub para AZURE_TENANT_ID
.
az ad sp create --id $appId
Crie uma nova atribuição de função por assinatura e objeto. Por padrão, a atribuição de função está vinculada à sua assinatura padrão. Substitua $subscriptionId
pelo ID da sua assinatura, $resourceGroupName
pelo nome do seu grupo de recursos, $webappName
pelo nome do seu aplicativo Web, e $assigneeObjectId
pelo id
gerado. Saiba como gerenciar assinaturas do Azure com a CLI do Azure.
az role assignment create --role contributor --subscription $subscriptionId --assignee-object-id $assigneeObjectId --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Web/sites/$webappName --assignee-principal-type ServicePrincipal
Execute o comando a seguir para criar uma nova credencial de identidade federada para seu aplicativo Microsoft Entra.
Substitua APPLICATION-OBJECT-ID
pelo appId
que foi gerado durante a criação da aplicação para o seu aplicativo Active Directory.
Defina um valor para CREDENTIAL-NAME
guardar para referência posterior.
Defina o subject
arquivo. O GitHub define seu valor dependendo do seu fluxo de trabalho:
- Para tarefas no seu ambiente de Ações do GitHub, use:
repo:< Organization/Repository >:environment:< Name >
- Para trabalhos não vinculados a um ambiente, inclua o caminho de referência para branch/tag com base no caminho utilizado para acionar o fluxo de trabalho:
repo:< Organization/Repository >:ref:< ref path>
. Por exemplo, repo:n-username/ node_express:ref:refs/heads/my-branch
ou repo:n-username/ node_express:ref:refs/tags/my-tag
.
- Para fluxos de trabalho acionados por um evento de solicitação pull, use:
repo:< Organization/Repository >:pull_request
.
az ad app federated-credential create --id <APPLICATION-OBJECT-ID> --parameters credential.json
("credential.json" contains the following content)
{
"name": "<CREDENTIAL-NAME>",
"issuer": "https://token.actions.githubusercontent.com",
"subject": "repo:organization/repository:ref:refs/heads/main",
"description": "Testing",
"audiences": [
"api://AzureADTokenExchange"
]
}
Um perfil de publicação é uma credencial no nível do aplicativo. Configure seu perfil de publicação como um segredo do GitHub.
Vá para Serviço de Aplicativo no portal do Azure.
Na página Visão geral, selecione Descarregar perfil de publicação.
Salve o arquivo baixado. Use o conteúdo do arquivo para criar um segredo do GitHub.
Nota
A partir de outubro de 2020, os aplicativos Web Linux precisam da configuração WEBSITE_WEBDEPLOY_USE_SCM
do aplicativo definida como true
antes de baixar o perfil de publicação.
Você pode criar uma entidade de serviço com o az ad sp create-for-rbac
comando na CLI do Azure. Execute este comando usando o Azure Cloud Shell no portal do Azure ou selecionando Open Cloud Shell.
az ad sp create-for-rbac --name "myApp" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
--json-auth
No exemplo anterior, substitua os espaços reservados pela ID de subscrição, nome do grupo de recursos e nome da aplicação. A saída é um objeto JSON com as credenciais de atribuição de função que fornecem acesso ao seu aplicativo do Serviço de Aplicativo. A saída deve ser semelhante ao trecho JSON a seguir. Copie este objeto JSON para mais tarde.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Importante
Recomendamos que conceda acesso mínimo. O escopo no exemplo anterior é limitado ao aplicativo do Serviço de Aplicativo específico e não a todo o grupo de recursos.
Você precisa fornecer a ID do cliente, a ID do locatário e a ID da assinatura do aplicativo para a Azure/login
ação. Esses valores podem ser fornecidos diretamente no fluxo de trabalho ou podem ser armazenados em segredos do GitHub e referenciados em seu fluxo de trabalho. Salvar os valores como segredos do GitHub é a opção mais segura.
Abra seu repositório GitHub e vá para Configurações>Segredos de segurança>Novo segredo do repositório.
Crie segredos para AZURE_CLIENT_ID
, AZURE_TENANT_ID
e AZURE_SUBSCRIPTION_ID
. Use estes valores do seu aplicativo Ative Directory para seus segredos do GitHub:
Segredo do GitHub |
Aplicativo Ative Directory |
AZURE_CLIENT_ID |
ID da aplicação (cliente) |
AZURE_TENANT_ID |
ID do Diretório (inquilino) |
AZURE_SUBSCRIPTION_ID |
ID de Subscrição |
Selecione Adicionar segredo para salvar cada segredo.
No GitHub, navegue até o repositório. Selecione Configurações>>Novo segredo do repositório.
Para usar as credenciais de nível de aplicativo que você criou na seção anterior, cole o conteúdo do arquivo de perfil de publicação baixado no campo de valor do segredo. Nomeie o segredo AZURE_WEBAPP_PUBLISH_PROFILE
.
Ao configurar o arquivo de fluxo de trabalho do GitHub posteriormente, use a AZURE_WEBAPP_PUBLISH_PROFILE
ação Implantar o Aplicativo Web do Azure . Por exemplo:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
No GitHub, navegue até o repositório. Selecione Configurações>Segurança>Segredos e variáveis>Ações>Novo segredo do repositório.
Para usar as credenciais de nível de usuário que você criou na seção anterior, cole toda a saída JSON do comando CLI do Azure no campo de valor do segredo. Nomeie o segredo AZURE_CREDENTIALS
.
Quando você configurar o arquivo de fluxo de trabalho do GitHub posteriormente, use o segredo para a entrada creds
do Azure/login
. Por exemplo:
- uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
Adicione o arquivo de fluxo de trabalho ao repositório GitHub
Um ficheiro YAML (.yml) no caminho do repositório de GitHub define um fluxo de trabalho. Esta definição contém as várias etapas e parâmetros que compõem o fluxo de trabalho.
No mínimo, o arquivo de fluxo de trabalho tem as seguintes etapas distintas:
- Autentique-se com o Serviço de Aplicativo usando o segredo do GitHub que você criou.
- Crie o aplicativo Web.
- Implante o aplicativo Web.
Para implantar o seu código numa aplicação do Serviço de Aplicações, use a ação azure/webapps-deploy@v3
. A ação requer o nome da sua aplicação web em app-name
e, dependendo da sua pilha de idiomas, o caminho de um *.zip
, *.war
, *.jar
ou pasta para ser implantada em package
. Para obter uma lista completa de possíveis entradas para a azure/webapps-deploy@v3
ação, consulte action.yml.
Os exemplos a seguir mostram a parte do fluxo de trabalho que cria o aplicativo Web, em diferentes idiomas suportados.
Para implementar com o OpenID Connect utilizando a identidade gerida que configurou, use a ação azure/login@v2
com as chaves client-id
, tenant-id
e subscription-id
. Faça referência aos segredos do GitHub que você criou anteriormente.
name: .NET Core
on: [push]
permissions:
id-token: write
contents: read
env:
AZURE_WEBAPP_NAME: my-app # Set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root
DOTNET_VERSION: '6.0.x' # Set this to the dot net version to use
jobs:
build:
runs-on: ubuntu-latest
steps:
# Check out the repo
- uses: actions/checkout@main
- uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
# Setup .NET Core SDK
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
# Run dotnet build and publish
- name: dotnet build and publish
run: |
dotnet restore
dotnet build --configuration Release
dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
# Deploy to Azure Web apps
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
- name: logout
run: |
az logout
Crie e implemente uma aplicação ASP.NET no modelo MVC (model-view-controller) no Azure utilizando um principal de serviço do Azure. O exemplo usa segredos do GitHub para os client-id
valores , tenant-id
e subscription-id
. Você também pode passar esses valores diretamente na ação de autenticação.
name: Deploy ASP.NET MVC App deploy to Azure Web App
on: [push]
permissions:
id-token: write
contents: read
env:
AZURE_WEBAPP_NAME: my-app # Set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root
NUGET_VERSION: '5.3.x' # Set this to the dot net version to use
jobs:
build-and-deploy:
runs-on: windows-latest
steps:
# Check out the repo
- uses: actions/checkout@main
- uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Install Nuget
uses: nuget/setup-nuget@v1
with:
nuget-version: ${{ env.NUGET_VERSION}}
- name: NuGet to restore dependencies as well as project-specific tools that are specified in the project file
run: nuget restore
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
- name: Run MSBuild
run: msbuild .\SampleWebApplication.sln
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/SampleWebApplication/'
# Azure logout
- name: logout
run: |
az logout
Crie e implemente uma aplicação Java Spring Boot no Azure utilizando uma entidade de serviço do Azure. O exemplo usa segredos do GitHub para os client-id
valores , tenant-id
e subscription-id
. Você também pode passar esses valores diretamente na ação de entrada.
name: Java CI with Maven
on: [push]
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Set up JDK 1.8
uses: actions/setup-java@v3
with:
java-version: 1.8
- name: Build with Maven
run: mvn -B package --file pom.xml
working-directory: complete
- name: Azure WebApp
uses: Azure/webapps-deploy@v3
with:
app-name: my-app-name
package: my/target/*.jar
# Azure logout
- name: logout
run: |
az logout
name: Build and deploy WAR app to Azure Web App using OpenID Connect
env:
JAVA_VERSION: '11' # Set this to the Java version to use
DISTRIBUTION: microsoft # Set this to the Java distribution
AZURE_WEBAPP_NAME: sampleapp # Set this to the name of your web app
on: [push]
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v3.0.0
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.DISTRIBUTION }}
cache: 'maven'
- name: Build with Maven
run: mvn clean install
- name: Login to Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: '*.war'
Aqui está um exemplo completo que usa vários trabalhos para compilação e implantação.
name: JavaScript CI
on: [push]
permissions:
id-token: write
contents: read
name: Node.js
env:
AZURE_WEBAPP_NAME: my-app # Set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: 'my-app-path' # Set this to the path to your web app project, defaults to the repository root
NODE_VERSION: '18.x' # Set this to the node version to use
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# Check out the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@main
- uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Setup Node ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: 'npm install, build, and test'
run: |
npm install
npm run build --if-present
npm run test --if-present
working-directory: my-app-path
# Deploy web app by using Azure credentials
- uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
# Azure logout
- name: logout
run: |
az logout
name: Python application
on:
[push]
permissions:
id-token: write
contents: read
env:
AZURE_WEBAPP_NAME: my-app # Set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Deploy web App using GH Action azure/webapps-deploy
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
- name: logout
run: |
az logout
A publish-profile
entrada deve fazer referência ao segredo do AZURE_WEBAPP_PUBLISH_PROFILE
GitHub que você criou anteriormente.
name: .NET Core CI
on: [push]
env:
AZURE_WEBAPP_NAME: my-app-name # Set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root
DOTNET_VERSION: '6.0.x' # Set this to the dot net version to use
jobs:
build:
runs-on: ubuntu-latest
steps:
# Check out the repo
- uses: actions/checkout@main
# Setup .NET Core SDK
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
# Run dotnet build and publish
- name: dotnet build and publish
run: |
dotnet restore
dotnet build --configuration Release
dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
# Deploy to Azure Web apps
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }} # Define secret variable in repository settings as per action documentation
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
Crie e implante um aplicativo MVC (model-view-controller) ASP.NET que usa o NuGet e publish-profile
para autenticação.
name: Deploy ASP.NET MVC App deploy to Azure Web App
on: [push]
env:
AZURE_WEBAPP_NAME: my-app # Set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root
NUGET_VERSION: '5.3.x' # Set this to the dot net version to use
jobs:
build-and-deploy:
runs-on: windows-latest
steps:
- uses: actions/checkout@main
- name: Install Nuget
uses: nuget/setup-nuget@v1
with:
nuget-version: ${{ env.NUGET_VERSION}}
- name: NuGet to restore dependencies as well as project-specific tools that are specified in the project file
run: nuget restore
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
- name: Run MSBuild
run: msbuild .\SampleWebApplication.sln
- name: 'Run Azure webapp deploy action using publish profile credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }} # Define secret variable in repository settings as per action documentation
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/SampleWebApplication/'
Crie e implante um aplicativo Java Spring Boot no Azure usando um perfil de publicação do Azure. A publish-profile
entrada faz referência ao AZURE_WEBAPP_PUBLISH_PROFILE
segredo que você criou anteriormente.
name: Java CI with Maven
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 1.8
uses: actions/setup-java@v3
with:
java-version: 1.8
- name: Build with Maven
run: mvn -B package --file pom.xml
working-directory: my-app-path
- name: Azure WebApp
uses: Azure/webapps-deploy@v3
with:
app-name: my-app-name
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: my/target/*.jar
Para implantar um war
em vez de um jar
, altere o package
valor.
- name: Azure WebApp
uses: Azure/webapps-deploy@v3
with:
app-name: my-app-name
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: my/target/*.war
Crie e implante um aplicativo Tomcat no Azure usando um perfil de publicação do Azure. A publish-profile
entrada faz referência ao AZURE_WEBAPP_PUBLISH_PROFILE
segredo que você criou anteriormente.
name: Build and deploy WAR app to Azure Web App using publish profile
env:
JAVA_VERSION: '11' # Set this to the Java version to use
DISTRIBUTION: microsoft # Set this to the Java distribution
AZURE_WEBAPP_NAME: sampleapp # Set this to the name of your web app
on: [push]
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v3.0.0
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.DISTRIBUTION }}
cache: 'maven'
- name: Build with Maven
run: mvn clean install
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: '*.war'
Aqui está um exemplo completo que usa vários trabalhos para compilação e implantação.
Crie e implante um aplicativo Node.js no Azure usando o perfil de publicação do aplicativo. A publish-profile
entrada faz referência ao AZURE_WEBAPP_PUBLISH_PROFILE
segredo que você criou anteriormente.
# File: .github/workflows/workflow.yml
name: JavaScript CI
on: [push]
env:
AZURE_WEBAPP_NAME: my-app-name # Set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: 'my-app-path' # Set this to the path to your web app project, defaults to the repository root
NODE_VERSION: '18.x' # Set this to the node version to use
jobs:
build-and-deploy:
name: Build and Deploy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: npm install, build, and test
run: |
# Build and test the project, then
# deploy to Azure Web App.
npm install
npm run build --if-present
npm run test --if-present
working-directory: my-app-path
- name: 'Deploy to Azure WebApp'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
Crie e implante um aplicativo Python no Azure usando o perfil de publicação do aplicativo. Observe como a publish-profile
entrada faz referência ao AZURE_WEBAPP_PUBLISH_PROFILE
segredo que você criou anteriormente.
name: Python CI
on:
[push]
env:
AZURE_WEBAPP_NAME: my-web-app # Set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Building web app
uses: azure/appservice-build@v2
- name: Deploy web App using GH Action azure/webapps-deploy
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
Para implantar com a entidade de serviço configurada, use a ação com a azure/login@v2
chave e faça referência ao creds
AZURE_CREDENTIALS
segredo criado anteriormente.
name: .NET Core
on: [push]
env:
AZURE_WEBAPP_NAME: my-app # Set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root
DOTNET_VERSION: '6.0.x' # Set this to the dot net version to use
jobs:
build:
runs-on: ubuntu-latest
steps:
# Check out the repo
- uses: actions/checkout@main
- uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Set up .NET Core SDK
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
# Run dotnet build and publish
- name: dotnet build and publish
run: |
dotnet restore
dotnet build --configuration Release
dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
# Deploy to Azure Web apps
- name: 'Run Azure webapp deploy action using Azure Credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'
- name: logout
run: |
az logout
Crie e implante uma aplicação MVC (model-view-controller) do ASP.NET no Azure usando um principal de serviço do Azure. A creds
entrada faz referência ao AZURE_CREDENTIALS
segredo que você criou anteriormente.
name: Deploy ASP.NET MVC App deploy to Azure Web App
on: [push]
env:
AZURE_WEBAPP_NAME: my-app # Set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root
NUGET_VERSION: '5.3.x' # Set this to the dot net version to use
jobs:
build-and-deploy:
runs-on: windows-latest
steps:
# Check out the repo
- uses: actions/checkout@main
- uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Install Nuget
uses: nuget/setup-nuget@v1
with:
nuget-version: ${{ env.NUGET_VERSION}}
- name: NuGet to restore dependencies as well as project-specific tools that are specified in the project file
run: nuget restore
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
- name: Run MSBuild
run: msbuild .\SampleWebApplication.sln
- name: 'Run Azure webapp deploy action using Azure Credentials'
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/SampleWebApplication/'
# Azure logout
- name: logout
run: |
az logout
Crie e implante uma aplicação Java Spring Boot no Azure usando um principal de serviço do Azure. A creds
entrada faz referência ao AZURE_CREDENTIALS
segredo que você criou anteriormente.
name: Java CI with Maven
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Set up JDK 1.8
uses: actions/setup-java@v3
with:
java-version: 1.8
- name: Build with Maven
run: mvn -B package --file pom.xml
working-directory: complete
- name: Azure WebApp
uses: Azure/webapps-deploy@v3
with:
app-name: my-app-name
package: my/target/*.jar
# Azure logout
- name: logout
run: |
az logout
Crie e implante uma aplicação Tomcat no Azure usando um principal de serviço do Azure. A creds
entrada faz referência ao AZURE_CREDENTIALS
segredo que você criou anteriormente.
name: Build and deploy WAR app to Azure Web App using Service Principal Connect
env:
JAVA_VERSION: '11' # Set this to the Java version to use
DISTRIBUTION: microsoft # Set this to the Java distribution
AZURE_WEBAPP_NAME: sampleapp # Set this to the name of your web app
on: [push]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Java version
uses: actions/setup-java@v3.0.0
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.DISTRIBUTION }}
cache: 'maven'
- name: Build with Maven
run: mvn clean install
- name: Login to Azure
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: '*.war'
Aqui está um exemplo completo que usa vários trabalhos para compilação e implantação.
Crie e implemente uma aplicação Node.js no Azure utilizando um Principal de Serviço do Azure. A creds
entrada faz referência ao AZURE_CREDENTIALS
segredo que você criou anteriormente.
name: JavaScript CI
on: [push]
name: Node.js
env:
AZURE_WEBAPP_NAME: my-app # Set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: 'my-app-path' # Set this to the path to your web app project, defaults to the repository root
NODE_VERSION: '18.x' # Set this to the node version to use
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# Check out the repo
- name: 'Checkout GitHub Action'
uses: actions/checkout@main
- uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Setup Node ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: 'npm install, build, and test'
run: |
npm install
npm run build --if-present
npm run test --if-present
working-directory: my-app-path
# Deploy web app using Azure credentials
- uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
# Azure logout
- name: logout
run: |
az logout
Crie e implemente uma aplicação Python no Azure usando um principal de serviço do Azure. A creds
entrada faz referência ao AZURE_CREDENTIALS
segredo que você criou anteriormente.
name: Python application
on:
[push]
env:
AZURE_WEBAPP_NAME: my-app # Set this to your application's name
AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Deploy web App using GH Action azure/webapps-deploy
uses: azure/webapps-deploy@v3
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
- name: logout
run: |
az logout
Perguntas frequentes
Como faço para implantar um arquivo WAR através do plug-in Maven?
Se você configurou seu projeto Java Tomcat com o plug-in Maven, também poderá implantar no Serviço de Aplicativo do Azure por meio desse plug-in. Se você usar a ação GitHub da CLI do Azure, ela usará suas credenciais do Azure.
- name: Azure CLI script file
uses: azure/cli@v2
with:
inlineScript: |
mvn package azure-webapp:deploy
Para obter mais informações sobre como usar e configurar o plug-in Maven, consulte Wiki do plug-in Maven para o Serviço de Aplicativo do Azure.
Como implantar um arquivo WAR por meio da CLI do Azure?
Se preferir usar a CLI do Azure para implantar no Serviço de Aplicativo, você pode usar a Ação do GitHub para a CLI do Azure.
- name: Azure CLI script
uses: azure/cli@v2
with:
inlineScript: |
az webapp deploy --src-path '${{ github.workspace }}/target/yourpackage.war' --name ${{ env.AZURE_WEBAPP_NAME }} --resource-group ${{ env.RESOURCE_GROUP }} --async true --type war
Para obter mais informações sobre como usar e configurar a ação GitHub para a CLI do Azure, consulte a ação GitHub da CLI do Azure.
Para obter mais informações sobre o az webapp deploy
comando, incluindo como usá-lo e os detalhes do parâmetro, consulte az webapp deploy
a documentação.
Como implantar um arquivo de inicialização?
Use a Ação do GitHub para a CLI do Azure. Por exemplo:
- name: Deploy startup script
uses: azure/cli@v2
with:
inlineScript: |
az webapp deploy --src-path ${{ github.workspace }}/src/main/azure/createPasswordlessDataSource.sh --name ${{ env.AZURE_WEBAPP_NAME }} --resource-group ${{ env.RESOURCE_GROUP }} --type startup --track-status false
Como faço para implantar em um contêiner?
Com a ação Implantação do Azure Web, pode automatizar o seu fluxo de trabalho para implantar contentores personalizados no Serviço de Aplicações utilizando as Ações do GitHub. Para obter mais informações, consulte Implantar em um contêiner.
Como atualizo a configuração do Tomcat após a implantação?
Se quiser atualizar qualquer uma das configurações de seus aplicativos Web após a implantação, você pode usar a ação Configurações do Serviço de Aplicativo .
- uses: azure/appservice-settings@v1
with:
app-name: 'my-app'
slot-name: 'staging' # Optional and needed only if the settings have to be configured on the specific deployment slot
app-settings-json: '[{ "name": "CATALINA_OPTS", "value": "-Dfoo=bar" }]'
connection-strings-json: '${{ secrets.CONNECTION_STRINGS }}'
general-settings-json: '{"alwaysOn": "false", "webSocketsEnabled": "true"}' #'General configuration settings as Key Value pairs'
id: settings
Para obter mais informações sobre como usar e configurar essa ação, consulte o repositório de configurações do Serviço de Aplicativo .
Conteúdos relacionados
Confira as seguintes referências em Ações e fluxos de trabalho do GitHub do Azure: