Summary
This post will demonstrate the usage of Google Cloud's serverless deployment pipeline - Cloud Build. The use case for this will be a fairly simple Python app that exposes a REST interface via Flask + NLTK for tokenization of text.
Overall Architecture
The diagram below depicts the Cloud Build pipeline.
Python Application Organization
Cloud Build Steps
Cloud Build is orchestrated from a cloudbuild.yaml file. Example code below with associated diagram.
steps:
#Unit Test
- name: python
entrypoint: /bin/sh
args: ["-c",
"pip install -r requirements.txt &&\
python -c \"import nltk; nltk.download('popular', download_dir='/home/nltk_data')\" &&\
export NLTK_DATA=/home/nltk_data &&\
python -m unittest"]
#Docker Build
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t',
'us-central1-docker.pkg.dev/$PROJECT_ID/$_REPO_NAME/cleaner', '.']
#Docker push to Google Artifact Registry
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'us-central1-docker.pkg.dev/$PROJECT_ID/$_REPO_NAME/cleaner']
#Deploy to Cloud Run
- name: google/cloud-sdk
args: ['gcloud', 'run', 'deploy', 'cleaner',
'--image=us-central1-docker.pkg.dev/$PROJECT_ID/$_REPO_NAME/cleaner',
'--region', 'us-central1', '--platform', 'managed',
'--allow-unauthenticated']
Screenshots of Results
Cloud Build
Artifact Registry
Cloud Run
Source
Copyright ©1993-2024 Joey E Whelan, All rights reserved.






