Partilhar via


Usar o Azure Pipelines para criar e enviar imagens de contêiner para registros

Serviços de DevOps do Azure

Este artigo orienta você pela criação de um pipeline para criar e enviar por push uma imagem do Docker para um Registro de Contêiner do Azure ou Hub do Docker.

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.
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.
Hub do Docker - Uma conta Docker Hub.
- Um Docker Hub repositório de imagens.

Criar uma conexão de serviço de registro 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. Para obter mais informações, consulte conexões de serviço do Registro do Docker.

  1. Em seu projeto do Azure DevOps, selecione Configurações do projeto>Conexões de serviço.

    Captura de tela da seleção de configurações do projeto.

  2. Selecione Nova conexão de serviço e Registro do Docker.

    Captura de tela da seleção do Registro do Docker.

  3. Selecione do Docker Hub e insira as seguintes informações:

    Campo Descrição
    ID do Docker Insira seu ID do Docker.
    Senha do Docker Digite sua senha do Docker.
    Nome da conexão de serviço Insira um nome para a conexão de serviço.
    Conceder permissão de acesso a todos os pipelines Selecione esta opção para conceder acesso a todos os pipelines.

    Captura de tela da caixa de diálogo de conexão do serviço Docker Hub.

  4. Selecione Verificar e salvar.

Criar um pipeline para criar e enviar por push uma imagem do Docker

A tarefa Docker@2 é usada para criar e enviar a imagem para o registro do contêiner. 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 os passos seguintes para criar um pipeline YAML que utiliza a tarefa Docker@2 para construir e fazer push da imagem.

  1. No seu projeto do Azure DevOps, selecione Pipelines e Nova pipeline.

  2. 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.
  3. Selecione o seu repositório.

  4. Selecione o modelo de pipeline inicial para criar uma configuração básica de pipeline.

  5. 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 registry service connection>'
        repository: $(repositoryName)
        command: 'buildAndPush'
        Dockerfile: '**/Dockerfile'
    
    
  6. Edite o arquivo YAML do pipeline da seguinte maneira:

    • Substitua <target repository name> pelo nome do repositório no registro do contêiner onde você deseja enviar a imagem por push.
    • Substitua <docker registry service connection> pelo nome da conexão do serviço de registro do Docker criada anteriormente.
  7. Quando terminar, selecione Guardar e executar>Guardar e executar.

  8. Selecione trabalho para ver os logs e verificar se o pipeline foi executado com êxito.

  1. Vá para seu projeto de DevOps do Azure e selecione Pipelines no menu à esquerda.

  2. Selecione Novo fluxo de trabalho.

  3. 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.
  4. Selecione o modelo Docker - Criar e enviar por push uma imagem para o do Registro de Contêiner do Azure.

  5. Selecione sua assinatura do Azure e Continue.

  6. Selecione seu Registro de contêiner e, em seguida, selecione Validar e configurar.

    Exemplo de pipeline YAML:

    # Docker
    # Build and push an image to Azure Container Registry
    # https://docs.microsoft.com/azure/devops/pipelines/languages/docker
    
    trigger:
    - main
    
    resources:
    - repo: self
    
    variables:
      # Container registry service connection established during pipeline creation
      dockerRegistryServiceConnection: '7f9dc28e-5551-43ee-891f-33bf61a995de'
      imageRepository: 'usernamepipelinesjavascriptdocker'
      containerRegistry: 'repoistoryname.azurecr.io'
      dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile'
      tag: '$(Build.BuildId)'
    
      # Agent VM image name
      vmImageName: 'ubuntu-latest'
    
    stages:
    - stage: Build
      displayName: Build and push stage
      jobs:
      - job: Build
        displayName: Build
        pool:
          vmImage: $(vmImageName)
        steps:
        - task: Docker@2
          displayName: Build and push an image to container registry
          inputs:
            command: buildAndPush
            repository: $(imageRepository)
            dockerfile: $(dockerfilePath)
            containerRegistry: $(dockerRegistryServiceConnection)
            tags: |
              $(tag)
    
    
  7. Selecione Salvar e executar e Salvar e executar novamente.

  8. Selecione a Tarefa para consultar os logs e verificar se o pipeline foi executado com êxito.

O modelo do Docker cria a conexão de serviço com seu Registro de Contêiner do Azure e usa a tarefa Docker@2 para criar e enviar a imagem do Docker para o Registro.

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.

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.