GCP 云构建 - 部署调度程序作业



我们的cloudbuild.yaml文件中有以下内容,它正在按预期创建我们的云调度程序作业。

steps:
# deploy cloud scheduler job
- name: "gcr.io/cloud-builders/gcloud"
args: ["scheduler", "jobs", "create", "pubsub", "my_job_name", "--schedule=0 0 * * 1-5", "--topic=my_topic", "--message-body=My Message", "--description=My Description", "--time-zone=America/MyTimeZone"]

但是,一旦再次触发云构建,我们就会收到以下错误:

ERROR: (gcloud.scheduler.jobs.create.pubsub) ALREADY_EXISTS: ....

我们希望将其保留在我们的云构建中,而不是在控制台中手动创建。如果可能的话,我们将如何重组构建步骤和/或在 python37 中添加一个云函数来检查作业是否存在,如果不是创建。如果作业存在且没有更改,请继续。如果存在更改,则更新。

任何反馈,建议或示例将不胜感激!

谢谢

您可以使用gcloud Cloud Builder构建条件,并在cloudbuild.yaml中进行bash。查看此创意答案以获取灵感。

即,在创建计划之前,您使用gcloud beta scheduler jobs list和/或gcloud beta scheduler jobs describe的检查作为条件。

我正在使用管道来忽略此错误。如果调度程序已经存在,它只会打印出错误并保持构建向前推进。

- name: 'gcr.io/cloud-builders/gcloud'
id: scheduler
waitFor: ['sensor']
entrypoint: bash
args:
- '-c'
- |
gcloud scheduler jobs create http NAME --schedule="* * * * *" --uri="uri" ||  echo "Scheduler email-sensor already exist";

不是最好的解决方案,但它有效。

最新更新