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 idiomas 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 utilização 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 compilações manualmente 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, de forma 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 contenha 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 gcloudferramenta de linha de comandos ou a API REST do Cloud Build.
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 das compilações, 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 criar 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 automáticas 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 muitos problemas de segurança, inconsistências e ineficiências no processo de compilação.
- Permitir compilações locais dá a um atacante 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 para a 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 programador 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 os dados de proveniência de compilação. Por exemplo, pode criar políticas que apenas permitam implementações de código criado a partir de fontes 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 a secção 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 uma oportunidade aos atacantes para injetar ficheiros e conteúdo maliciosos. Um ambiente efémero também reduz as despesas gerais de manutenção e reduz 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 de apoio técnico da Google e não pode ser restaurada. Os dados protegidos através de uma chave deste tipo 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 consola que apresenta uma vista geral de várias métricas de segurança. Google Cloud Pode usar este painel para identificar e mitigar riscos no seu processo de compilação.
Este painel apresenta as seguintes informações:
- Nível das cadeias 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 artefactos e o nome da imagem que a análise de artefactos analisou. Pode clicar no nome da imagem para ver os detalhes da vulnerabilidade.
- Detalhes da compilação: detalhes da compilação, como o criador e o link para ver os registos.
- Criar 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.