Configure uma instância do ACR Enterprise Edition para compilar e enviar imagens de container automaticamente sempre que você fizer commit de 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, certifique-se de que:
Você criou uma instância do Container Registry Enterprise Edition. Para 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 de código-fonte contém um Dockerfile para a construçã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 os tenants.
Estabilidade: as tarefas de compilação são executadas em seu ambiente dedicado, mantendo os tempos de compilação consistentes em múltiplas execuções a partir do mesmo repositório de código-fonte.
-
Aceleração inteligente:
O ACR usa BuildKit por padrão, com suporte robusto a cenários de build multi-stage e diversos recursos avançados de compilação.
O ACR hospeda imagens base comuns localmente, eliminando a necessidade de buscá-las em fontes externas e reduzindo o tempo de compilação.
O ACR utiliza 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 acionamento de 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 da Personal Edition não podem ser vinculadas ao Gitee.
Geração acelerada de imagens: após o push de uma imagem de container, o ACR pode gerar automaticamente uma versão acelerada dela. Para 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 privado do GitLab 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ê pode 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 .
Na página Namespace, clique em Create Namespace.
-
Na caixa de diálogo 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 precisam 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 Image
Quando ativado, uma versão acelerada de cada imagem é gerada automaticamente após o push. A imagem acelerada recebe o sufixo _accelerated em sua tag.
Etapa 3: Crie um repositório de imagens
Imagens aceleradas só podem ser compiladas em instâncias do 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 de código-fonte. Todas as imagens compiladas a partir desse repositório de código-fonte sã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 .
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, 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 fazer commit de código em um branch.
Build With Servers Deployed Outside Chinese Mainland
Ative esta opção se seu código-fonte estiver no GitHub ou Bitbucket, ou se seu 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 acessar fontes de dados externas durante a compilação. Esta opção está disponível apenas em regiões específicas. Caso não seja exibida ao criar um repositório de imagens, a região atual não oferece suporte a este recurso.
Build Without Cache
Quando ativado, o ACR baixa a imagem base da 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 de código-fonte.
Etapa 4: Compile uma imagem
Configure regras de compilação para defina como e quando o ACR compila imagens a partir 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. Volte para Step 1 e vincule 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 parâmetros a seguir e clique em Next.
Parâmetro
Descrição
Type
O tipo do repositório de código-fonte. 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 insira release-(?<imageTag>\w*), o ACR compila automaticamente uma imagem quando o código-fonte do branch release-v1 é atualizado. Para mais informações sobre grupos de captura nomeados, consulte Use regular expressions in named capturing groups.
NotaAo usar uma expressão regular, somente 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 este campo como /.
Dockerfile Filename
O nome do Dockerfile. O nome padrão é Dockerfile.
-
Na etapa Tag, configure os parâmetros a seguir, clique em salve e 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.
NotaAo defina este parâmetro, somente o ACR pode acionar compilações. Compilações manuais não são compatíveis.
Commit ID
(Opcional) O número de caracteres do commit ID do código enviado mais recentemente. Por padrão, os primeiros seis caracteres são utilizados. Ajuste o controle deslizante para alterar o número.
NotaAo defina este parâmetro, somente o ACR pode acionar compilações. Compilações manuais não são compatíveis.
-
Na etapa Build Configurations, configure os parâmetros a seguir e clique em Next.
Parâmetro
Descrição
Build Architecture
Selecione uma ou mais arquiteturas de destino. Ao escolher 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.
Faça push de um commit de código para o branch configurado do repositório de código-fonte para acionar a regra de compilação automaticamente.
Monitore a compilação: na seção Build Log, localize a tarefa de compilação de imagem 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 suporta 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 suporta apenas compilações automáticas.
Exemplo 1: Compilação a partir do branch main (compilações manuais permitidas)
Objetivo: compilar uma imagem com a tag latest a partir do branch main, acionável manualmente ou automaticamente ao fazer push de código.
|
Parâmetro |
Valor |
|
Type |
Branch |
|
Branch/Tag |
main |
|
Build Context Directory |
/ |
|
Dockerfile Filename |
Dockerfile |
|
Image Tag |
latest |
Resultado: ao clique em Build ou quando o código-fonte do 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 foram configurados, é possível acionar compilações manualmente.
Exemplo 2: Compilação a partir de um branch com regex (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 uma imagem automaticamente. 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. Combinado com o build time e o commit ID, a tag resultante da imagem será: v1-202010151625-d4ef3dc3b77a011a5779eec7efdd45.
Como Build Time e Commit ID estão configurados, somente 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 add-on aliyun-acr-credential-helper para autenticação automática. Para mais informações, consulte Use the aliyun-acr-credential-helper component to pull images without using a Secret.
Implantação da imagem como aplicação: crie um Deployment para execute sua imagem em um cluster ACK. Para mais informações, consulte Create a stateless application by using a Deployment.
Aceleração do pull de imagens: use o recurso de aceleração P2P para agilizar a distribuição de imagens entre os nós. Para mais informações, consulte Use the P2P acceleration feature in ACK Serverless and ACK clusters.