Usar o Azure Pipelines para criar e enviar imagens de contêiner para registros
Artigo
Serviços de DevOps do Azure | 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, Hub do Docker e Registro de Artefato do Google. 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 Docker Hub e o Google Artifact Registry. Além disso, detalha o System.AccessToken uso do para autenticação segura dentro do seu pipeline.
Você aprende a criar um pipeline YAML para criar e enviar por push uma imagem do Docker para um registro de contêiner. A tarefa Docker@2 é usada para criar e enviar a imagem para o registro do contêiner.
Pré-requisitos
Um projeto de DevOps do Azure.
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, você pode usar o repositório de exemplo Em seu navegador, vá para o repositório de exemplo e, em seguida, 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á sendo executado com privilégios elevados. Os agentes hospedados pela Microsoft têm o Docker pré-instalado.
Um projeto de DevOps do Azure.
Um registro de contêiner (Docker Hub ou Google Artifact Registry).
Um repositório GitHub com um Dockerfile. Se você não tiver um, você pode usar o repositório de exemplo Em seu navegador, vá para o repositório de exemplo e, em seguida, 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á sendo executado com privilégios elevados. Os agentes hospedados pela Microsoft têm o Docker pré-instalado.
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 a página Conexões de serviço em seu projeto de DevOps do Azure 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 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.
Escolha a opção Registro de Contêiner do Azure em Conexão do serviço de registro do Docker e forneça as informações exigidas pelo método de autenticação escolhido.
Você também pode criar seu pipeline usando o modelo do Docker para criar e enviar por push uma imagem para o Registro de Contêiner do Azure. Este modelo cria automaticamente uma conexão de serviço e um pipeline YAML para você. Para obter mais informações, consulte Usar o Docker YAML para criar e enviar imagens por push para o Registro de Contêiner do Azure.
Não há suporte para enviar uma imagem do Docker para o Registro de Contêiner do Azure no Servidor de DevOps do Azure.
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 o ID do projeto e as opções de zona do Compute Engine, 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 seu projeto GCP e substitua [ZONE] pelo nome da zona que você usará para criar recursos. Se 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
Habilite a API de Registro de Artefato 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 seus Pipelines do Azure. Esta tarefa suporta uma ampla gama de comandos do Docker, incluindo build, push, login, logout, start, stop e run.
As etapas a seguir descrevem como criar um pipeline YAML que usa a tarefa Docker@2 para criar e enviar por push a imagem.
Navegue até seu 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 do 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
Selecione o modelo de pipeline inicial para criar uma configuração básica de pipeline.
Substitua o conteúdo do azure-pipelines.yml pelo código a seguir.
Com base no fato de você estar implantando um aplicativo Linux ou Windows, certifique-se de definir vmImage respectivamente como um 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 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>.
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 pelo código a seguir. Substitua o nome do pool pelo nome do pool que contém seu agente auto-hospedado pelo recurso Docker.
Com base no fato de você estar implantando um aplicativo Linux ou Windows, certifique-se de definir vmImage respectivamente como um ubuntu-latest ou windows-latest.
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.
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.
Você pode criar um pipeline YAML para criar e enviar por push uma imagem do Docker para um registro de contêiner do Azure usando o modelo do Docker, conforme descrito em Usar o Docker YAML para criar e enviar imagens do Docker para o Registro de Contêiner do Azure ou usar as etapas a seguir.
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.
As etapas a seguir descrevem como criar um pipeline YAML que usa a tarefa Docker@2 para criar e enviar por push a imagem.
Navegue até seu 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 do 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.
Selecione o modelo de pipeline inicial para criar uma configuração básica de pipeline.
Substitua o conteúdo do azure-pipelines.yml pelo código a seguir.
Com base no fato de você estar implantando um aplicativo Linux ou Windows, certifique-se de definir vmImage respectivamente como um 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 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, myregistry.azurecr.io/myimage.
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.
Não há suporte para enviar imagens do docker para o Registro de Contêiner do Azure no Servidor de DevOps do Azure.
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.
As etapas a seguir descrevem como criar um pipeline YAML que usa a tarefa Docker@2 para criar e enviar por push a imagem.
Navegue até seu 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 do 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.
Selecione o modelo de pipeline inicial para criar uma configuração básica de pipeline.
Substitua o conteúdo do azure-pipelines.yml pelo código a seguir.
Com base no fato de você estar implantando um aplicativo Linux ou Windows, certifique-se de definir vmImage respectivamente como um 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 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-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. 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.
Para configurar seu pipeline, selecione o modelo de imagem Criar um 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 pelo recurso Docker.
Com base no fato de você estar implantando um aplicativo Linux ou Windows, certifique-se de definir vmImage respectivamente como um ubuntu-latest ou windows-latest.
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-project-id>/<your-image-name>.
Substitua <docker connection> pelo nome da conexão de serviço do Docker criada anteriormente.
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.