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.
Você pode usar o GitHub Actions para criar um fluxo de trabalho de desenvolvimento de software automatizado. Você pode usar a ação de Implantação da Web do Azure para automatizar seu fluxo de trabalho e implantar contêineres personalizados no Serviço de Aplicativo do Azure.
Um fluxo de trabalho é definido por um arquivo YAML (.yml) no caminho /.github/workflows/ no repositório. Essa definição contém as várias etapas e os parâmetros que estão no fluxo de trabalho.
Para um fluxo de trabalho de contêiner do Serviço de Aplicativo, o arquivo tem três seções:
| Seção | Tarefas |
|---|---|
| Autenticação | 1. Recuperar uma entidade de serviço ou um perfil de publicação. 2. Criar um segredo do GitHub. |
| Compilar | 1. Criar o ambiente. 2. Compilar a imagem de contêiner. |
| Implantar | 1. Implantar a imagem de contêiner. |
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Uma conta do GitHub. Caso ainda não tenha uma, inscreva-se gratuitamente. Você precisa ter código em um repositório GitHub para implantar no Serviço de Aplicativo do Azure.
- Um registro de contêiner em funcionamento e um aplicativo do Serviço de Aplicativo do Azure para contêineres. Este exemplo usa o Registro de Contêiner do Azure. Conclua a implantação completa no Serviço de Aplicativo do Azure para contêineres. Ao contrário dos aplicativos Web regulares, os aplicativos Web para contêineres não têm uma página de aterrissagem padrão. Publique o contêiner para ter um exemplo em funcionamento.
- Conclua estas tarefas: saiba como criar um aplicativo de Node.js em contêineres usando o Docker, efetuar push da imagem de contêiner para um registro e, em seguida, implantar a imagem no Serviço de Aplicativo do Azure.
Gerar as credenciais de implantação
Recomendamos que você se autentique com os Serviços de Aplicativo do Azure para GitHub Actions usando o OpenID Connect. Você também pode se autenticar com uma entidade de serviço ou um perfil de publicação.
Para autenticar-se no Azure, salve sua credencial de perfil de publicação ou principal de serviço como um segredo do GitHub. Você acessa o segredo no fluxo de trabalho.
Um perfil de publicação é uma credencial de nível de aplicativo. Configure o perfil de publicação como segredo do GitHub.
Acesse o Serviço de Aplicativo no portal do Azure.
No painel Visão geral , selecione Obter perfil Publicar.
Observação
Desde outubro de 2020, os usuários precisam definir a configuração do aplicativo para aplicativos Web do Linux
WEBSITE_WEBDEPLOY_USE_SCMcomotrueantes de baixarem o arquivo. Para saber como definir as configurações comuns do aplicativo Web, acesse Configurar um aplicativo do Serviço de Aplicativo no portal do Azure.Salve o arquivo baixado. Use o conteúdo do arquivo para criar um segredo do GitHub.
Configurar o segredo do GitHub para autenticação
Em GitHub, procure seu repositório. Selecione Configurações>Segurança>Segredos e variáveis>Ações>Novo segredo de repositório.
Para usar as credenciais de nível de aplicativo, cole o conteúdo do arquivo de perfil de publicação baixado no campo de valor do segredo. Nomeie o segredo como AZURE_WEBAPP_PUBLISH_PROFILE.
Ao configurar o fluxo de trabalho do GitHub, use o segredo AZURE_WEBAPP_PUBLISH_PROFILE na ação de implantação do Aplicativo Web do Azure. Por exemplo:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
Configurar segredos do GitHub para o registro
Defina os segredos a serem usados com a ação de logon do Docker. O exemplo neste artigo usa o Registro de Contêiner do Azure para o registro de contêiner.
Vá para o contêiner no portal do Azure ou no Docker e copie o nome de usuário e a senha. Você pode encontrar o nome de usuário e a senha do Registro de Contêiner do Azure no portal do Azure em Configurações>Chaves de acesso para o registro.
Defina um novo segredo para o nome de usuário do registro chamado
REGISTRY_USERNAME.Defina um novo segredo para a senha do registro chamada
REGISTRY_PASSWORD.
Criar a imagem de contêiner
O exemplo a seguir mostra parte do fluxo de trabalho que cria uma imagem do Docker Node.js. Use o Logon do Docker para entrar em um registro de contêiner privado. Este exemplo usa o Registro de Contêiner do Azure, mas a mesma ação funciona para outros registros.
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Você também pode usar a entrada do Docker para entrar em vários registros de contêiner ao mesmo tempo. Este exemplo inclui dois novos segredos do GitHub para autenticação com docker.io. O exemplo pressupõe que há um Dockerfile no nível raiz do registro.
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- uses: azure/docker-login@v1
with:
login-server: index.docker.io
username: ${{ secrets.DOCKERIO_USERNAME }}
password: ${{ secrets.DOCKERIO_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
O exemplo a seguir mostra uma parte do fluxo de trabalho que cria uma imagem do Docker para Windows. Use o Logon do Docker para entrar em um registro de contêiner privado. Este exemplo usa o Registro de Contêiner do Azure, mas a mesma ação funciona para outros registros.
name: Windows Container Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Você também pode usar a entrada do Docker para entrar em vários registros de contêiner ao mesmo tempo. Este exemplo inclui dois novos segredos do GitHub para autenticação com docker.io. O exemplo pressupõe que há um Dockerfile no nível raiz do registro.
name: Windows Container Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- uses: azure/docker-login@v1
with:
login-server: index.docker.io
username: ${{ secrets.DOCKERIO_USERNAME }}
password: ${{ secrets.DOCKERIO_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Implantar em um contêiner do Serviço de Aplicativo
Para implantar a imagem em um contêiner personalizado no Serviço de Aplicativo, use a ação azure/webapps-deploy@v2. Essa ação tem sete parâmetros:
| Parâmetro | Explicação |
|---|---|
app-name |
(Obrigatório) Nome do aplicativo do Serviço de Aplicativo. |
publish-profile |
(Opcional) Usado com aplicativos Web (Windows e Linux) e contêineres de aplicativos Web (Linux). O suporte para cenário de múltiplos contêineres não está disponível. Publicar os conteúdos do arquivo de perfil \*.publishsettings com segredos do Web Deploy. |
slot-name |
(Opcional) Insira um slot existente que não seja o slot de produção. |
package |
(Opcional) Usado somente com aplicativos Web: caminho para pacote ou pasta.
\*.zip, \*.war, \*.jar ou uma pasta para implantação. |
images |
(Obrigatório) Usado somente com contêineres de aplicativos web: especifique o nome totalmente qualificado da imagem do contêiner. Por exemplo, myregistry.azurecr.io/nginx:latest ou python:3.12.12-alpine/. Para um aplicativo de vários contêineres, vários nomes de imagem de contêiner podem ser fornecidos (separados por várias linhas). |
configuration-file |
(Opcional) Usado somente com contêineres de aplicativo Web: caminho do arquivo Docker Compose. Deve ser um caminho totalmente qualificado ou relativo ao diretório de trabalho padrão. Obrigatório para aplicativos de vários contêineres. |
startup-command |
(Opcional) Insira o comando de inicialização. Por exemplo: dotnet run ou dotnet filename.dll. |
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'myapp'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'
name: Windows_Container_Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'myapp'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'
Conteúdo relacionado
Você pode encontrar nosso conjunto de ações agrupadas em repositórios diferentes no GitHub. Cada repositório contém documentação e exemplos para ajudá-lo a usar o GitHub para CI/CD e implantar seus aplicativos no Azure.