Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Pode usar o GitHub Actions para construir um fluxo de trabalho automatizado de desenvolvimento de software. Pode usar a ação Azure Web Deploy para automatizar o seu fluxo de trabalho e implementar contentores personalizados no Azure App Service.
Um fluxo de trabalho é definido por um arquivo YAML (.yml) no /.github/workflows/ caminho no repositório. Esta definição contém as várias etapas e parâmetros que estão no fluxo de trabalho.
Para um fluxo de trabalho de contentor de App Service, o ficheiro tem três secções:
| Section | Tarefas |
|---|---|
| Autenticação | 1. Recupere uma entidade de serviço ou um perfil de publicação. 2. Crie um segredo do GitHub. |
| Compilação | 1. Crie o ambiente. 2. Crie a imagem do contêiner. |
| Implementar | 1. Implante a imagem do contêiner. |
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Uma conta GitHub. Se não tiver 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 de trabalho e um aplicativo do Serviço de Aplicativo do Azure para contêineres. Este exemplo usa o Azure Container Registry. Certifique-se de terminar a implementação completa no Azure App Service para contentores. Ao contrário dos aplicativos Web comuns, os aplicativos Web para contêineres não têm uma página de destino padrão. Publique o contêiner para ter um exemplo de trabalho.
- Complete estas tarefas: Aprenda a criar uma aplicação de Node.js containerizada usando o Docker, envie a imagem do contentor para um registo e depois implemente a imagem no Azure App Service.
Gerar credenciais de implantação
Recomendamos que se autentique com o Azure App Services para as Ações do GitHub utilizando o OpenID Connect. Também pode autenticar-se com um parceiro de serviço ou com um perfil publicado.
Para autenticar com o Azure, guarde a credencial do seu perfil de publicação ou o principal do serviço como um segredo no GitHub. Acedes ao segredo do teu fluxo de trabalho.
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.
No painel de Visão Geral , selecione Publicar perfil.
Nota
Desde Outubro de 2020, os utilizadores devem configurar a definição da aplicação nas aplicações web Linux
WEBSITE_WEBDEPLOY_USE_SCMantes detruedescarregarem o ficheiro. Para aprender a configurar as definições comuns de aplicações web, vá a Configurar uma aplicação de Serviços de Aplicações no portal Azure.Salve o arquivo baixado. Utiliza-se o conteúdo do ficheiro para criar um segredo no GitHub.
Configurar o segredo do GitHub para autenticação
No GitHub, navegue pelo repositório. Selecione Configurações>> do repositório.
Para usar credenciais no nível do aplicativo, 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.
Quando configurares o teu fluxo de trabalho no GitHub, usa o AZURE_WEBAPP_PUBLISH_PROFILE segredo na ação de implementação do Azure Web App. Por exemplo:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
Configurar segredos do GitHub para seu registro
Defina segredos para usar com a ação Login do Docker. O exemplo neste artigo utiliza o Azure Container Registry para o registo de contentores.
Vá para seu 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 seu 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 do contentor
O exemplo seguinte mostra parte do fluxo de trabalho que constrói uma imagem Node.js Docker. Use Docker Login para iniciar sessão num repositório privado de contentores. 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 }}
Também pode usar o login do Docker para iniciar sessão em vários registos de contentores 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 parte do fluxo de trabalho que cria uma imagem do Windows Docker. Utilize o Docker Login para iniciar sessão num registo privado de contentores. 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 }}
Também pode usar o login do Docker para iniciar sessão em vários registos de contentores 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 sua imagem em um contêiner personalizado no Serviço de Aplicativo, use a azure/webapps-deploy@v2 ação. Esta ação tem sete parâmetros:
| Parâmetro | Explicação |
|---|---|
app-name |
(Obrigatório) Nome da aplicação App Service. |
publish-profile |
(Opcional) Usado com aplicações web (Windows e Linux) e containers de aplicações web (Linux). Cenário de múltiplos contentores não suportado. Publique o conteúdo do ficheiro de perfil \*.publishsettings com os segredos do Web Deploy. |
slot-name |
(Opcional) Introduza um slot existente diferente do slot de produção. |
package |
(Opcional) Usado apenas com aplicações web: Caminho para pacote ou pasta.
\*.zip, \*.war, \*.jar, ou uma pasta para implementar. |
images |
(Obrigatório) Usado apenas com contentores de aplicações web: Especifique o nome da imagem do contentor totalmente qualificado. Por exemplo, myregistry.azurecr.io/nginx:latest ou python:3.12.12-alpine/. Para uma aplicação multi-contentor, podem ser fornecidos vários nomes de imagem de contentor (separados por várias linhas). |
configuration-file |
(Opcional) Usado apenas com contentores de aplicações web: caminho do ficheiro Docker Compose. Deve ser um caminho totalmente qualificado ou relativo ao diretório de trabalho padrão. Necessário para aplicativos de vários contêineres. |
startup-command |
(Opcional) Introduza o comando de arranque. 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
Pode encontrar o nosso conjunto de ações agrupado em diferentes repositórios no GitHub. Cada repositório contém documentação e exemplos para te ajudar a usar o GitHub para CI/CD e a implementar as tuas aplicações no Azure.