Usar o Azure Pipelines para criar e enviar imagens de contêiner por push para registros
Artigo
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
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 Registro de Contêiner do Azure, Docker Hub e Google Artifact Registry. Além disso, ele detalha o uso do System.AccessToken para autenticação segura em seu pipeline.
Este artigo orienta você pela instalação e configuração para usar o Azure Pipelines para criar e enviar uma imagem do Docker para um Hub do Docker e o Registro de Artefatos do Google. Além disso, ele detalha o uso do System.AccessToken para autenticação segura em seu pipeline.
Você aprenderá a criar um pipeline YAML para criar e enviar uma imagem do Docker para um registro de contêiner. A tarefa Docker@2 é usada para criar e enviar a imagem para o registro de contêiner.
Pré-requisitos
Um projeto do Azure DevOps.
Um registro de contêiner (Docker Hub, Google Artifact Registry ou Azure Container Registry).
Um repositório GitHub com um Dockerfile. Se você não tiver um, poderá usar o repositório de exemplo No navegador, acesse o repositório de exemplo e bifurque-o para sua conta do GitHub.
Docker. Se estiver usando um agente auto-hospedado, verifique se o Docker está instalado e se o mecanismo do Docker está em execução com privilégios elevados. Os agentes hospedados pela Microsoft têm o Docker pré-instalado.
Um projeto do Azure DevOps.
Um registro de contêiner (Docker Hub ou Google Artifact Registry).
Um repositório GitHub com um Dockerfile. Se você não tiver um, poderá usar o repositório de exemplo No navegador, acesse o repositório de exemplo e bifurque-o para sua conta do GitHub.
Docker. Se estiver usando um agente auto-hospedado, verifique se o Docker está instalado e se o mecanismo do Docker está em execução com privilégios elevados. Os agentes hospedados pela Microsoft têm o Docker pré-instalado.
Criar uma conexão de serviço de Registro do Docker
Antes de enviar imagens de contêiner por push 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 no registro de contêiner. Vá para a página Conexões de serviço em seu projeto do Azure DevOps para criar uma nova conexão de serviço e selecione o tipo de conexão do Registro do Docker.
Há diferentes processos para criar uma conexão de serviço para um Docker Hub e um Google Artifact Registry.
Escolha a opção Registro de Contêiner do Azure em Conexão de serviço de registro do Docker e forneça as informações exigidas pelo método de autenticação escolhido.
Não há suporte para enviar uma imagem do Docker por push para o Registro de Contêiner do Azure Azure DevOps Server.
Para criar uma conexão de serviço do Docker associada ao Google Artifact Registry:
Abra seu projeto no Console do Google Cloud Platform (GCP) e, em seguida, abra o Cloud Shell
Para economizar tempo digitando a ID do projeto e as opções de zona do Mecanismo de Computação, defina os valores de configuração padrão executando os seguintes comandos:
gcloud config set project [PROJECT_NAME]
gcloud config set compute/zone [ZONE]
Substitua [PROJECT_NAME] pelo nome do projeto GCP e substitua [ZONE] pelo nome da zona que você usará para criar os recursos. Se você não tiver certeza sobre qual zona escolher, use us-central1-a. Por exemplo:
gcloud config set project azure-pipelines-test-project-12345
gcloud config set compute/zone us-central1-a
Ative a API do Artifact Registry para seu projeto:
A tarefa Docker@2 foi projetada para simplificar o processo de criação, envio por push e gerenciamento de imagens do Docker em seu Azure Pipelines. Essa tarefa dá suporte a uma ampla variedade de comandos do Docker, incluindo compilar, enviar, fazer logon, fazer logout, iniciar, parar e executar.
As etapas a seguir descrevem como criar um pipeline YAML que usa a tarefa Docker@2 para criar e enviar a imagem.
Navegue até o projeto do Azure DevOps e selecione Pipelines no menu à esquerda.
Selecione Novo pipeline para criar um novo pipeline.
Selecione GitHub ou GitHub Enterprise Server como o local para o código-fonte.
Caso ainda não tenha feito isso, autorize o Azure Pipelines a se conectar à sua conta do GitHub Enterprise Server.
Selecione Conectar ao GitHub Enterprise Server.
Insira detalhes da sua conta e selecione Verificar e salvar.
Selecione seu repositório.
Se você for redirecionado para o GitHub
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.
Com base em se você está implantando um aplicativo Linux ou Windows, defina vmImage, respectivamente, como ubuntu-latest ou windows-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 o demands: docker Docker instalado seja selecionado.
Substitua <docker connection> pelo nome da conexão de serviço do Docker que você criou anteriormente.
Substitua <target repository name> pelo nome do repositório no registro de contêiner para o qual você deseja enviar a imagem. Por exemplo, <your-docker-hub-username>/<repository-name>.
Ao salvar o arquivo azure-pipelines.yml no repositório, você será solicitado a adicionar uma mensagem de confirmação. Insira uma mensagem e selecione Salvar e executar.
Ao usar agentes auto-hospedados, verifique se o Docker está instalado no host do agente e se o mecanismo/daemon do Docker está sendo executado com privilégios elevados.
Para criar a imagem, o Docker deve estar instalado no host do agente e o mecanismo/daemon do Docker deve estar em execução com privilégios elevados. Use as etapas a seguir para criar o pipeline usando o editor de pipeline YAML.
Acesse sua coleção e crie um projeto.
No projeto, selecione Pipelines.
Selecione Criar pipeline.
Selecione GitHub Enterprise Server como o local para seu código-fonte.
Caso ainda não tenha feito isso, autorize o Azure Pipelines a se conectar à sua conta do GitHub Enterprise Server.
Selecione Conectar ao GitHub Enterprise Server.
Insira detalhes da sua conta e selecione Verificar e salvar.
Selecione seu repositório.
Se você for redirecionado ao GitHub para instalar o aplicativo Azure Pipelines, selecione Aprovar e instalar.
Para configurar o pipeline, selecione o modelo Criar uma imagem do Docker.
No editor de pipeline YAML, substitua o conteúdo do arquivo YAML pelo código a seguir. Substitua o nome do pool pelo nome do pool que contém seu agente auto-hospedado com a funcionalidade do Docker.
Com base em se você está implantando um aplicativo Linux ou Windows, defina vmImage, respectivamente, como ubuntu-latest ou windows-latest.
Substitua <target repository name> pelo nome do repositório no registro de contêiner para o qual você deseja enviar a imagem. Por exemplo, <your-docker-hub-username>/<repository-name>.
Substitua <docker connection> pelo nome da conexão de serviço do Docker que você criou anteriormente.
A tarefa Docker@2 é usada para criar e enviar a imagem para o registro de 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 seu Azure Pipelines. Essa tarefa dá suporte a uma ampla variedade de comandos do Docker, incluindo compilar, enviar, fazer logon, fazer logout, iniciar, parar e executar.
As etapas a seguir descrevem como criar um pipeline YAML que usa a tarefa Docker@2 para criar e enviar a imagem.
Navegue até o projeto do Azure DevOps e selecione Pipelines no menu à esquerda.
Selecione Novo pipeline para criar um novo pipeline.
Selecione GitHub ou GitHub Enterprise Server como o local para o código-fonte.
Caso ainda não tenha feito isso, autorize o Azure Pipelines a se conectar à sua conta do GitHub Enterprise Server.
Selecione Conectar ao GitHub Enterprise Server.
Insira detalhes da sua conta e selecione Verificar e salvar.
Selecione 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.
Com base em se você está implantando um aplicativo Linux ou Windows, defina vmImage, respectivamente, como ubuntu-latest ou windows-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 o demands: docker Docker instalado seja selecionado.
Substitua <docker connection> pelo nome da conexão de serviço do Docker que você criou anteriormente.
Substitua <target repository name> pelo nome do repositório no registro de contêiner para o qual você deseja enviar a imagem. Por exemplo, myregistry.azurecr.io/myimage.
Ao salvar o arquivo azure-pipelines.yml no repositório, você será solicitado a adicionar uma mensagem de confirmação. Insira uma mensagem e selecione Salvar e executar.
Ao usar agentes auto-hospedados, verifique se o Docker está instalado no host do agente e se o mecanismo/daemon do Docker está sendo executado com privilégios elevados.
Não há suporte para o docker imaged por push para o Registro de Contêiner do Azure no Azure DevOps Server.
A tarefa Docker@2 foi projetada para simplificar o processo de criação, envio por push e gerenciamento de imagens do Docker em seu Azure Pipelines. Essa tarefa dá suporte a uma ampla variedade de comandos do Docker, incluindo compilar, enviar, fazer logon, fazer logout, iniciar, parar e executar.
As etapas a seguir descrevem como criar um pipeline YAML que usa a tarefa Docker@2 para criar e enviar a imagem.
Navegue até o projeto do Azure DevOps e selecione Pipelines no menu à esquerda.
Selecione Novo pipeline para criar um novo pipeline.
Selecione GitHub ou GitHub Enterprise Server como o local para o código-fonte.
Caso ainda não tenha feito isso, autorize o Azure Pipelines a se conectar à sua conta do GitHub Enterprise Server.
Selecione Conectar ao GitHub Enterprise Server.
Insira detalhes da sua conta e selecione Verificar e salvar.
Selecione 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.
Com base em se você está implantando um aplicativo Linux ou Windows, defina vmImage, respectivamente, como ubuntu-latest ou windows-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 o demands: docker Docker instalado seja selecionado.
Substitua <docker connection> pelo nome da conexão de serviço do Docker que você criou anteriormente.
Substitua <target repository name> pelo nome do repositório no registro de contêiner para o qual você deseja enviar a imagem. Por exemplo, <your-project-id>/<your-image-name>.
Ao salvar o arquivo azure-pipelines.yml no repositório, você será solicitado a adicionar uma mensagem de confirmação. Insira uma mensagem e selecione Salvar e executar.
Ao usar agentes auto-hospedados, verifique se o Docker está instalado no host do agente e se o mecanismo/daemon do Docker está sendo executado com privilégios elevados.
Para criar a imagem, o Docker deve estar instalado no host do agente e o mecanismo/daemon do Docker deve estar em execução com privilégios elevados. Use as etapas a seguir para criar o pipeline usando o editor de pipeline YAML.
Acesse sua coleção e crie um projeto.
No projeto, selecione Pipelines.
Selecione Criar pipeline.
Selecione GitHub Enterprise Server como o local para seu código-fonte.
Caso ainda não tenha feito isso, autorize o Azure Pipelines a se conectar à sua conta do GitHub Enterprise Server.
Selecione Conectar ao GitHub Enterprise Server.
Insira detalhes da sua conta e selecione Verificar e salvar.
Selecione seu repositório.
Para configurar o pipeline, selecione o modelo Criar uma imagem do Docker.
No editor de pipeline YAML, substitua o conteúdo do arquivo YAML pelo código a seguir. Substitua o nome do pool pelo nome do pool que contém seu agente auto-hospedado com a funcionalidade do Docker.
Com base em se você está implantando um aplicativo Linux ou Windows, defina vmImage, respectivamente, como ubuntu-latest ou windows-latest.
Substitua <target repository name> pelo nome do repositório no registro de contêiner para o qual você deseja enviar a imagem. Por exemplo, <your-project-id>/<your-image-name>.
Substitua <docker connection> pelo nome da conexão de serviço do Docker que você criou anteriormente.
Na página Salvar e executar, selecione Salvar e executar novamente.
Você pode assistir à execução do pipeline e exibir os logs para ver a imagem do Docker sendo criada e enviada por push para o registro de 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 em seu pipeline sem expor credenciais confidenciais.
No exemplo de pipeline YAML a seguir, a tarefa Docker@2 é usada para entrar no registro de contêiner e enviar 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 da conexão do serviço de registro do Docker.
Substitua <your repository> pelo nome do repositório do Docker.