{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/cloudbuild-json/latest.json",
  "title": "Google Cloud Build build config file",
  "description": "A build resource in the Cloud Build API.",
  "x-lintel": {
    "source": "https://www.schemastore.org/cloudbuild.json",
    "sourceSha256": "68524c6a0a83f91767cabe96ec92bd59924c336f114551e5254027d14dbdc1f3",
    "fileMatch": [
      "cloudbuild.json",
      "cloudbuild.yaml",
      "cloudbuild.yml",
      "*.cloudbuild.json",
      "*.cloudbuild.yaml",
      "*.cloudbuild.yml"
    ],
    "parsers": [
      "json",
      "yaml"
    ]
  },
  "type": "object",
  "properties": {
    "steps": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/BuildStep"
      },
      "description": "Required. The operations to be performed on the workspace."
    },
    "logsBucket": {
      "description": "Google Cloud Storage bucket where logs should be written. Logs file names will be of the format ${logs_bucket}/log-${build_id}.txt.",
      "markdownDescription": "Google Cloud Storage bucket where logs should be written. See [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.",
      "type": "string"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Tags for organizing and filtering builds."
    },
    "substitutions": {
      "type": "object",
      "description": "Substitutions data for Build resource.",
      "additionalProperties": {
        "type": "string"
      }
    },
    "images": {
      "description": "A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the Build resource's results field. If any of the images fail to be pushed, the build status is marked FAILURE.",
      "markdownDescription": "A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the Build resource's results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "options": {
      "$ref": "#/$defs/BuildOptions",
      "description": "Special options for this build."
    },
    "artifacts": {
      "$ref": "#/$defs/Artifacts",
      "description": "Artifacts produced by the build that should be uploaded upon successful completion of all build steps."
    },
    "timeout": {
      "$ref": "#/$defs/Timeout",
      "description": "Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be TIMEOUT.",
      "markdownDescription": "Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be `TIMEOUT`.",
      "default": "600s"
    },
    "secrets": {
      "description": "Secrets to decrypt using Cloud Key Management Service.",
      "type": "array",
      "items": {
        "$ref": "#/$defs/Secret"
      }
    },
    "serviceAccount": {
      "description": "Use this field to specify the IAM service account to use at build time.",
      "type": "string"
    },
    "queueTtl": {
      "description": "Specifies the amount of time a build can be queued. If a build is in the queue for longer than the value set in queueTtl, the build expires and the build status is set to EXPIRED.",
      "markdownDescription": "Specifies the amount of time a build can be queued. If a build is in the queue for longer than the value set in `queueTtl`, the build expires and the build status is set to `EXPIRED`.",
      "type": "string",
      "pattern": "^\\d+(\\.\\d{0,9})?s$",
      "examples": [
        "3.5s",
        "120s"
      ],
      "default": "3600s"
    }
  },
  "required": [
    "steps"
  ],
  "$defs": {
    "automapSubstitutions": {
      "description": "If set to true, automatically map all subsistutions and make them available as environment variables in a single step. If set to false, ignore substitutions for that step. Can be used for a build step or for an entire build.",
      "markdownDescription": "If set to true, automatically map all subsistutions  and make them available as environment variables in a single step. If set to false, ignore substitutions for that step. Can be used for a build step or for an entire build.",
      "type": "boolean",
      "examples": [
        true,
        false
      ]
    },
    "BuildStep": {
      "description": "A step in the build pipeline.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Required. The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary.\n\nThe Docker daemon's cache will already have the latest versions of all of the officially supported build steps. The Docker daemon will also have cached many of the layers for some popular images, like \"ubuntu\", \"debian\", but they will be refreshed at the time you attempt to use them.\n\nIf you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step.",
          "markdownDescription": "Required. The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary.\n\nThe Docker daemon's cache will already have the latest versions of all of the [officially supported build steps](https://github.com/GoogleCloudPlatform/cloud-builders). The Docker daemon will also have cached many of the layers for some popular images, like `ubuntu`, `debian`, but they will be refreshed at the time you attempt to use them.\n\nIf you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step.",
          "type": "string"
        },
        "allowFailure": {
          "description": "In a build step, if you set the value of the allowFailure field to true, and the build step fails, then the build succeeds as long as all other build steps in that build succeed.",
          "markdownDescription": "In a build step, if you set the value of the `allowFailure` field to `true`, and the build step fails, then the build succeeds as long as all other build steps in that build succeed.",
          "type": "boolean"
        },
        "allowExitCodes": {
          "description": "Specify that a build step failure can be ignored when that step returns a particular exit code.",
          "type": "array",
          "items": {
            "type": "integer"
          },
          "examples": [
            1,
            2
          ]
        },
        "automapSubstitutions": {
          "$ref": "#/$defs/automapSubstitutions"
        },
        "waitFor": {
          "description": "The ID(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in waitFor have completed successfully. If waitFor is empty, this build step will start when all previous build steps in the list have completed successfully. If waitFor is set to '-', the step runs immediately when the build starts.",
          "markdownDescription": "The `id`(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in `waitFor` have completed successfully. If `waitFor` is empty, this build step will start when all previous build steps in the list have completed successfully. If `waitFor` is set to `'-'`, the step runs immediately when the build starts.",
          "type": "array",
          "items": {
            "type": "string",
            "examples": [
              [
                "-"
              ],
              [
                "terraform-init",
                "terraform-apply"
              ]
            ]
          }
        },
        "env": {
          "description": "A list of environment variable definitions to be used when running a step. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".",
          "markdownDescription": "A list of environment variable definitions to be used when running a step. The elements are of the form `KEY=VALUE` for the environment variable `KEY` being given the value `VALUE`.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "entrypoint": {
          "description": "Entrypoint to be used instead of the build step image's default entrypoint. If unset, the image's default entrypoint is used.",
          "markdownDescription": "Entrypoint to be used instead of the build step image's default `entrypoint`. If unset, the image's default `entrypoint` is used.",
          "type": "string"
        },
        "script": {
          "description": "Specify a shell script to execute in the step. If you specify script in a build step, you cannot specify args or entrypoint in the same step.",
          "markdownDescription": "Specify a shell script to execute in the step. If you specify script in a build step, you cannot specify `args` or `entrypoint` in the same step.",
          "type": "string"
        },
        "volumes": {
          "description": "List of volumes to mount into the build step. Each volume is created as an empty volume prior to execution of the build step. Upon completion of the build, volumes and their contents are discarded. Using a named volume in only one step is not valid as it is indicative of a build request with an incorrect configuration.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Volume"
          }
        },
        "args": {
          "description": "A list of arguments that will be presented to the step when it is started.\n\nIf the image used to run the step's container has an entrypoint, the args are used as arguments to that entrypoint. If the image does not define an entrypoint, the first element in args is used as the entrypoint, and the remainder will be used as arguments.",
          "markdownDescription": "A list of arguments that will be presented to the step when it is started.\n\nIf the image used to run the step's container has an `entrypoint`, the `args` are used as arguments to that `entrypoint`. If the image does not define an `entrypoint`, the first element in `args` is used as the `entrypoint`, and the remainder will be used as arguments.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "timeout": {
          "$ref": "#/$defs/Timeout",
          "description": "Time limit for executing this build step. If not defined, the step has no time limit and will be allowed to continue to run until either it completes or the build itself times out."
        },
        "id": {
          "description": "Unique identifier for this build step, used in waitFor to reference this build step as a dependency.",
          "markdownDescription": "Unique identifier for this build step, used in `waitFor` to reference this build step as a dependency.",
          "type": "string"
        },
        "secretEnv": {
          "description": "A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's Secret.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "dir": {
          "description": "Working directory to use when running this step's container.\n\nIf this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a volume for that path is specified. If the build specifies a RepoSource with dir and a step with a dir, which specifies an absolute path, the RepoSource dir is ignored for the step's execution.",
          "markdownDescription": "Working directory to use when running this step's container.\n\nIf this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a volume for that path is specified. If the build specifies a `RepoSource` with `dir` and a step with a `dir`, which specifies an absolute path, the `RepoSource` `dir` is ignored for the step's execution.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "BuildOptions": {
      "description": "Optional arguments to enable specific features of builds.",
      "type": "object",
      "properties": {
        "automapSubstitutions": {
          "$ref": "#/$defs/automapSubstitutions"
        },
        "machineType": {
          "description": "Compute Engine machine type on which to run the build.",
          "type": "string",
          "enum": [
            "E2_HIGHCPU_8",
            "E2_HIGHCPU_32",
            "E2_MEDIUM",
            "N1_HIGHCPU_8",
            "N1_HIGHCPU_32",
            "UNSPECIFIED"
          ],
          "enumDescriptions": [
            "e2 HighCPU: 8 vCPUs, 8GB RAM",
            "e2 HighCPU: 32 vCPUs, 32GB RAM",
            "e2 Medium: 1 vCPU, 4GB RAM",
            "n1 HighCPU: 8 vCPUs, 7.2GB RAM",
            "n1 HighCPU: 32 vCPUs, 28.8GB RAM",
            "e2 Standard: 2 vCPU, 8GB RAM"
          ],
          "default": "UNSPECIFIED"
        },
        "volumes": {
          "description": "Global list of volumes to mount for ALL build steps. Each volume is created as an empty volume prior to starting the build process. Upon completion of the build, volumes and their contents are discarded. Global volume names and paths cannot conflict with the volumes defined a build step. Using a global volume in a build with only one step is not valid as it is indicative of a build request with an incorrect configuration.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/Volume"
          }
        },
        "logStreamingOption": {
          "description": "Option to define build log streaming behavior to Google Cloud Storage.",
          "type": "string",
          "enum": [
            "STREAM_DEFAULT",
            "STREAM_ON",
            "STREAM_OFF"
          ],
          "enumDescriptions": [
            "Service may automatically determine build log streaming behavior.",
            "Build logs should be streamed to Google Cloud Storage.",
            "Build logs should not be streamed to Google Cloud Storage; they will be written when the build is completed."
          ]
        },
        "pool": {
          "description": "Set the value of this field to the resource name of the private pool to run the build.",
          "type": "object",
          "properties": {
            "name": {
              "description": "Required. The full resource name of the private pool of the form 'projects/$PRIVATEPOOL_PROJECT_ID/locations/$REGION/workerPools/$PRIVATEPOOL_ID'.",
              "markdownDescription": "Required. The full resource name of the private pool of the form `projects/$PRIVATEPOOL_PROJECT_ID/locations/$REGION/workerPools/$PRIVATEPOOL_ID`.",
              "type": "string"
            }
          },
          "required": [
            "name"
          ],
          "additionalProperties": false
        },
        "env": {
          "description": "A list of global environment variable definitions that will exist for all build steps in this build.\n\nIf a variable is defined both globally and in a build step, the variable will use the build step value. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".",
          "markdownDescription": "A list of global environment variable definitions that will exist for all build steps in this build.\n\nIf a variable is defined both globally and in a build step, the variable will use the build step value. The elements are of the form `KEY=VALUE` for the environment variable `KEY` being given the value `VALUE`.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "logging": {
          "description": "Option to specify the logging mode, which determines where the logs are stored.",
          "type": "string",
          "enum": [
            "LOGGING_UNSPECIFIED",
            "LEGACY",
            "GCS_ONLY",
            "CLOUD_LOGGING_ONLY",
            "NONE"
          ],
          "enumDescriptions": [
            "The service determines the logging mode. The default is LEGACY. Do not rely on the default logging behavior as it may change in the future.",
            "Stackdriver logging and Cloud Storage logging are enabled.",
            "Only Cloud Storage logging is enabled.",
            "Only Cloud Logging is enabled. Note that logs for both the Cloud Console UI and Cloud SDK are based on Cloud Storage logs, so neither will provide logs if this option is chosen.",
            "Turn off all logging. No build logs will be captured."
          ]
        },
        "defaultLogsBucketBehavior": {
          "description": "Configure Cloud Build to create a default logs bucket within your own project in the same region as your build.",
          "type": "string",
          "enum": [
            "DEFAULT_LOGS_BUCKET_BEHAVIOR_UNSPECIFIED",
            "REGIONAL_USER_OWNED_BUCKET"
          ],
          "enumDescriptions": [
            "Unspecified",
            "Configure Cloud Build to use regionalized, user-owned logs."
          ]
        },
        "requestedVerifyOption": {
          "description": "Requested verifiability options.",
          "type": "string",
          "enum": [
            "NOT_VERIFIED",
            "VERIFIED"
          ],
          "enumDescriptions": [
            "Not a verifiable build. (default)",
            "Verified build."
          ]
        },
        "substitutionOption": {
          "description": "Option to specify behavior when there is an error in the substitution checks.",
          "type": "string",
          "enum": [
            "MUST_MATCH",
            "ALLOW_LOOSE"
          ],
          "enumDescriptions": [
            "Fails the build if error in substitutions checks, like missing a substitution in the template or in the map.",
            "Do not fail the build if error in substitutions checks."
          ]
        },
        "dynamicSubstitutions": {
          "description": "Use this option to explicitly enable or disable bash parameter expansion in substitutions.\n\nIf your build is invoked by a trigger, the dynamicSubstitutions field is always set to true and does not need to be specified in your build config file. If your build is invoked manually, you must set the dynamicSubstitutions field to true for bash parameter expansions to be interpreted when running your build.",
          "markdownDescription": "Use this option to explicitly enable or disable bash parameter expansion in substitutions.\n\nIf your build is invoked by a trigger, the `dynamicSubstitutions` field is always set to `true` and does not need to be specified in your build config file. If your build is invoked manually, you must set the `dynamicSubstitutions` field to `true` for bash parameter expansions to be interpreted when running your build.",
          "type": "boolean"
        },
        "diskSizeGb": {
          "description": "Requested disk size for the VM that runs the build.\n\nNote that this is *NOT* \"disk free\"; some of the space will be used by the operating system and build utilities. Also note that this is the minimum disk size that will be allocated for the build -- the build may run with a larger disk than requested. At present, the maximum disk size is 2000GB; builds that request more than the maximum are rejected with an error.",
          "oneOf": [
            {
              "type": "integer",
              "minimum": 1,
              "maximum": 2000
            },
            {
              "type": "string",
              "pattern": "^(?:[1-9]\\d{0,2}|1\\d{3}|2000)$"
            }
          ],
          "examples": [
            30,
            50,
            "100",
            200,
            "300"
          ]
        },
        "secretEnv": {
          "description": "A list of global environment variables, which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's Secret. These variables will be available to all build steps in this build.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "sourceProvenanceHash": {
          "description": "Requested hash for SourceProvenance.",
          "type": "array",
          "items": {
            "enum": [
              "NONE",
              "SHA256",
              "MD5"
            ],
            "type": "string"
          },
          "enumDescriptions": [
            "No hash requested.",
            "Use a sha256 hash.",
            "Use a md5 hash."
          ]
        }
      },
      "additionalProperties": false
    },
    "Secret": {
      "description": "Pairs a set of secret environment variables containing encrypted values with the Cloud KMS key to use to decrypt the value.",
      "type": "object",
      "properties": {
        "kmsKeyName": {
          "type": "string",
          "description": "Cloud KMS key name to use to decrypt these envs."
        },
        "secretEnv": {
          "type": "object",
          "description": "Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step. Values can be at most 64 KB in size. There can be at most 100 secret values across all of a build's secrets.",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "Artifacts": {
      "description": "Artifacts produced by a build that should be uploaded upon successful completion of all build steps.",
      "type": "object",
      "properties": {
        "objects": {
          "$ref": "#/$defs/ArtifactObjects",
          "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE.",
          "markdownDescription": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked `FAILURE`."
        },
        "goModules": {
          "description": "Allows you to upload non-container Go modules to Go repositories in Artifact Registry.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/GoModules"
          }
        },
        "mavenArtifacts": {
          "description": "Allows you to upload non-container Java artifacts to Maven repositories in Artifact Registry.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/MavenArtifacts"
          }
        },
        "pythonPackages": {
          "description": "Allows you to upload Python packages to Artifact Registry.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/PythonPackages"
          }
        },
        "npmPackages": {
          "description": "Uploads your built NPM packages to supported repositories.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/NpmPackages"
          }
        }
      }
    },
    "ArtifactObjects": {
      "description": "Files in the workspace to upload to Cloud Storage upon successful completion of all build steps.",
      "type": "object",
      "properties": {
        "location": {
          "description": "Cloud Storage bucket and optional object path, in the form \"gs://bucket/path/to/somewhere/\". Files in the workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix.",
          "markdownDescription": "Cloud Storage bucket and optional object path, in the form `gs://bucket/path/to/somewhere/`. See the [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements). Files in the workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix.",
          "type": "string"
        },
        "paths": {
          "description": "Path globs used to match files in the build's workspace.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "GoModules": {
      "description": "Allows you to upload non-container Go modules to Go repositories in Artifact Registry.",
      "type": "object",
      "required": [
        "repositoryName",
        "repositoryLocation",
        "repositoryProject_id",
        "sourcePath",
        "modulePath",
        "moduleVersion"
      ],
      "properties": {
        "repositoryName": {
          "description": "The name of your Go repository in Artifact Registry.",
          "type": "string"
        },
        "repositoryLocation": {
          "description": "The location for your repository in Artifact Registry.",
          "type": "string"
        },
        "repositoryProject_id": {
          "description": "The ID of the Google Cloud project that contains your Artifact Registry Go repository.",
          "type": "string"
        },
        "sourcePath": {
          "description": "The path to the go.mod file in the build's workspace.",
          "type": "string"
        },
        "modulePath": {
          "description": "The local directory that contains the Go module to upload. It is recommended to use an absolute path for the value.",
          "type": "string"
        },
        "moduleVersion": {
          "description": "The version of the Go module.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "MavenArtifacts": {
      "description": "Allows you to upload non-container Java artifacts to Maven repositories in Artifact Registry.",
      "type": "object",
      "required": [
        "repository",
        "path",
        "artifactId",
        "groupId",
        "version"
      ],
      "properties": {
        "repository": {
          "description": "Required. Name of the Artifact Registry repository to store Java artifacts.",
          "type": "string"
        },
        "path": {
          "description": "Required. The application file path.",
          "type": "string"
        },
        "artifactId": {
          "description": "Required. Name of your package file created from your build step",
          "type": "string"
        },
        "groupId": {
          "description": "Required. Uniquely identifies your project across all Maven projects, in the format com.mycompany.app.",
          "markdownDescription": "Required. Uniquely identifies your project across all Maven projects, in the format `com.mycompany.app`.",
          "type": "string"
        },
        "version": {
          "description": "Required. The version number for your application.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "PythonPackages": {
      "description": "Allows you to upload Python packages to Artifact Registry.",
      "type": "object",
      "required": [
        "repository",
        "paths"
      ],
      "properties": {
        "repository": {
          "description": "Required. Name of the Artifact Registry repository to store the Python package.",
          "type": "string"
        },
        "paths": {
          "description": "Required. The package file paths.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "NpmPackages": {
      "description": "Uploads your built NPM packages to supported repositories.",
      "type": "object",
      "required": [
        "repository",
        "packagePath"
      ],
      "properties": {
        "repository": {
          "description": "Required. Name of the Artifact Registry repository to store the NPM package.",
          "type": "string"
        },
        "packagePath": {
          "description": "Required. The path for the local directory containing the NPM package that you want to upload to Artifact Registry. Google recommends using an absolute path. Your packagePath value can be . to use the current working directory, but the field cannot be omitted or left empty. This directory must contain a package.json file.",
          "markdownDescription": "Required. The path for the local directory containing the NPM package that you want to upload to Artifact Registry. Google recommends using an absolute path. Your `packagePath` value can be `.` to use the current working directory, but the field cannot be omitted or left empty. This directory must contain a `package.json` file.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Volume": {
      "description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.",
      "type": "object",
      "properties": {
        "name": {
          "description": "Name of the volume to mount. Volume names must be unique per build step and must be valid names for Docker volumes. Each named volume must be used by at least two build steps.",
          "type": "string"
        },
        "path": {
          "description": "Path at which to mount the volume. Paths must be absolute and cannot conflict with other volume paths on the same build step or with certain reserved volume paths.",
          "type": "string"
        }
      }
    },
    "Timeout": {
      "description": "Time limit for executing the build or particular build step. The timeout field of a build step specifies the amount of time the step is allowed to run, and the timeout field of a build specifies the amount of time the build is allowed to run.",
      "markdownDescription": "Time limit for executing the build or particular build step. The `timeout` field of a build step specifies the amount of time the step is allowed to run, and the `timeout` field of a build specifies the amount of time the build is allowed to run.",
      "type": "string",
      "pattern": "^\\d+(\\.\\d{0,9})?s$",
      "examples": [
        "3.5s",
        "120s"
      ]
    }
  },
  "$comment": "See the Cloud Build config schema at https://cloud.google.com/build/docs/build-config-file-schema for the definitions."
}
