Configure uma instância do ACR Enterprise Edition para compilar e enviar imagens de contêiner automaticamente sempre que você confirmar código em um repositório conectado. Após a configuração, cada alteração no código aciona uma compilação e um push para o repositório de imagens.
Pré-requisitos
Antes de começar, verifique se:
Você criou uma instância do Container Registry Enterprise Edition. Para obter mais informações, consulte a seção "Step 1: Create a Container Registry Enterprise Edition instance" do tópico Push an image to a Container Registry Enterprise Edition instance and pull an image from the instance.
Seu repositório source contém um Dockerfile para a compilação de imagens.
Informações gerais
O service de compilação de imagens do ACR Enterprise Edition oferece os seguintes recursos:
Segurança: cada tarefa de compilação é executada em um ambiente exclusivo da sua conta Alibaba Cloud, garantindo forte isolamento entre locatários.
Estabilidade: as tarefas de compilação são executadas no seu ambiente dedicado, de modo que os tempos de compilação permanecem consistentes em múltiplas execuções a partir do mesmo repositório source.
-
Aceleração inteligente:
O ACR usa BuildKit por padrão, que oferece recursos robustos para cenários de compilação em múltiplos estágios e suporte a diversas funcionalidades de build.
O ACR hospeda imagens base comuns localmente, eliminando a necessidade de baixá-las de fontes externas e reduzindo o tempo de compilação.
O ACR usa caches remotos para acelerar ainda mais a compilação de imagens.
Plataformas de hospedagem de código compatíveis
A tabela a seguir lista as plataformas de hospedagem de código compatíveis com o Container Registry Enterprise Edition:
-
O ACR é compatível com as seguintes plataformas de hospedagem de código:
Plataforma de hospedagem de código
Versão
Método de autenticação para vinculação
Limite para acionar compilações de imagens
Gitee
Todas as versões
Autenticação OAuth do Gitee
Nenhum
GitHub
Versão developer do GitHub
Autenticação OAuth do GitHub
Nenhum
GitLab
Todas as versões
Token de acesso pessoal
Nenhum
Bitbucket
Todas as versões
Autenticação OAuth do Gitee
Nenhum
NotaInstâncias Personal Edition não podem ser vinculadas ao Gitee.
Geração acelerada de imagens: após o push de uma imagem de contêiner, o ACR pode gerar automaticamente uma versão acelerada dela. Para obter mais informações, consulte Load resources of a container image on demand.
Etapa 1: Vincule sua instância a uma plataforma de hospedagem de código
Vincule a instância a uma plataforma de hospedagem de código para que o ACR possa acessar seu código-fonte e acionar compilações quando houver alterações. Para instruções detalhadas, consulte Bind a source code hosting platform.
Não é possível compilar imagens a partir de um repositório de código local.
Para vincular um repositório de código GitLab privado em uma virtual private cloud (VPC), consulte Build a container image in a VPC.
Etapa 2: Crie um namespace
Crie um namespace para organizar seus repositórios de imagens. Ao ativar a criação automática de repositórios, você defina configurações padrão aplicadas a todos os repositórios desse namespace.
Faça login no Container Registry console.
Na barra de navegação superior, selecione uma região.
No painel de navegação à esquerda, clique em Instances.
Na página Instances, clique na instância Enterprise Edition para a qual deseja crie um namespace.
No painel de navegação à esquerda, escolha Repository > Namespace.
Na página Namespace, clique em Create Namespace.
-
Na barra lateral Create Namespace, configure Namespace e defina Automatically Create Repository como On ou Off. Em seguida, clique em Confirm.
Se você defina Automatically Create Repository como On, configure os seguintes parâmetros:
Parâmetro
Descrição
Repository Type
Selecione Public ou Private. Public: por padrão, imagens públicas exigem que os usuários façam login na instância antes de serem baixadas. Para permitir pulls anônimos, ative a configuração de pull anônimo público da instância. Como repositórios públicos podem ser acessados por usuários não autorizados, defina os repositórios como Private para proteger seus dados. Private: os usuários devem fazer login na instância e ter autorização de permissão Pull antes de baixar imagens privadas.
Immutable Image Tags
Selecione Flexible ou Immutable. Quando defina como Immutable, todas as tags de imagem, exceto latest, não podem ser substituídas.
Accelerated Images
Quando ativado, uma versão acelerada de cada imagem é gerada automaticamente após o push. A imagem acelerada recebe o sufixo _accelerated na sua tag.
Etapa 3: Crie um repositório de imagens
Imagens aceleradas só podem ser compiladas em instâncias Container Registry Standard Edition ou Advanced Edition. Atualize instâncias Basic Edition para Standard Edition ou Advanced Edition antes de compilar imagens aceleradas.
Crie um repositório de imagens e vincule-o a um repositório source. Todas as imagens compiladas a partir desse repositório source serão enviadas para este repositório de imagens.
Faça login no Container Registry console.
Na barra de navegação superior, selecione uma região.
No painel de navegação à esquerda, clique em Instances.
Na página Instances, clique na instância Enterprise Edition que deseja gerencie.
No painel de navegação à esquerda, escolha Repository > Repositories.
Na página Repositories, clique em Create Repository.
Na etapa Repository Info, configure Namespace, Repository Name, Repository Type, Tags, Accelerated Image, Summary e Description. Em seguida, clique em Next.
Na etapa Code Source, configure Code Source, Build Settings e Build Rules e clique em Create Repository.
-
A tabela a seguir descreve os parâmetros de Build Settings:
Parâmetro
Descrição
Automatically Build Images When Code Changes
Quando ativado, a regra de compilação é acionada automaticamente ao confirme código em um branch.
Build With Servers Deployed Outside Chinese Mainland
Ative esta opção se o seu repositório source estiver no GitHub ou Bitbucket, ou se o Dockerfile baixar dependências de fora da china e a conexão de rede internacional for instável. O ACR usa um link acelerado para baixar fontes de dados externas durante a compilação. Esta opção está disponível apenas em regiões específicas. Se a opção não for exibida ao crie um repositório de imagens, a região atual não é compatível com esse recurso.
Build Without Cache
Quando ativado, o ACR baixa a imagem base do source a cada compilação, ignorando as camadas em cache. Isso pode reduzir a velocidade das compilações. Desative esta opção para usar camadas em cache e acelerar as compilações.
Na página Repositories, clique no repositório de imagens criado. Se Build for exibido no painel de navegação à esquerda da página de gerenciamento do repositório, o repositório de imagens está vinculado ao repositório source.
Etapa 4: Compile uma imagem
Configure regras de compilação para defina como e quando o ACR compila imagens do seu repositório, acione uma compilação e verifique o resultado.
Se Build não aparecer na página de gerenciamento do repositório, a instância não está vinculada à plataforma de hospedagem de código. Retorne à Etapa 1 para vincular a instância novamente.
Faça login no Container Registry console.
Na barra de navegação superior, selecione uma região.
No painel de navegação à esquerda, clique em Instances.
Na página Instances, clique na instância Enterprise Edition que deseja gerencie.
No painel de navegação à esquerda da página de detalhes da instância, escolha .
Na página Repositories, localize o repositório de imagens criado e clique em Manage na coluna Actions.
-
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 seguintes parâmetros e clique em Next.
Parâmetro
Descrição
Type
O tipo do repositório source. Valores válidos: Branch e Tag.
Branch/Tag
Selecione ou insira um branch ou tag. Expressões regulares são compatíveis. Por exemplo, ao inserir release-(?<imageTag>\w*), o ACR compila automaticamente uma imagem quando o código-fonte no branch release-v1 é atualizado. Para obter mais informações sobre grupos de captura nomeados, consulte Use regular expressions in named capturing groups.
NotaAo usar uma expressão regular, apenas o ACR pode acionar compilações. Compilações manuais não são compatíveis.
Build Context Directory
O diretório que contém o Dockerfile, relativo à raiz do branch ou tag. Por exemplo, se o branch for master e o Dockerfile estiver na raiz do branch, defina como /.
Dockerfile Filename
O nome do Dockerfile. O nome padrão é Dockerfile.
-
Na etapa Tag, configure os seguintes parâmetros, clique em salve e depois em Next.
NotaClique em Add Configuration para adicionar tags de imagem. É possível adicionar até três tags de imagem.
Parâmetro
Descrição
Image Tag
A tag da imagem compilada, por exemplo latest. Grupos de captura nomeados são compatíveis. Se você defina um grupo de captura nomeado em Branch/Tag, referencie o valor capturado aqui.
Build Time
(Opcional) O horário (UTC+8) em que o código-fonte é enviado. Formatos aceitos: 20201015 ou 202010151613.
NotaSe este parâmetro for defina, apenas o ACR pode acionar compilações. Compilações manuais não são compatíveis.
Commit id
(Opcional) O número de caracteres a utilizar do commit id do código enviado mais recentemente. Por padrão, os primeiros seis caracteres são usados. Ajuste o controle deslizante para alterar o número.
NotaSe este parâmetro for defina, apenas o ACR pode acionar compilações. Compilações manuais não são compatíveis.
-
Na etapa Build Configurations, configure os seguintes parâmetros e clique em Next.
Parâmetro
Descrição
Build Architecture
Selecione uma ou mais arquiteturas de destino. Ao selecione múltiplas arquiteturas, o ACR gera uma imagem separada para cada arquitetura sob a mesma tag.
Build Parameters
Pares chave-valor passados ao processo de compilação. Os nomes dos parâmetros diferenciam maiúsculas de minúsculas. Configure até 20 parâmetros de compilação clicando em Add Configuration.
-
Acione uma compilação usando um dos seguintes métodos:
Na seção Build Rules da página Build, localize a regra de compilação e clique em Build na coluna Actions.
Envie um commit de código para o branch configurado do repositório source para acionar a regra de compilação automaticamente.
Monitore a compilação: na seção Build Log, localize a tarefa de compilação de imagens e clique em Log na coluna Actions para visualize o log de compilação. Para interromper uma compilação em andamento, clique em cancele na coluna Actions.
-
Verifique o resultado: no painel de navegação à esquerda, clique em Image Tag. Se a imagem compilada estiver listada, a compilação foi concluída com êxito.
No painel de navegação à esquerda, clique em Image Tag. Se a imagem criada for exibida, a compilação foi concluída com sucesso.
Exemplos
Os dois exemplos a seguir ilustram configurações comuns de regras de compilação. O Exemplo 1 apresenta uma configuração simples que permite compilações manuais e automáticas. O Exemplo 2 usa uma expressão regular para criar tags de imagem versionadas a partir de nomes de branches de release e permite apenas compilações automáticas.
Exemplo 1: Compilar a partir do branch main (compilações manuais permitidas)
Objetivo: compilar uma imagem com a tag latest a partir do branch main, podendo ser acionada manualmente ou automaticamente ao enviar código.
|
Parâmetro |
Valor |
|
Type |
Branch |
|
Branch/Tag |
main |
|
Build Context Directory |
/ |
|
Dockerfile Filename |
Dockerfile |
|
Image Tag |
latest |
Resultado: ao clicar em Build ou quando o código-fonte no branch main é atualizado, o ACR compila a imagem usando o Dockerfile no diretório raiz do branch main. A imagem compilada recebe a tag latest.
Como Build Time e Commit id não estão configurados, é possível acionar compilações manualmente.
Exemplo 2: Compilar a partir de um branch correspondente a uma expressão regular (compilações manuais não permitidas)
Objetivo: compilar automaticamente imagens versionadas a partir de branches de release, onde o nome do branch determina a tag da imagem.
|
Parâmetro |
Valor |
|
Type |
Branch |
|
Branch/Tag |
release-(?<imageTag>\w*) |
|
Build Context Directory |
/ |
|
Dockerfile Filename |
Dockerfile |
|
Image Tag |
${imageTag} |
|
Build Time |
yyyyMMddHHmm |
|
Commit id |
30 |
Resultado: quando o código-fonte de um branch cujo nome começa com release- é atualizado, o ACR compila automaticamente uma imagem. A expressão regular release-(?<imageTag>\w*) captura a parte de versão do nome do branch e a atribui à variável imageTag, que é então usada na tag da imagem.
Por exemplo, um push para o branch release-v1 captura v1 como imageTag. Combinada com o horário de compilação e o commit id, a tag resultante da imagem é: v1-202010151625-d4ef3dc3b77a011a5779eec7efdd45.
Como Build Time e Commit id estão configurados, apenas o ACR pode acionar esta compilação. Compilações manuais não são compatíveis.
Próximas etapas
Após compilar a imagem, utilize-a em clusters do Container Service for Kubernetes (ACK) de uma das seguintes formas:
Pull de imagens sem secrets: use o complemento aliyun-acr-credential-helper para autenticação automática. Para obter mais informações, consulte Use the aliyun-acr-credential-helper component to pull images without using a Secret.
Implante a imagem como uma aplicação: crie um Deployment para execute sua imagem em um cluster ACK. Para obter mais informações, consulte Create a stateless application by using a Deployment.
Acelere o pull de imagens: use o recurso de aceleração P2P para agilizar a distribuição de imagens entre os nós. Para obter mais informações, consulte Use the P2P acceleration feature in ACK Serverless and ACK clusters.