GCP Cloud Build-部署调度程序作业

时间:2020-02-14 17:14:13

标签: 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", "--message-body=My Message", "--description=My Description", "--time-zone=America/MyTimeZone"]

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

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

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

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

谢谢

2 个答案:

答案 0 :(得分:1)

您可以在您的 cloudbuild.yaml 中使用gcloud Cloud Builder和bash构建条件。参见this creative answer以获取灵感。

I.E。在创建计划之前,您可以将gcloud beta scheduler jobs list和/或gcloud beta scheduler jobs describe用作检查条件。

答案 1 :(得分:0)

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

dynamic "statement" {
    for_each = var.roles
    iterator = role
    content {
      effect = "Allow"
      principals {
        identifiers = [
          role.value
        ]
        type = "AWS"
      }
      actions = [
        "sts:AssumeRole"
      ]
    }
  }

不是最好的解决方案,但它可以工作。