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.
Em seu projeto do Azure DevOps, selecione Configurações do projeto>Conexões de serviço.
Selecione Nova conexão de serviço e Registro do Docker.
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. Selecione Verificar e salvar.
Criar um pipeline para criar e enviar por push uma imagem do Docker
- YAML
- Clássico
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.
No seu projeto do Azure DevOps, selecione Pipelines e Nova pipeline.
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 seu repositório.
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 registry service connection>' repository: $(repositoryName) command: 'buildAndPush' Dockerfile: '**/Dockerfile'
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.
- Substitua
Quando terminar, selecione Guardar e executar>Guardar e executar.
Selecione trabalho para ver os logs e verificar se o pipeline foi executado com êxito.
- YAML
- Clássico
Vá para seu projeto de DevOps do Azure e selecione Pipelines no menu à esquerda.
Selecione Novo fluxo de trabalho.
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 Docker - Criar e enviar por push uma imagem para o do Registro de Contêiner do Azure.
Selecione sua assinatura do Azure e Continue.
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)
Selecione Salvar e executar e Salvar e executar novamente.
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.