我正在尝试在
google_cloudbuild_trigger
中动态生成块
resource "google_cloudbuild_trigger" "push_to_production" {
name = "cloudbuild-workers"
location = var.region
build {
dynamic "step" {
for_each = local.workers
id = "deploy-worker-${each.value}"
name = "gcr.io/google.com/cloudsdktool/cloud-sdk"
entrypoint = "gcloud"
args = ["run", "services", "update", each.value, "--platform=managed", "--image=$_WORKER_IMG", "--region=$_REGION", "--quiet"]
}
}
}
这应该在我的触发器中为 local.workers 中的每个工作配置生成构建步骤列表。但我看到的是每个属性都有错误。
此处不需要名为“id”的参数。
此处不需要名为“name”的参数。
此处不需要名为“entrypoint”的参数。
此处不需要名为“args”的参数。
这种结构方式有问题吗?
使用
dynamic
块时,还必须有content
,即:
resource "google_cloudbuild_trigger" "push_to_production" {
name = "cloudbuild-workers"
location = var.region
build {
dynamic "step" {
for_each = local.workers
content {
id = "deploy-worker-${step.value}"
name = "gcr.io/google.com/cloudsdktool/cloud-sdk"
entrypoint = "gcloud"
args = ["run", "services", "update", each.value, "--platform=managed", "--image=$_WORKER_IMG", "--region=$_REGION", "--quiet"]
}
}
}
}
此外,由于您使用的是
dynamic
块,因此 each
对象基本上被替换为 iterator。如果您不提供名称,则迭代器名称通常与动态块的名称相对应。但是,即使这个语法现在是正确的,我也不认为它会起作用,因为该资源的 build
块表示需要 step
块。