Is it somehow possible to trigger a Google Cloud Build with Google Cloud Scheduler periodically?
I can't find anything related to it on the Internet.
The first option is to create a schedule to trigger a build:
gcloud scheduler jobs create http ${PROJECT_ID}-run-trigger \
--schedule='0 12 * * *' \
--uri=https://cloudbuild.googleapis.com/v1/projects/${PROJECT_ID}/triggers/${TRIGGER_ID}:run \
--message-body='{\"branchName\": \"${BRANCH_NAME}\"}' \
--oauth-service-account-email=${PROJECT_ID}@appspot.gserviceaccount.com \
--oauth-token-scope=https://www.googleapis.com/auth/cloud-platform
Note that you can almost run this from within a cloud build. PROJECT_ID is the name of the project and BRANCH_NAME is the name of the branch (development, master, etc.). Both are available from within your cloud build pipeline. TRIGGER_ID can be fetched with the following command:
gcloud beta builds triggers list --format json
Additional to branchName
, you can also specify other attributes in the message body, giving you more flexibility:
The second option is to submit a cloudbuild on a schedule:
gcloud scheduler jobs create http ${PROJECT_ID}-run-build \
--schedule='0 12 * * *' \
--uri=https://cloudbuild.googleapis.com/v1/projects/${PROJECT_ID}/builds \
--message-body-from-file=cloudbuild.json \
--message-body="{\"branchName\": \"${BRANCH_NAME}\"} \
--oauth-service-account-email=${PROJECT_ID}@appspot.gserviceaccount.com \
--oauth-token-scope=https://www.googleapis.com/auth/cloud-platform
Your cloudbuild.json can look something like this:
{
"timeout": "60s",
"steps": [
{
"name": "gcr.io/cloud-builders/gcloud",
"entrypoint": "bash",
"args": [
"-c",
"echo "Hello"
]
},
{
"name": "gcr.io/cloud-builders/gcloud",
"entrypoint": "bash",
"args": [
"-c",
"echo "World"
]
}
],
"substitutions": {
"BRANCH_NAME": "$BRANCH_NAME"
}
}
In Cloud Scheduler we perform a HTTP request on the project's build trigger: https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.triggers/run
For authentication we use a service account.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With