Automate Cloud Run Job Deployment with Bash Script

github repo

This repository provides a Bash script to automate the building, deployment, and execution of a Cloud Run Job on Google Cloud Platform (GCP). It uses Google Cloud Build to containerize a Python application and deploy it as a Cloud Run Job with minimal manual setup.

Features

  • Automates Docker image build and push to Google Container Registry
  • Dynamically generates a cloudbuild.yaml file for Google Cloud Build
  • Creates and executes a Cloud Run Job in a specified region
  • Uses a service account for authentication and permissions

Tech Stack

  • Shell scripting (Bash)
  • Google Cloud SDK (gcloud CLI)
  • Google Cloud Build
  • Google Cloud Run
  • Docker

Getting Started

Prerequisites

  • Install and configure Google Cloud SDK
  • Install Docker
  • Have a Google Cloud Project with billing enabled
  • Create a service account with appropriate permissions and download its key JSON file to keys/service-account-key.json

Installation

  1. Clone the repository:
git clone https://github.com/justin-napolitano/create_deploy_cloud_run_job.git
cd create_deploy_cloud_run_job
  1. Make the deployment script executable:
chmod +x create_deploy_cloud_run.sh
  1. Ensure your Python application and Dockerfile are in the repository root.

Usage

Run the deployment script with the following arguments:

./create_deploy_cloud_run.sh <PROJECT_NAME> <IMAGE_NAME> <JOB_NAME>
  • <PROJECT_NAME>: Your Google Cloud project ID
  • <IMAGE_NAME>: Desired Docker image name
  • <JOB_NAME>: Name for the Cloud Run Job

Example:

./create_deploy_cloud_run.sh smart-axis-421517 my-python-job my-cloud-run-job

Project Structure

create_deploy_cloud_run_job/
├── create_deploy_cloud_run.sh   # Main deployment script
├── Dockerfile                   # Dockerfile for Python application (assumed)
├── README.md                    # This file
├── index.md                    # Documentation/tutorial

Future Work / Roadmap

  • Add support for customizable deployment regions and service accounts via script arguments
  • Integrate automated tests for the deployment script
  • Add support for environment variables and secrets management
  • Provide support for other container registries beyond Google Container Registry
  • Enhance error handling and logging within the script
  • Include example Python application and Dockerfile for quick start

Note: This README assumes the presence of a Dockerfile and Python application in the repository root, as referenced in the documentation.

hjkl / arrows · / search · :family · :tag · :datefrom · :dateto · ~/entries/slug · Ctrl+N/Ctrl+P for suggestions · Ctrl+C/Ctrl+G to cancel
entries 201/201 · entry -/-
:readyentries 201/201 · entry -/-