O Container Registry Enterprise Edition oferece um pipeline de integração contínua seguro e eficiente para criar imagens de contêiner automaticamente a partir do código-fonte. Configure regras de compilação baseadas em um Dockerfile para gerar uma imagem e enviá-la a um repositório de imagens sempre que houver um commit de código.
Pré-requisitos
Você criou uma instância Enterprise Edition do Container Registry. Para mais informações, consulte Criar uma instância Enterprise Edition.
Seu repositório de código-fonte contém um Dockerfile.
Informações básicas
O serviço de criação de imagens de contêiner oferece os seguintes recursos:
Segurança: O serviço aloca cada tarefa de compilação em um ambiente isolado para uso exclusivo.
Estabilidade: Como cada compilação ocorre em um ambiente dedicado, os tempos de compilação permanecem estáveis e consistentes mesmo ao compilar várias vezes a partir do mesmo repositório de código-fonte.
-
Aceleração inteligente:
Por padrão, o serviço utiliza o BuildKit, uma ferramenta poderosa e altamente eficaz para compilações multiestágio, com suporte a uma ampla variedade de funcionalidades.
O serviço armazena em cache as imagens base frequentemente utilizadas. Isso elimina a necessidade de baixá-las durante o processo de compilação e reduz significativamente o tempo total.
O serviço também utiliza um cache de compilação remoto para acelerar o processo.
Além disso, o serviço suporta diversas plataformas de hospedagem de código e capacidades de aceleração de imagens:
-
Plataformas de hospedagem de código: O serviço suporta as seguintes plataformas.
Plataforma de código
Versão da plataforma
Método de conexão
Limites de acionamento de compilação
Gitee
Instâncias Personal Edition não são suportadas.
Todas
Autorização OAuth do Gitee
Nenhum
GitHub
Somente contas pessoais são suportadas.
Autorização OAuth do GitHub
Nenhum
GitLab
Todas
Token de acesso pessoal
Nenhum
Bitbucket
Todas
Autorização OAuth do Bitbucket
Nenhum
Aceleração de imagem: Ative o carregamento sob demanda para suas imagens. Após enviar uma imagem padrão, o sistema cria automaticamente uma versão acelerada. Para mais detalhes, consulte Carregar uma imagem de contêiner sob demanda.
Etapa 1: Conectar uma plataforma de hospedagem de código
Antes de criar imagens, conecte uma plataforma de hospedagem de código. Para mais informações, consulte Conectar uma plataforma de hospedagem de código.
Não há suporte para criação de imagens a partir de repositórios locais.
Para conectar-se a um repositório GitLab privado dentro de uma VPC, consulte Usar o recurso de compilação segura em uma VPC para criar imagens de contêiner.
Etapa 2: Criar um namespace
Faça login no console do Container Registry.
Na barra de navegação superior, selecione uma região.
No painel de navegação à esquerda, selecione Instances.
Na página Instances, clique em na instância Enterprise Edition desejada.
No painel de navegação à esquerda da página de gerenciamento da instância, escolha .
Na página Namespace, clique em Create Namespace.
-
Na barra lateral Create Namespace, defina o nome do Namespace, ative (On) ou desative (Off) a opção Automatically Create Repository e clique em Confirm.
Se você selecionar On em Automatically Create Repository, siga as orientações abaixo:
Elemento da interface
Descrição
Repository Type
-
Public: Por padrão, os usuários precisam fazer login na instância Enterprise Edition para baixar imagens públicas. Para permitir downloads anônimos, ative o acesso anônimo na instância.
Recomendamos definir o tipo de repositório como Private para garantir a segurança dos dados.
-
Private: Para baixar imagens privadas, os usuários devem fazer login na instância Enterprise Edition e possuir as permissões de Pull necessárias.
Immutable Image Tags
Flexible. Ao selecionar esta opção, tags de imagem neste repositório (exceto
latest) não podem ser sobrescritas, o que garante a consistência das tags de imagens de contêiner.Accelerated Image
Define se o recurso está Off. Se você marcar a caixa de seleção, uma tag de imagem acelerada com o sufixo
_acceleratedserá gerada automaticamente no repositório. -
Etapa 3: Criar um repositório de imagens
A aceleração de imagens está disponível apenas para instâncias Standard e Advanced Edition. Recomendamos atualizar sua instância Basic Edition para a versão Standard ou Advanced.
Crie um repositório de imagens e vincule-o a um repositório de código-fonte. O serviço enviará as imagens compiladas a partir do código-fonte conectado diretamente para este repositório.
Faça login no console do Container Registry.
Na barra de navegação superior, selecione uma região.
No painel de navegação à esquerda, selecione Instances.
Na página Instances, clique em na instância Enterprise Edition que deseja gerenciar.
No painel de navegação à esquerda da página de detalhes da instância, escolha .
Na página Repositories, clique em Create Repository.
No assistente Repository Info, configure Namespace, Repository Name, Repository Type, Image Version, Accelerated Image, Summary e Description. Em seguida, clique em Next.
-
Na etapa Code Source, configure Code Source, Build Settings e Build Rules. Depois, clique em Create Repository.
Parâmetro
Descrição
Code Source
Selecione a origem do seu código.
Build Settings
-
Criar imagens automaticamente quando o código mudar: Quando ativada, essa opção dispara uma compilação automática sempre que houver um commit na branch especificada.
-
Build With Servers Deployed Outside Chinese Mainland: Este recurso utiliza um link acelerado para buscar dados de fontes fora da China continental durante as compilações. Caso seu projeto use GitHub ou Bitbucket como fonte de código, ou se arquivos no Dockerfile precisem ser baixados de sites fora da China continental e a rede transfronteiriça estiver instável, utilize a opção Build With Servers Deployed Outside Chinese Mainland.
-
Build Without Cache: Ao marcar esta opção, as imagens base de dependências são obrigatoriamente baixadas novamente a cada compilação, o que pode aumentar o tempo do processo. Desativar a opção Build Without Cache ajuda a reduzir o tempo de criação da imagem.
Na página Repositories, clique em no repositório de imagens alvo. Se a opção Build aparecer no painel de navegação à esquerda, o repositório de imagens foi conectado com sucesso ao repositório de código-fonte.
-
Etapa 4: Compilar uma imagem
Se Build não aparecer na página de gerenciamento do repositório, a conexão com o repositório de código-fonte falhou. Consulte a Etapa 1 para reconectá-lo.
Faça login no console do Container Registry.
Na barra de navegação superior, selecione uma região.
No painel de navegação à esquerda, selecione Instances.
Na página Instances, clique em na instância Enterprise Edition que deseja gerenciar.
No painel de navegação à esquerda da página de gerenciamento da instância, escolha .
Na página Repositories, localize o repositório desejado e clique em Actions na coluna Manage.
-
No painel de navegação à esquerda, clique em Build. Na seção Build Rules, clique em Add Build Rule. Na etapa Build Information, configure os parâmetros e clique em Next.
Parâmetro
Descrição
Type
Define o tipo de origem para a compilação. Os valores válidos são Branch e Tag.
Branch/Tag
Selecione ou insira uma branch ou tag. Expressões regulares são suportadas. Por exemplo, se a regex for
release-(?<imageTag>\w*), uma alteração no código-fonterelease-v1aciona automaticamente uma compilação para uma imagem com a tagv1. Compilações manuais não são suportadas neste caso. Para mais informações, consulte Grupos de captura nomeados em expressões regulares.NotaAo configurar uma expressão regular, apenas compilações automáticas são suportadas. Não é possível realizar compilações manuais.
Build Context Directory
Caminho relativo para o diretório que contém o Dockerfile. O caminho é relativo à raiz da branch ou tag selecionada. Por exemplo, se sua branch for master e o Dockerfile estiver na raiz dessa branch, o diretório de contexto de compilação será
/.Dockerfile Filename
Nome do arquivo Dockerfile. O valor padrão é
Dockerfile. -
Na etapa Image Version, configure os parâmetros, clique em Save e, em seguida, clique em Next.
NotaClique em Add Configuration para adicionar mais tags de imagem. O limite máximo é de três tags por imagem.
Parâmetro
Descrição
Image Version
Especifique a tag da imagem, como
latest. Também é possível utilizar o valor capturado pelo campo Branch/Tag.Build Time
Timestamp (UTC+8) do push do código. Dois formatos estão disponíveis:
20201015e202010151613.NotaEste parâmetro é opcional. Se selecionado, apenas compilações automáticas são suportadas. Compilações manuais não funcionam com esta opção.
Commit ID
ID do commit do push de código mais recente. Por padrão, os primeiros 6 caracteres são utilizados. Ajuste o controle deslizante para definir a quantidade de caracteres desejada.
NotaParâmetro opcional. Ao ativá-lo, somente compilações automáticas são permitidas; compilações manuais não são suportadas.
-
Na etapa Build Configurations, defina os parâmetros de compilação e clique em Confirm.
Parâmetro
Descrição
Build Architecture
Selecione a arquitetura de compilação. Compilações paralelas são suportadas. Uma única tag de imagem pode corresponder a imagens para múltiplas arquiteturas.
Build Parameters
Parâmetros de tempo de execução para a criação da imagem. Consistem em pares chave-valor sensíveis a maiúsculas e minúsculas. É possível definir até 20 parâmetros. Utilize-os para modificar variáveis de ambiente no Dockerfile, permitindo gerar saídas diferentes a partir do mesmo arquivo.
-
Acione a regra de compilação.
Acione uma regra de compilação das seguintes formas:
Na página Build, vá até a seção Build Rules, encontre a regra desejada e clique em Build na coluna Actions.
Faça um commit de código na branch configurada dentro do repositório de código-fonte.
NotaPara cancelar uma tarefa, acesse a página Build, vá até a seção Build Log, localize a tarefa e clique em Cancel na coluna Actions.
Para visualizar os logs de um processo de compilação, na página Build, acesse a seção Build Log, encontre a tarefa e clique em Log na coluna Actions.
No painel de navegação à esquerda, clique em Image Version. Se a imagem compilada estiver visível, a criação foi concluída com sucesso.
Exemplo 1: Compilar a partir de uma branch fixa
Veja abaixo um exemplo de parâmetros de regra de compilação para criar uma imagem a partir de uma branch fixa chamada main:
Type: Branch
Branch/Tag: main
Build Context Directory: /
Dockerfile Filename: Dockerfile
Image Version: latest
Uma compilação de imagem é acionada quando ocorrem alterações no código-fonte da branch main ou quando você clica em manualmente em Build. O diretório de trabalho é /, e a compilação utiliza o arquivo chamado Dockerfile localizado nesse diretório. A imagem gerada recebe a tag latest. A regra de compilação é ilustrada na figura a seguir.

Exemplo 2: Compilar a partir de uma branch correspondente a regex
Confira a seguir um exemplo de parâmetros para criar uma imagem a partir de uma branch que corresponde a uma expressão regular:
Type: Branch
Branch/Tag: release-(?<imageTag>\w*)
Build Context Directory: /
Dockerfile Filename: Dockerfile
Image Version: ${imageTag}
Build Time: yyyyMMddHHmm
Commit ID: 30
Sempre que você alterar o código-fonte em uma branch cujo nome comece com release-, o sistema iniciará uma compilação de imagem. O contexto de compilação é o diretório raiz (/), e o arquivo utilizado será o Dockerfile presente nesse local.
Por exemplo, considere uma alteração no código-fonte da branch release-v1. A expressão regular release-(?<imageTag>\w*) captura v1 do nome da branch e o atribui à variável imageTag, que o serviço então utiliza para definir a tag da imagem. Após a conclusão da compilação, a tag resultante será v1-202010151625-d4ef3dc3b77a011a5779eec7efdd45. A regra de compilação é mostrada na figura abaixo.

Operações relacionadas
Após criar uma imagem, execute as seguintes operações:
Baixe a imagem de um cluster ACK sem usar um secret. Para mais detalhes, consulte Usar o componente aliyun-acr-credential-helper para baixar imagens de contêiner.
Utilize a imagem para criar uma aplicação em um cluster ACK. Veja mais em Criar um Deployment stateless.
Aproveite o recurso de aceleração P2P em um cluster ACK para agilizar o download de imagens. Para saber mais, consulte Usar aceleração P2P em clusters ACK ou ACK Serverless.