Usar o Azure Pipelines para criar e enviar imagens de contêiner para registros
Serviços de DevOps do Azure | Azure DevOps Server 2022 | Azure DevOps Server 2020
Este artigo orienta você pela instalação e configuração no Azure Pipelines para criar e enviar por push uma imagem do Docker para um Registro de Contêiner do Azure e um Hub do Docker. Além disso, detalha o System.AccessToken
uso do para autenticação segura dentro do seu pipeline.
Este artigo orienta você pela instalação e configuração para usar o Azure Pipelines para criar e enviar por push uma imagem do Docker para um Hub do Docker. Além disso, detalha o System.AccessToken
uso do para autenticação segura dentro do seu pipeline.
Aprenderá como criar um pipeline YAML para construir e fazer o push de uma imagem do Docker para um registro de contêiner, usando a tarefa Docker@2.
Pré-requisitos
Produto | Requisitos |
---|---|
Azure DevOps | - Um projeto Azure DevOps . - Permissões: - Para conceder acesso a todos os pipelines no projeto: Você deve ser membro do grupo Administradores de Projeto. - Para criar conexões de serviço: Deve ter a função de Administrador ou Criador para conexões de serviço. - Se você estiver usando um agente auto-hospedado, verifique se o Docker está instalado e se o mecanismo do Docker está sendo executado com privilégios elevados. Os agentes hospedados pela Microsoft têm o Docker pré-instalado. |
GitHub | - Uma conta GitHub. - Um repositório GitHub com um Dockerfile. Use o repositório de exemplo se você não tiver seu próprio projeto. - Uma ligação de serviço do GitHub para autorizar o Azure Pipelines. |
Azul | - Uma assinatura do Azure. - Um Azure Container Registry. |
Hub do Docker | - Uma conta Docker Hub. - Um Docker Hub repositório de imagens. |
- Requisitos do projeto: Um projeto do Azure DevOps.
-
Permissões:
- Seja membro do grupo Administradores de Projeto.
- A função de Administrador para conexões de serviço no projeto do Azure DevOps
.
-
Subscrições:
- Uma conta do GitHub. Se você não tiver um, você pode criar um gratuitamente em GitHub.
- Conta do Docker Hub: você precisa de uma conta do Docker Hub. Se você não tiver um, poderá criar um gratuitamente em Docker Hub.
- Repository: Um repositório do GitHub com um Dockerfile. Se você não tiver um, poderá usar o repositório de exemplo
- Conexão de serviço: uma conexão de serviço do GitHub Enterprise Server. Se você não tiver um, poderá criar um em suas configurações de projeto do Azure DevOps. Para obter mais informações sobre como criar uma ligação de serviço, consulte Ligações de serviço.
- Registro de contêiner: A (Docker Hub registro de contêiner
- Requisitos de software: Docker deve estar instalado e o mecanismo do Docker é executado com privilégios elevados em seu agente auto-hospedado.
Criar uma conexão de serviço do Docker
Antes de enviar imagens de contêiner para um registro, você precisa criar uma conexão de serviço no Azure DevOps. Essa conexão de serviço armazena as credenciais necessárias para autenticar com segurança com o registro de contêiner. Vá para conexões de serviço nas configurações do seu projeto do Azure DevOps para criar uma nova conexão de serviço de Registro do Docker .
Escolha a opção Docker Hub em Conexão do serviço de registro do Docker e forneça seu nome de usuário e senha para criar uma conexão de serviço do Docker.
Criar um pipeline YAML para criar e enviar por push uma imagem do Docker
A tarefa Docker@2 foi projetada para simplificar o processo de criação, envio por push e gerenciamento de imagens do Docker em seus Pipelines do Azure. Esta tarefa suporta uma ampla gama de comandos do Docker, incluindo build, push, login, logout, start, stop e run.
Use as etapas a seguir para criar um pipeline YAML que usa a tarefa Docker@2 para criar e enviar por push a imagem.
Vá para seu projeto de DevOps do Azure e selecione Pipelines no menu à esquerda.
Selecione Novo fluxo de trabalho.
Selecione o local do repositório de origem.
Selecione do GitHub como o local do código-fonte e selecione o repositório.
- Se você for redirecionado para o GitHub para entrar, insira suas credenciais do GitHub.
- Se você for redirecionado para o GitHub para instalar o aplicativo Azure Pipelines, selecione Aprovar e instalar.
Selecione o modelo de pipeline inicial para criar uma configuração básica de pipeline.
Substitua o conteúdo do azure-pipelines.yml pelo seguinte código:
trigger: - main pool: vmImage: 'ubuntu-latest' variables: repositoryName: '<target repository name>' steps: - task: Docker@2 inputs: containerRegistry: '<docker connection>' repository: $(repositoryName) command: 'buildAndPush' Dockerfile: '**/Dockerfile'
Edite o arquivo YAML do pipeline da seguinte maneira:
Com base no fato de você estar implantando um aplicativo Linux ou Windows, certifique-se de definir
vmImage
respectivamente como umubuntu-latest
ouwindows-latest
.Se você estiver usando um agente auto-hospedado, defina
vmImage
como o nome do pool que contém o agente auto-hospedado com capacidade do Docker. Você pode adicionar a propriedade para garantir que um agente com odemands:
Docker instalado seja selecionado. Por exemplo:pool: name: <your agent pool> demands: docker
Substitua
<docker connection>
pelo nome da conexão de serviço do Docker criada anteriormente.Substitua
<target repository name>
pelo nome do repositório no registro do contêiner onde você deseja enviar a imagem por push. Por exemplo,<your-docker-hub-username>/<repository-name>
.
Quando terminar, selecione Salvar e executar.
Ao salvar o arquivo azure-pipelines.yml no repositório, você será solicitado a adicionar uma mensagem de confirmação. Introduza uma mensagem e, em seguida, selecione Guardar e executar.
Ao usar agentes auto-hospedados, certifique-se de que o Docker esteja instalado no host do agente e que o mecanismo/daemon do Docker esteja sendo executado com privilégios elevados.
Para criar a imagem, o Docker deve ser instalado no host do agente e o mecanismo/daemon do Docker deve ser executado com privilégios elevados.
Use as etapas a seguir para criar seu pipeline usando o editor de pipeline YAML.
Vá para a sua coleção e crie um projeto.
No seu projeto, selecione Pipelines.
Selecione Criar Pipeline.
Selecione GitHub Enterprise Server como o local para seu código-fonte.
Se ainda não o fez, autorize o Azure Pipelines a se conectar à sua conta do GitHub Enterprise Server.
- Selecione Conectar ao GitHub Enterprise Server.
- Introduza os detalhes da sua conta e, em seguida, selecione Verificar e guardar.
Selecione o seu repositório. Se você for redirecionado para o GitHub para instalar o aplicativo Azure Pipelines, selecione Aprovar e instalar.
Para configurar seu pipeline, selecione o modelo de imagem Criar um Docker.
No editor de pipeline YAML, substitua o conteúdo do arquivo YAML com o seguinte código:
trigger: - main pool: name: default demands: docker variables: repositoryName: '<target repository name>' steps: - task: Docker@2 inputs: containerRegistry: '<docker connection>' repository: $(repositoryName) command: 'buildAndPush' Dockerfile: '**/Dockerfile'
Edite o arquivo YAML do pipeline da seguinte maneira:
- Substitua o nome do pool pelo nome do pool que contém seu agente auto-hospedado pelo recurso Docker.
- Substitua
<target repository name>
pelo nome do repositório no registro do contêiner onde você deseja enviar a imagem por push. Por exemplo,<your-docker-hub-username>/<repository-name>
. - Substitua
<docker connection>
pelo nome da conexão de serviço do Docker criada anteriormente.
Selecione Guardar e executar.
Na página Salvar e executar, selecione Salvar e executar novamente.
Você pode observar a execução do pipeline e exibir os logs para ver a imagem do Docker sendo criada e enviada por push para o registro do contêiner.
Usando System.AccessToken para autenticação em Docker@2 tarefa
Você pode autenticar com um registro de contêiner usando o System.AccessToken
fornecido pelo Azure DevOps. Esse token permite acesso seguro a recursos dentro do seu pipeline sem expor credenciais confidenciais.
O exemplo de pipeline YAML a seguir, a tarefa Docker@2 é usada para entrar no registro do contêiner e enviar por push a imagem do Docker. O System.AccessToken
é definido como uma variável de ambiente para autenticar os comandos do Docker.
Substitua <docker connection>
pelo nome de conexão do serviço de registro do Docker.
Substitua <your repository>
pelo nome do repositório do Docker.
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
variables:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
steps:
- task: Docker@2
inputs:
command: login
containerRegistry: '<docker connection>'
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
- task: Docker@2
inputs:
command: buildAndPush
repository: '<your repository>'
dockerfile: '**/Dockerfile'
tags: |
$(Build.BuildId)
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)