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

Google cloud platform GCP云构建-部署调度程序作业,google-cloud-platform,google-cloud-functions,google-cloud-build,google-cloud-scheduler,Google Cloud Platform,Google Cloud Functions,Google Cloud Build,Google Cloud Scheduler,我们的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", "--mes

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

如有任何反馈、建议或示例,将不胜感激


谢谢

您可以在cloudbuild.yaml中使用gcloud Cloud Builder和bash构建条件。看看有没有灵感


也就是说,在创建计划之前,您使用检查
gcloud beta调度器作业列表
和/或
gcloud beta调度器作业将
描述为一个条件

我正在使用管道忽略此错误。如果调度程序已经存在,它只会打印出错误并使构建继续进行

- 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";

虽然不是最好的解决方案,但它确实有效。

在创建具有给定名称的作业之前删除具有给定名称的作业的步骤如何?@Kolban这可能是一个可行的解决方案。我会和我的团队核实一下。谢谢