O Cloud Build é um serviço que executa as suas compilações na Google Cloud.
O Cloud Build pode importar código-fonte de vários repositórios ou espaços de armazenamento na nuvem, executar uma compilação de acordo com as suas especificações e produzir artefactos, como contentores Docker ou arquivos Java.
Também pode usar o Cloud Build para ajudar a proteger a sua cadeia de fornecimento de software. As funcionalidades do Cloud Build cumprem os requisitos do nível 3 dos níveis da cadeia de fornecimento para artefactos de software (SLSA). Para orientações sobre a proteção dos processos de compilação, consulte o artigo Salvaguarde as compilações.
Configuração da compilação e passos de compilação
Pode escrever uma configuração de compilação para fornecer instruções ao Cloud Build sobre as tarefas a realizar. Pode configurar compilações para obter dependências, executar testes unitários, análises estáticas e testes de integração, bem como criar artefactos com ferramentas de compilação, como o Docker, o Gradle, o Maven, o Bazel e o Gulp.
O Cloud Build executa a sua compilação como uma série de passos de compilação, em que cada passo de compilação é executado num contentor Docker. A execução de passos de compilação é análoga à execução de comandos num script.
Pode usar os passos de compilação fornecidos pelo Cloud Build e pela comunidade do Cloud Build, ou escrever os seus próprios passos de compilação personalizados:
Passos de compilação fornecidos pelo Cloud Build: o Cloud Build publicou um conjunto de passos de compilação de código aberto suportados para linguagens e tarefas comuns.
Passos de compilação contribuídos pela comunidade: a comunidade de utilizadores do Cloud Build forneceu passos de compilação de código aberto.
Passos de compilação personalizados: pode criar os seus próprios passos de compilação para usar nas suas compilações.
Cada passo de compilação é executado com o respetivo contentor anexado a uma rede Docker local com o nome cloudbuild
. Isto permite que os passos de compilação comuniquem entre si e partilhem dados. Para mais informações sobre a rede cloudbuild
, consulte o artigo
Rede do Cloud Build.
Pode usar imagens padrão do Docker Hub no Cloud Build, como o Ubuntu e o Gradle.
Iniciar compilações
Pode iniciar manualmente compilações no Cloud Build através da CLI gcloud ou da API Cloud Build, ou usar os acionadores de compilação do Cloud Build para criar um fluxo de trabalho de integração contínua/entrega contínua (CI/CD) automatizado que inicia novas compilações em resposta a alterações de código.
Pode integrar acionadores de compilação com muitos repositórios de código, incluindo os Cloud Source Repositories, o GitHub e o Bitbucket.
Visualizar resultados da compilação
Pode ver os resultados da compilação através da CLI gcloud, da API Cloud Build ou usar a página Histórico de compilação na secção Cloud Build na Google Cloud consola, que apresenta detalhes e registos de cada compilação executada pelo Cloud Build. Para ver instruções, consulte o artigo Ver resultados da compilação.
Como funcionam as compilações
Os passos seguintes descrevem, em geral, o ciclo de vida de uma compilação do Cloud Build:
- Prepare o código da aplicação e todos os recursos necessários.
- Crie um ficheiro de configuração de compilação no formato YAML ou JSON, que contém instruções para o Cloud Build.
- Envie a compilação para o Cloud Build.
- O Cloud Build executa a sua compilação com base na configuração de compilação que forneceu.
- Se aplicável, todos os artefactos criados são enviados para o Artifact Registry.
Docker
O Cloud Build usa o Docker
para executar compilações. Para cada passo de compilação, o Cloud Build executa um contentor Docker
como uma instância de docker run
. Atualmente, o Cloud Build está a executar a versão 20.10.24 do motor Docker.
Interfaces do Cloud Build
Pode usar o Cloud Build com a Google Cloud consola, a gcloud
ferramenta de linha de comandos ou a API REST do Cloud Build.
Na Google Cloud consola, pode ver os resultados da compilação do Cloud Build na página Histórico de compilações e automatizar compilações nos Acionadores de compilação.
Pode usar a CLI gcloud para criar e gerir compilações. Pode executar comandos para realizar tarefas, como enviar uma compilação, listar compilações e cancelar uma compilação.
Pode pedir compilações através da API REST do Cloud Build.
Tal como acontece com outras APIs da Cloud Platform, tem de autorizar o acesso através do OAuth2. Depois de autorizar o acesso, pode usar a API para iniciar novas compilações, ver o estado e os detalhes da compilação, listar compilações por projeto e cancelar compilações que estão atualmente em processamento.
Para mais informações, consulte a documentação da API.
Pools predefinidos e pools privados
Por predefinição, quando executa uma compilação no Cloud Build, a compilação é executada num ambiente alojado seguro com acesso à Internet pública. Cada compilação é executada no seu próprio trabalhador e está isolada de outras cargas de trabalho. Pode personalizar a sua compilação de várias formas, incluindo aumentar o tamanho do tipo de máquina ou alocar mais espaço em disco. O conjunto predefinido tem limites quanto à personalização do ambiente, especialmente no que diz respeito ao acesso à rede privada.
As pools privadas são pools privadas e dedicadas de trabalhadores que oferecem maior personalização do ambiente de compilação, incluindo a capacidade de aceder a recursos numa rede privada. As pools privadas, semelhantes às pools predefinidas, são alojadas e totalmente geridas pelo Cloud Build, e são aumentadas e reduzidas até zero, sem infraestrutura para configurar, atualizar ou dimensionar. Como os conjuntos privados são recursos específicos do cliente, pode configurá-los de mais formas.
Para saber mais acerca dos pools privados e da diferença entre o pool predefinido e o pool privado, consulte o artigo Vista geral do pool privado.
Crie segurança
O Cloud Build oferece várias funcionalidades para proteger as suas compilações, incluindo:
Compilações automáticas
Uma compilação automatizada ou uma compilação com script define todos os passos de compilação no script de compilação ou na configuração de compilação, incluindo os passos para obter o código-fonte e os passos para compilar o código. O único comando manual, se existir, é o comando para executar a compilação. O Cloud Build usa um ficheiro de configuração de compilação para fornecer passos de compilação ao Cloud Build.
As compilações automatizadas oferecem consistência nos passos de compilação. No entanto, também é importante executar compilações num ambiente consistente e fidedigno.
Embora as compilações locais possam ser úteis para fins de depuração, a publicação de software a partir de compilações locais pode introduzir muitas preocupações de segurança, inconsistências e ineficiências no processo de compilação.
- Permitir compilações locais dá aos atacantes com intenções maliciosas uma forma de modificar o processo de compilação.
- As inconsistências nos ambientes locais dos programadores e nas práticas dos programadores dificultam a reprodução de compilações e o diagnóstico de problemas de compilação.
Nos requisitos da framework SLSA, as compilações automatizadas são um requisito para o nível 1 da SLSA, e a utilização de um serviço de compilação em vez de ambientes de programadores para compilações é um requisito para o nível 2 da SLSA.
Crie proveniência
A origem da compilação é uma coleção de dados validáveis sobre uma compilação.
Os metadados de proveniência incluem detalhes como os resumos das imagens criadas, as localizações de origem de entrada, a cadeia de ferramentas de compilação e a duração da compilação.
A geração da proveniência da compilação ajuda a:
- Valide se um artefacto criado foi criado a partir de uma localização de origem fidedigna e por um sistema de compilação fidedigno.
- Identificar código injetado a partir de uma localização de origem ou um sistema de compilação não fidedigno.
Pode usar mecanismos de alertas e políticas para usar proativamente dados de proveniência da compilação. Por exemplo, pode criar políticas que apenas permitam implementações de código criadas a partir de origens validadas.
O Cloud Build pode gerar a proveniência da compilação para imagens de contentores que oferecem garantia de nível 3 da SLSA. Para mais informações, consulte o artigo Ver a proveniência da compilação.
Ambiente de compilação efémero
Os ambientes efémeros são ambientes temporários destinados a durar uma única invocação de compilação. Após a compilação, o ambiente é limpo ou eliminado. As compilações efémeras garantem que o serviço de compilação e os passos de compilação são executados num ambiente efémero, como um contentor ou uma VM. Em vez de reutilizar um ambiente de compilação existente, o serviço de compilação aprovisiona um novo ambiente para cada compilação e, em seguida, destrói-o após a conclusão do processo de compilação.
Os ambientes efémeros garantem compilações limpas, uma vez que não existem ficheiros residuais nem definições de ambiente de compilações anteriores que possam interferir com o processo de compilação. Um ambiente não efémero oferece aos atacantes a oportunidade de injetar ficheiros e conteúdo maliciosos. Um ambiente efémero também reduz a sobrecarga de manutenção e as inconsistências no ambiente de compilação.
O Cloud Build configura um novo ambiente de máquina virtual para cada compilação e destrói-o após a compilação.
Políticas de implementação
Pode integrar o Cloud Build com a autorização binária para verificar as atestações de compilação e bloquear implementações de imagens que não são geradas pelo Cloud Build. Este processo pode reduzir o risco de implementação de software não autorizado.
Chaves de encriptação geridas pelo cliente
O Cloud Build oferece conformidade com as chaves de encriptação geridas pelo cliente (CMEK) por predefinição. Os utilizadores não têm de configurar nada especificamente. O Cloud Build oferece conformidade com a CMEK encriptando o disco persistente (PD) no momento da compilação com uma chave efémera gerada para cada compilação. A chave é gerada de forma exclusiva para cada compilação.
Assim que a compilação estiver concluída, a chave é limpa da memória e destruída. Não é armazenada em nenhum local, não é acessível aos engenheiros nem ao pessoal do apoio técnico da Google e não pode ser restaurada. Os dados protegidos com essa chave ficam permanentemente inacessíveis. Para mais informações, consulte o artigo Conformidade com a CMEK no Cloud Build.
Painel de estatísticas de segurança
O Cloud Build inclui um painel Estatísticas de segurança na Google Cloud consola que apresenta uma vista geral de várias métricas de segurança. Pode usar este painel para identificar e mitigar riscos no seu processo de compilação.
Este painel apresenta as seguintes informações:
Níveis da cadeia de fornecimento para artefactos de software (SLSA): identifica o nível de maturidade do seu processo de compilação de software de acordo com a especificação SLSA.
Vulnerabilidades: uma vista geral de quaisquer vulnerabilidades encontradas nos seus artefatos e o nome da imagem que a análise de artefatos analisou. Pode clicar no nome da imagem para ver os detalhes da vulnerabilidade. Por exemplo, na captura de ecrã, pode clicar em java-guestbook-backend.
Detalhes da compilação: detalhes da compilação, como o criador e o link para ver os registos.
Crie proveniência: proveniência para a compilação.
Para saber como pode usar o Cloud Build com outros Google Cloud produtos e funcionalidades para proteger a sua cadeia de abastecimento de software, consulte o artigo Segurança da cadeia de abastecimento de software.
O que se segue?
- Leia o início rápido do Docker para saber como usar o Cloud Build para criar imagens Docker.
- Saiba como criar, testar e implementar artefactos no Cloud Build.
- Saiba mais sobre os diferentes tipos de acionadores do Cloud Build.
- Leia os nossos recursos sobre DevOps e explore o programa de investigação DevOps Research and Assessment.