Build and create a Go job in Cloud Run
Before you begin
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project. Learn how to check if billing is enabled on a project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project. Learn how to check if billing is enabled on a project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Writing the sample job
To write a job in Go:
Create a new directory named
jobs
and change directory into it:mkdir jobs cd jobs
In the same directory, create a
main.go
file for the actual job code. Copy the following sample lines into it:Cloud Run jobs allows users to specify the number of tasks the job is to execute. This sample code shows how to use the built-in
CLOUD_RUN_TASK_INDEX
environment variable. Each task represents one running copy of the container. Note that tasks are usually executed in parallel. Using multiple tasks is useful if each task can independently process a subset of your data.Each task is aware of its index, stored in the
CLOUD_RUN_TASK_INDEX
environment variable. The built-inCLOUD_RUN_TASK_COUNT
environment variable contains the number of tasks supplied at job execution time via the--tasks
parameter.The code shown also shows how to retry tasks, using the built-in
CLOUD_RUN_TASK_ATTEMPT
environment variable, which contains the number of times this task has been retried, starting at 0 for the first attempt and incrementing by 1 for every successive retry, up to--max-retries
.The code also lets you generate failures as a way to test retries and to generate error logs so you can see what those look like.
Create a
go.mod
file with the following contents:
Your code is complete and ready to be packaged in a container.
Build jobs container and send to repository
Important: This quickstart assumes that you have owner or editor roles in the project you are using for the quickstart. Otherwise, refer to Cloud Run deployment permissions, Cloud Build permissions, and Artifact Registry permissions for the permissions required.
Use a buildpack to build the container:gcloud builds submit --pack image=gcr.io/PROJECT_ID/logger-job
Create a job in Cloud Run
To create a job using the container you just built:
gcloud run jobs create job-quickstart \ --image gcr.io/PROJECT_ID/logger-job \ --tasks 50 \ --set-env-vars SLEEP_MS=10000 \ --set-env-vars FAIL_RATE=0.5 \ --max-retries 5 \ --region REGION \ --project=PROJECT_ID
where PROJECT_ID is your project ID and REGION is your
region, for example, us-central1
. Note that you can change the
various parameters to whatever values you want to use for your testing purposes.
SLEEP_MS
simulates work and FAIL_RATE
causes X
% of tasks to fail so you
can experiment with parallelism and retrying failing tasks.
Execute a job in Cloud Run
To execute the job you just created:
gcloud run jobs execute job-quickstart
When you are prompted for a region, select the region of your choice, for
example us-central1
.
Test locally
You can run the job locally:
docker run --rm -e FAIL_RATE=0.9 -e SLEEP_MS=1000 gcr.io/PROJECT_ID/logger-jobwhere PROJECT_ID is your project ID.
What's next
For more information on building a container from code source and pushing to a repository, see: