Nesta página, descrevemos como configurar o Cloud Build para criar, testar, conteinerizar e implantar aplicativos Python.
O Cloud Build permite que você use qualquer imagem de contêiner disponível publicamente
para executar suas tarefas de desenvolvimento, incluindo a criação, o teste, a contenção, o upload para o Artifact Registry, a implantação e o salvamento dos logs de build. O público
Imagem python
do Docker Hub
vem pré-instalado com as ferramentas python
e pip
. É possível configurar o Cloud Build para usar essas ferramentas para instalar dependências, criar e executar testes de unidade usando essas ferramentas.
Antes de começar
Nas instruções desta página, pressupomos que você está familiarizado com o Python. Além disso:
-
Enable the Cloud Build, Cloud Run, Cloud Storage and Artifact Registry APIs.
- Para executar os comandos
gcloud
nesta página, instale a Google Cloud CLI. - Tenha seu projeto Python em mãos, incluindo o arquivo
requirements.txt
. Você precisa de umDockerfile
com o código-fonte. - Se você quiser armazenar o contêiner criado no Artifact Registry, crie um repositório do Docker no Artifact Registry.
- Para armazenar registros de teste no Cloud Storage, crie um bucket no Cloud Storage.
Permissões do IAM obrigatórias
Para armazenar registros de teste no Logging, conceda o papel de Criador de objetos do Storage (
roles/storage.objectCreator
) ao bucket do Cloud Storage para a conta de serviço do build.Para armazenar imagens criadas no Artifact Registry, conceda o papel de Gravador do Artifact Registry (
roles/artifactregistry.writer
) à conta de serviço do build.
Para instruções sobre como conceder esses papéis, consulte Como conceder um papel usando a página do IAM.
Como configurar builds do Python
Nesta seção, você verá um exemplo de arquivo de configuração de versão para um aplicativo Python. Ele tem etapas de versão para instalar requisitos, adicionar testes de unidade e, após a aprovação, criar e implantar o aplicativo.
No diretório raiz do projeto, crie um arquivo de configuração do Cloud Build chamado
cloudbuild.yaml
.Requisitos de instalação: a imagem
python
do Docker Hub vem pré-instalada compip
. Para instalar dependências depip
, adicione uma etapa de versão com os seguintes campos:name
: defina o valor desse campo comopython
para usar a imagem Python do Docker Hub nesta tarefa.entrypoint
: a definição desse campo substitui o ponto de entrada padrão da imagem referenciada emname
. Defina o valor desse campo comopip
para invocarpip
como o entrypoint da etapa de versão e execute comandospip
.args
: o campoargs
de uma etapa de criação recebe uma lista de argumentos e os passa para a imagem referenciada pelo camponame
. Transmita os argumentos para executar o comandopip install
nesse campo. A sinalização--user
no comandopip install
garante que as etapas subsequentes de versão possam acessar os módulos instalados nesta etapa de versão.
A etapa de criação a seguir adiciona argumentos para instalar requisitos do arquivo
requirements.txt
:Adicionar testes de unidade: se você definiu testes de unidade no aplicativo usando um framework de teste, como
pytest
, configure o Cloud Build para executar os testes adicionando os campos a seguir em uma etapa do build:name
: defina o valor desse campo comopython
para usar a imagem Python do Docker Hub na tarefa.entrypoint
: defina o valor desse campo comopython
para executar comandospython
.args
: adicione os argumentos para executar o comandopython pytest
.
A etapa de criação a seguir salva a saída do registro
pytest
em um arquivo XML JUNIT. O nome desse arquivo é construído usando a versão curta do ID de confirmação associada ao seu build. Uma próxima etapa de versão salvará os registros nesse arquivo no Cloud Storage.Crie o contêiner no app: depois de adicionar a etapa de versão para garantir que os testes passaram, você pode criar o aplicativo. O Cloud Build fornece uma imagem do Docker predefinida que pode ser usada para contentorizar o aplicativo Python. Para contentorizar o aplicativo, adicione os seguintes campos em uma etapa do build
name
: defina o valor desse campo comogcr.io/cloud-builders/docker
para usar a imagem do Docker pré-criada para sua tarefa.args
: adicione os argumentos do comandodocker build
como valores para este campo.
A etapa de criação a seguir cria a imagem
myimage
e a marca com a versão curta do seu ID de confirmação. A etapa de versão usa as substituições padrão para o ID do projeto, nome do repositório e valores SHA curtos. Portanto, esses valores são substituídos automaticamente no tempo de criação.Envie o contêiner para o Artifact Registry: é possível armazenar o contêiner criado no Artifact Registry, que é um serviço do Google Cloud que pode ser usado para armazenar, gerenciar e proteger artefatos de versão. Para isso, é necessário ter um repositório existente do Docker no Artifact Registry. Para configurar o Cloud Build para armazenar a imagem em um repositório do Artifact Registry no Docker, adicione uma etapa de versão com os seguintes campos:
name
: defina o valor desse campo comogcr.io/cloud-builders/docker
para usar a imagem oficial do builderdocker
do Container Registry para sua tarefa.args
: adicione os argumentos do comandodocker push
como valores deste campo. Para o URL de destino, insira o repositório Docker do Artifact Registry em que você quer armazenar a imagem.
A etapa de criação a seguir envia a imagem que você criou na etapa anterior para o Artifact Registry:
Opcional: se você quiser que o Cloud Build gere informações de procedência de build Supply chain Levels for Software Artifacts (SLSA), faça o seguinte:
- Use o campo
images
na etapa de build em vez de usar uma etapa de buildDocker push
separada. - Adicione
requestedVerifyOption: VERIFIED
à seçãooptions
do arquivo de configuração de build.
Implantar o contêiner no Cloud Run: para implantar a imagem no Cloud Run, adicione uma etapa de versão com os seguintes campos:
name
: defina o valor deste campo comogoogle/cloud-sdk
para usar a CLI gcloud imagem para invocar o comandogcloud
e implantar a imagem no Cloud Run.args
: adicione os argumentos do comandogcloud run deploy
como os valores deste campo.
A etapa de criação a seguir implanta a imagem criada anteriormente no Cloud Run:
Salvar registros de teste no Cloud Storage: é possível configurar o Cloud Build para armazenar todos os registros de teste no Cloud Storage especificando um local e um caminho do bucket existente para os registros de teste. A etapa de criação a seguir armazena os registros de teste que você salvou no arquivo XML JUNIT em um bucket do Cloud Storage:
O snippet a seguir mostra o arquivo de configuração da compilação completo para todas as etapas descritas acima:
Iniciar o build: manualmente ou usando gatilhos de build.
Quando o build for concluído, você poderá acessar os detalhes do repositório. no Artifact Registry.
Também é possível conferir os metadados da procedência do build e validar a procedência.
A seguir
- Saiba como ver os resultados da build.
- Saiba como proteger versões.
- Saiba como criar aplicativos Python independentes.
- Saiba como usar dependências privadas.
- Saiba como resolver erros de build.