Esta página é destinada a proprietários e mantenedores de repositórios de regras do Bazel. Ele descreve como configurar o sistema de integração contínua (CI) do Bazel para seu repositório a fim de testar as regras de compatibilidade com um cenário de execução remota. As instruções nesta página se aplicam aos projetos armazenados nos repositórios do GitHub.
Pré-requisitos
Antes de concluir as etapas nesta página, verifique o seguinte:
- Seu repositório do GitHub faz parte da organização do GitHub do Bazel (link em inglês).
- Você configurou o Buildkite para o repositório, conforme descrito em Integração contínua do Bazel.
Como configurar a CI do Bazel para testes
No arquivo
.bazelci/presubmit.yml
, faça o seguinte:a. Adicione uma configuração chamada
rbe_ubuntu1604
.b. Na configuração
rbe_ubuntu1604
, adicione os destinos de build e teste que você quer testar na execução remota.Adicione o repositório do GitHub
bazel-toolchains
ao arquivoWORKSPACE
, fixado à versão mais recente. Adicione também um destinorbe_autoconfig
com o nomebuildkite_config
. Este exemplo cria a configuração do conjunto de ferramentas para execução remota com o BuildKite CI pararbe_ubuntu1604
.
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
Envie uma solicitação de envio com suas alterações para o arquivo
presubmit.yml
. Consulte um exemplo de solicitação de envio.Para ver os resultados do build, clique em Detalhes para a verificação de solicitação de envio do RBE (Ubuntu 16.04) no GitHub, conforme mostrado na figura abaixo. Esse link é disponibilizado após a mesclagem da solicitação de envio e a execução dos testes de CI. Confira exemplos de resultados.
(Opcional) Defina a verificação do bazel test (RBE (Ubuntu 16.04)) como um teste necessário para ser aprovado antes de mesclar a regra de proteção de ramificação. A configuração está localizada no GitHub em Settings > Branches > Branch Protection rules, conforme mostrado na figura a seguir.
Como solucionar problemas de builds e testes com falha
Se a versão ou os testes falharem, é provável que:
As ferramentas de build ou teste obrigatórias não estão instaladas no contêiner padrão. Os builds que usam a configuração
rbe_ubuntu1604
são executados por padrão em um contêinerrbe-ubuntu16-04
, que inclui ferramentas comuns a muitos builds do Bazel. No entanto, se as regras exigirem ferramentas que não estão no contêiner padrão, crie um contêiner personalizado com base no contêinerrbe-ubuntu16-04
e inclua essas ferramentas conforme descrito mais adiante.Destinos de compilação ou teste usam regras incompatíveis com a execução remota. Consulte Como adaptar regras do Bazel para execução remota para mais detalhes sobre a compatibilidade com a execução remota.
Como usar um contêiner personalizado na configuração de CI do rbe_ubuntu1604
O contêiner rbe-ubuntu16-04
está disponível publicamente no seguinte URL:
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
É possível extraí-lo diretamente do Container Registry ou criá-lo da origem. As próximas seções descrevem as duas opções.
Antes de começar, instale gcloud
, docker
e git
.
Se você estiver criando o contêiner a partir da origem, também precisará instalar a versão mais recente do Bazel.
Como extrair o rbe-ubuntu16-04 do Container Registry
Para extrair o contêiner rbe-ubuntu16-04
do Container Registry, execute o
seguinte comando:
gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
Substitua sha256-checksum pelo valor da soma de verificação SHA256 para o contêiner mais recente.
Como criar o contêiner rbe-ubuntu16-04 a partir da origem
Para criar o contêiner rbe-ubuntu16-04
a partir da origem, faça o seguinte:
Clone o repositório
bazel-toolchains
:git clone https://github.com/bazelbuild/bazel-toolchains
Configure os destinos do contêiner do conjunto de ferramentas e crie o contêiner conforme explicado em Contêineres do conjunto de ferramentas.
Extraia o contêiner recém-criado:
gcloud docker -- pull gcr.io/project-id/custom-container-namesha256-checksum
Como executar o contêiner personalizado
Para executar o contêiner personalizado, siga um destes procedimentos:
Se você extraiu o contêiner do Container Registry, execute o seguinte comando:
docker run -it gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum/bin/bash
Substitua
sha256-checksum
pelo valor da soma de verificação SHA256 para o contêiner mais recente.Se você criou o contêiner a partir da origem, execute o seguinte comando:
docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
Como adicionar recursos ao contêiner personalizado
Use um Dockerfile
ou
rules_docker
para adicionar recursos ou
versões alternativas dos recursos originais ao contêiner rbe-ubuntu16-04
.
Se você não conhece o Docker, leia o seguinte:
- Docker para iniciantes
- Amostras do Docker (link em inglês)
Por exemplo, o snippet de Dockerfile
a seguir instala my_tool_package
:
FROM gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
RUN apt-get update && yes | apt-get install -y my_tool_package
Como enviar o contêiner personalizado para o Container Registry
Depois de personalizar o contêiner, crie a imagem do contêiner e a envie ao Container Registry da seguinte maneira:
Crie a imagem do contêiner:
docker build -t custom-container-name.
docker tag custom-container-name gcr.io/project-id/custom-container-name
Envie a imagem do contêiner para o Container Registry:
gcloud docker -- push gcr.io/project-id/custom-container-name
Acesse o seguinte URL para verificar se o contêiner foi enviado:
https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name
Anote a soma de verificação SHA256 do seu contêiner personalizado. Você precisará fornecê-lo na definição da plataforma de build mais tarde.
Configure o contêiner para acesso público conforme descrito em "acessível publicamente", conforme explicado em Como exibir imagens publicamente.
Para ver mais informações, consulte Como enviar e extrair imagens.
Como especificar a definição da plataforma de build
É preciso incluir uma configuração da plataforma Bazel na configuração do conjunto de ferramentas personalizado. Isso permite que o Bazel selecione um conjunto de ferramentas apropriado para a plataforma de hardware/software desejada. Para gerar
automaticamente uma plataforma válida, adicione ao seu WORKSPACE
um
destino rbe_autoconfig
com o nome buildkite_config
, que inclui outros
atrizes para selecionar seu contêiner personalizado. Para mais detalhes sobre essa configuração, leia
a documentação atualizada do rbe_autoconfig
.