Esta página é destinada a proprietários e mantenedores de repositórios de regras do Bazel. Ela descreve como configurar o sistema de integração contínua (CI) do Bazel para que seu repositório teste as regras de compatibilidade com um cenário de execução remota. As instruções desta página se aplicam a projetos armazenados em repositórios do GitHub.
Pré-requisitos
Antes de concluir as etapas desta página, verifique se:
- Seu repositório do GitHub faz parte da organização do GitHub do Bazel.
- Você configurou o Buildkite para seu repositório, conforme descrito em Integração contínua do Bazel.
Como configurar o 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 em relação à execução remota.Adicione o
bazel-toolchainsrepositório do GitHub ao arquivoWORKSPACE, fixado na versão mais recente. Adicione também um destinorbe_autoconfigcom o nomebuildkite_config. Este exemplo cria uma configuração de 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 as alterações para o arquivo
presubmit.yml. (Consulte exemplo de solicitação de envio.)Para conferir os resultados do build, clique em Detalhes na verificação de solicitação de envio do RBE (Ubuntu 16.04) no GitHub, conforme mostrado na figura abaixo. Esse link fica disponível depois que a solicitação de envio é mesclada e os testes de CI são executados. (Consulte resultados de exemplo.)

(Opcional) Defina a verificação bazel test (RBE (Ubuntu 16.04)) como um teste necessário para aprovação antes da mesclagem na regra de proteção de ramificação. A configuração está localizada no GitHub em Configurações > Ramificações > Regras de proteção de ramificação, conforme mostrado na figura a seguir.

Solução de problemas de builds e testes com falha
Se o build ou os testes falharem, provavelmente será devido ao seguinte:
As ferramentas de build ou teste necessárias não estão instaladas no contêiner padrão. Os builds que usam a configuração
rbe_ubuntu1604são executados por padrão em umrbe-ubuntu16-04contêiner, que inclui ferramentas comuns a muitos builds do Bazel. No entanto, se as regras exigirem ferramentas que não estão presentes no contêiner padrão, você precisará criar um contêiner personalizado com base norbe-ubuntu16-04contêiner e incluir essas ferramentas, conforme descrito mais adiante.Os destinos de build ou teste estão usando regras incompatíveis com a execução remota. Consulte 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 do CI 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 a partir da origem. As próximas seções descrevem as duas opções.
Antes de começar, verifique se você instalou 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-checksumSubstitua sha256-checksum pelo valor de soma de verificação SHA256 para o contêiner mais recente.
Como criar o contêiner rbe-ubuntu16-04 da origem
Para criar o contêiner rbe-ubuntu16-04 da origem, faça o seguinte:
Clone o repositório
bazel-toolchains:git clone https://github.com/bazelbuild/bazel-toolchainsConfigure 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, faça uma das seguintes ações:
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/bashSubstitua
sha256-checksumpelo valor de soma de verificação SHA256 do contêiner mais recente.Se você criou o contêiner 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:
Por exemplo, o snippet 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 envie-a para o 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-nameEnvie a imagem do contêiner para o Container Registry:
gcloud docker -- push gcr.io/project-id/custom-container-nameAcesse 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 contêiner personalizado. Você precisará fornecê-la na definição da plataforma de build mais tarde.
Configure o contêiner para acesso público, conforme descrito em Acesso público, conforme explicado em Como disponibilizar imagens publicamente.
Para mais informações, consulte Como enviar e extrair imagens.
Como especificar a definição da plataforma de build
Você precisa incluir uma configuração de plataforma do Bazel na configuração do
conjunto de ferramentas personalizado, o que permite que o Bazel selecione um conjunto de ferramentas
adequado à plataforma de hardware/software desejada. Para gerar
automaticamente uma plataforma válida, adicione ao WORKSPACE um
rbe_autoconfig destino com o nome buildkite_config, que inclui atributos
extras para selecionar seu contêiner personalizado. Para detalhes sobre essa configuração, leia
a documentação atualizada do rbe_autoconfig.