<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="cloudbuild_v1.html">Cloud Build API</a> . <a href="cloudbuild_v1.projects.html">projects</a> . <a href="cloudbuild_v1.projects.builds.html">builds</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#cancel">cancel(projectId, id, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Cancels a build in progress.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(projectId, body=None, parent=None, x__xgafv=None)</a></code></p>
<p class="firstline">Starts a build with the specified configuration. This method returns a long-running `Operation`, which includes the build ID. Pass the build ID to `GetBuild` to determine the build status (such as `SUCCESS` or `FAILURE`).</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, id, name=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns information about a previously requested build. The `Build` that is returned includes its status (such as `SUCCESS`, `FAILURE`, or `WORKING`), and timing information.</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, filter=None, pageSize=None, pageToken=None, parent=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists previously requested builds. Previously requested builds may still be in-progress, or may have finished successfully or unsuccessfully.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#retry">retry(projectId, id, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new build based on the specified build. This method creates a new build using the original build request, which may or may not result in an identical build. For triggered builds: * Triggered builds resolve to a precise revision; therefore a retry of a triggered build will result in a build that uses the same revision. For non-triggered builds that specify `RepoSource`: * If the original build built from the tip of a branch, the retried build will build from the tip of that branch, which may not be the same revision as the original build. * If the original build specified a commit sha or revision ID, the retried build will use the identical source. For builds that specify `StorageSource`: * If the original build pulled source from Google Cloud Storage without specifying the generation of the object, the new build will use the current object, which may be different from the original build source. * If the original build pulled source from Cloud Storage and specified the generation of the object, the new build will attempt to use the same object, which may or may not be available depending on the bucket's lifecycle management settings.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="cancel">cancel(projectId, id, body=None, x__xgafv=None)</code>
  <pre>Cancels a build in progress.

Args:
  projectId: string, Required. ID of the project. (required)
  id: string, Required. ID of the build. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to cancel an ongoing build.
  &quot;id&quot;: &quot;A String&quot;, # Required. ID of the build.
  &quot;name&quot;: &quot;A String&quot;, # The name of the `Build` to retrieve. Format: `projects/{project}/locations/{location}/builds/{build}`
  &quot;projectId&quot;: &quot;A String&quot;, # Required. ID of the project.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A build resource in the Cloud Build API. At a high level, a `Build` describes where to find source code, how to build it (for example, the builder image to run on the source), and where to store the built artifacts. Fields can include the following variables, which will be expanded when the build is created: - $PROJECT_ID: the project ID of the build. - $BUILD_ID: the autogenerated ID of the build. - $REPO_NAME: the source repository name specified by RepoSource. - $BRANCH_NAME: the branch name specified by RepoSource. - $TAG_NAME: the tag name specified by RepoSource. - $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or resolved from the specified branch or tag. - $SHORT_SHA: first 7 characters of $REVISION_ID or $COMMIT_SHA.
  &quot;artifacts&quot;: { # Artifacts produced by a build that should be uploaded upon successful completion of all build steps. # Artifacts produced by the build that should be uploaded upon successful completion of all build steps.
    &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images will be pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the Build resource&#x27;s results field. If any of the images fail to be pushed, the build is marked FAILURE.
      &quot;A String&quot;,
    ],
    &quot;objects&quot;: { # Files in the workspace to upload to Cloud Storage upon successful completion of all build steps. # 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&#x27;s credentials. The location and generation of the uploaded objects will be stored in the Build resource&#x27;s results field. If any objects fail to be pushed, the build is marked FAILURE.
      &quot;location&quot;: &quot;A String&quot;, # Cloud Storage bucket and optional object path, in the form &quot;gs://bucket/path/to/somewhere/&quot;. (see [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.
      &quot;paths&quot;: [ # Path globs used to match files in the build&#x27;s workspace.
        &quot;A String&quot;,
      ],
      &quot;timing&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for pushing all artifact objects.
        &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
        &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
      },
    },
  },
  &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
  &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
  &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
  &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
    &quot;A String&quot;,
  ],
  &quot;logUrl&quot;: &quot;A String&quot;, # Output only. URL to logs for this build in Google Cloud Console.
  &quot;logsBucket&quot;: &quot;A String&quot;, # 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`.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The &#x27;Build&#x27; name with format: `projects/{project}/locations/{location}/builds/{build}`, where {build} is a unique identifier generated by the service.
  &quot;options&quot;: { # Optional arguments to enable specific features of builds. # Special options for this build.
    &quot;diskSizeGb&quot;: &quot;A String&quot;, # Requested disk size for the VM that runs the build. Note that this is *NOT* &quot;disk free&quot;; 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 1000GB; builds that request more than the maximum are rejected with an error.
    &quot;dynamicSubstitutions&quot;: True or False, # Option to specify whether or not to apply bash style string operations to the substitutions. NOTE: this is always enabled for triggered builds and cannot be overridden in the build configuration file.
    &quot;env&quot;: [ # A list of global environment variable definitions that will exist for all build steps in this build. If a variable is defined in both globally and in a build step, the variable will use the build step value. The elements are of the form &quot;KEY=VALUE&quot; for the environment variable &quot;KEY&quot; being given the value &quot;VALUE&quot;.
      &quot;A String&quot;,
    ],
    &quot;logStreamingOption&quot;: &quot;A String&quot;, # Option to define build log streaming behavior to Google Cloud Storage.
    &quot;logging&quot;: &quot;A String&quot;, # Option to specify the logging mode, which determines if and where build logs are stored.
    &quot;machineType&quot;: &quot;A String&quot;, # Compute Engine machine type on which to run the build.
    &quot;requestedVerifyOption&quot;: &quot;A String&quot;, # Requested verifiability options.
    &quot;secretEnv&quot;: [ # 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&#x27;s `Secret`. These variables will be available to all build steps in this build.
      &quot;A String&quot;,
    ],
    &quot;sourceProvenanceHash&quot;: [ # Requested hash for SourceProvenance.
      &quot;A String&quot;,
    ],
    &quot;substitutionOption&quot;: &quot;A String&quot;, # Option to specify behavior when there is an error in the substitution checks. NOTE: this is always set to ALLOW_LOOSE for triggered builds and cannot be overridden in the build configuration file.
    &quot;volumes&quot;: [ # 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.
      { # Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.
        &quot;name&quot;: &quot;A String&quot;, # 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.
        &quot;path&quot;: &quot;A String&quot;, # 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.
      },
    ],
    &quot;workerPool&quot;: &quot;A String&quot;, # Option to specify a `WorkerPool` for the build. Format: projects/{project}/locations/{location}/workerPools/{workerPool} This field is experimental.
  },
  &quot;projectId&quot;: &quot;A String&quot;, # Output only. ID of the project.
  &quot;queueTtl&quot;: &quot;A String&quot;, # TTL in queue for this build. If provided and the build is enqueued longer than this value, the build will expire and the build status will be `EXPIRED`. The TTL starts ticking from create_time.
  &quot;results&quot;: { # Artifacts created by the build pipeline. # Output only. Results of the build.
    &quot;artifactManifest&quot;: &quot;A String&quot;, # Path to the artifact manifest. Only populated when artifacts are uploaded.
    &quot;artifactTiming&quot;: { # Start and end times for a build execution phase. # Time to push all non-container artifacts.
      &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
      &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
    },
    &quot;buildStepImages&quot;: [ # List of build step digests, in the order corresponding to build step indices.
      &quot;A String&quot;,
    ],
    &quot;buildStepOutputs&quot;: [ # List of build step outputs, produced by builder images, in the order corresponding to build step indices. [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders) can produce this output by writing to `$BUILDER_OUTPUT/output`. Only the first 4KB of data is stored.
      &quot;A String&quot;,
    ],
    &quot;images&quot;: [ # Container images that were built as a part of the build.
      { # An image built by the pipeline.
        &quot;digest&quot;: &quot;A String&quot;, # Docker Registry 2.0 digest.
        &quot;name&quot;: &quot;A String&quot;, # Name used to push the container image to Google Container Registry, as presented to `docker push`.
        &quot;pushTiming&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for pushing the specified image.
          &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
          &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
        },
      },
    ],
    &quot;numArtifacts&quot;: &quot;A String&quot;, # Number of artifacts uploaded. Only populated when artifacts are uploaded.
  },
  &quot;secrets&quot;: [ # Secrets to decrypt using Cloud Key Management Service.
    { # Pairs a set of secret environment variables containing encrypted values with the Cloud KMS key to use to decrypt the value.
      &quot;kmsKeyName&quot;: &quot;A String&quot;, # Cloud KMS key name to use to decrypt these envs.
      &quot;secretEnv&quot;: { # Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build&#x27;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&#x27;s secrets.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
  ],
  &quot;serviceAccount&quot;: &quot;A String&quot;, # IAM service account whose credentials will be used at build runtime. Must be of the format `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`. ACCOUNT can be email address or uniqueId of the service account. This field is in alpha and is not publicly available.
  &quot;source&quot;: { # Location of the source in a supported storage service. # The location of the source files to build.
    &quot;repoSource&quot;: { # Location of the source in a Google Cloud Source Repository. # If provided, get the source from this location in a Cloud Source Repository.
      &quot;branchName&quot;: &quot;A String&quot;, # Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
      &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
      &quot;dir&quot;: &quot;A String&quot;, # Directory, relative to the source root, in which to run the build. This must be a relative path. If a step&#x27;s `dir` is specified and is an absolute path, this value is ignored for that step&#x27;s execution.
      &quot;invertRegex&quot;: True or False, # Only trigger a build if the revision regex does NOT match the revision regex.
      &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed.
      &quot;repoName&quot;: &quot;A String&quot;, # Required. Name of the Cloud Source Repository.
      &quot;substitutions&quot;: { # Substitutions to use in a triggered build. Should only be used with RunBuildTrigger
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;tagName&quot;: &quot;A String&quot;, # Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
    },
    &quot;storageSource&quot;: { # Location of the source in an archive file in Google Cloud Storage. # If provided, get the source from this location in Google Cloud Storage.
      &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).
      &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used.
      &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build.
    },
  },
  &quot;sourceProvenance&quot;: { # Provenance of the source. Ways to find the original source, or verify that some source was used for this build. # Output only. A permanent fixed identifier for source.
    &quot;fileHashes&quot;: { # Output only. Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. Note that `FileHashes` will only be populated if `BuildOptions` has requested a `SourceProvenanceHash`. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (`.tar.gz`), the `FileHash` will be for the single path to that file.
      &quot;a_key&quot;: { # Container message for hashes of byte content of files, used in SourceProvenance messages to verify integrity of source input to the build.
        &quot;fileHash&quot;: [ # Collection of file hashes.
          { # Container message for hash values.
            &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
            &quot;value&quot;: &quot;A String&quot;, # The hash value.
          },
        ],
      },
    },
    &quot;resolvedRepoSource&quot;: { # Location of the source in a Google Cloud Source Repository. # A copy of the build&#x27;s `source.repo_source`, if exists, with any revisions resolved.
      &quot;branchName&quot;: &quot;A String&quot;, # Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
      &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
      &quot;dir&quot;: &quot;A String&quot;, # Directory, relative to the source root, in which to run the build. This must be a relative path. If a step&#x27;s `dir` is specified and is an absolute path, this value is ignored for that step&#x27;s execution.
      &quot;invertRegex&quot;: True or False, # Only trigger a build if the revision regex does NOT match the revision regex.
      &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed.
      &quot;repoName&quot;: &quot;A String&quot;, # Required. Name of the Cloud Source Repository.
      &quot;substitutions&quot;: { # Substitutions to use in a triggered build. Should only be used with RunBuildTrigger
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;tagName&quot;: &quot;A String&quot;, # Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
    },
    &quot;resolvedStorageSource&quot;: { # Location of the source in an archive file in Google Cloud Storage. # A copy of the build&#x27;s `source.storage_source`, if exists, with any generations resolved.
      &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).
      &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used.
      &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build.
    },
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was started.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the build.
  &quot;statusDetail&quot;: &quot;A String&quot;, # Output only. Customer-readable message about the current status.
  &quot;steps&quot;: [ # Required. The operations to be performed on the workspace.
    { # A step in the build pipeline.
      &quot;args&quot;: [ # A list of arguments that will be presented to the step when it is started. If the image used to run the step&#x27;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.
        &quot;A String&quot;,
      ],
      &quot;dir&quot;: &quot;A String&quot;, # Working directory to use when running this step&#x27;s container. If this value is a relative path, it is relative to the build&#x27;s working directory. If this value is absolute, it may be outside the build&#x27;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&#x27;s execution.
      &quot;entrypoint&quot;: &quot;A String&quot;, # Entrypoint to be used instead of the build step image&#x27;s default entrypoint. If unset, the image&#x27;s default entrypoint is used.
      &quot;env&quot;: [ # A list of environment variable definitions to be used when running a step. The elements are of the form &quot;KEY=VALUE&quot; for the environment variable &quot;KEY&quot; being given the value &quot;VALUE&quot;.
        &quot;A String&quot;,
      ],
      &quot;id&quot;: &quot;A String&quot;, # Unique identifier for this build step, used in `wait_for` to reference this build step as a dependency.
      &quot;name&quot;: &quot;A String&quot;, # Required. The name of the container image that will run this particular build step. If the image is available in the host&#x27;s Docker daemon&#x27;s cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account&#x27;s credentials if necessary. The Docker daemon&#x27;s cache will already have the latest versions of all of the officially supported build steps ([https://github.com/GoogleCloudPlatform/cloud-builders](https://github.com/GoogleCloudPlatform/cloud-builders)). The Docker daemon will also have cached many of the layers for some popular images, like &quot;ubuntu&quot;, &quot;debian&quot;, but they will be refreshed at the time you attempt to use them. If you built an image in a previous build step, it will be stored in the host&#x27;s Docker daemon&#x27;s cache and is available to use as the name for a later build step.
      &quot;pullTiming&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for pulling this build step&#x27;s builder image only.
        &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
        &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
      },
      &quot;secretEnv&quot;: [ # A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build&#x27;s `Secret`.
        &quot;A String&quot;,
      ],
      &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the build step. At this time, build step status is only updated on build completion; step status is not updated in real-time as the build progresses.
      &quot;timeout&quot;: &quot;A String&quot;, # 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.
      &quot;timing&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for executing this build step.
        &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
        &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
      },
      &quot;volumes&quot;: [ # 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.
        { # Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.
          &quot;name&quot;: &quot;A String&quot;, # 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.
          &quot;path&quot;: &quot;A String&quot;, # 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.
        },
      ],
      &quot;waitFor&quot;: [ # 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 `wait_for` have completed successfully. If `wait_for` is empty, this build step will start when all previous build steps in the `Build.Steps` list have completed successfully.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;substitutions&quot;: { # Substitutions data for `Build` resource.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;tags&quot;: [ # Tags for annotation of a `Build`. These are not docker tags.
    &quot;A String&quot;,
  ],
  &quot;timeout&quot;: &quot;A String&quot;, # 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`. `timeout` starts ticking from `startTime`. Default time is ten minutes.
  &quot;timing&quot;: { # Output only. Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps * PUSH: time to push all specified images. * FETCHSOURCE: time to fetch source. If the build does not specify source or images, these keys will not be included.
    &quot;a_key&quot;: { # Start and end times for a build execution phase.
      &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
      &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(projectId, body=None, parent=None, x__xgafv=None)</code>
  <pre>Starts a build with the specified configuration. This method returns a long-running `Operation`, which includes the build ID. Pass the build ID to `GetBuild` to determine the build status (such as `SUCCESS` or `FAILURE`).

Args:
  projectId: string, Required. ID of the project. (required)
  body: object, The request body.
    The object takes the form of:

{ # A build resource in the Cloud Build API. At a high level, a `Build` describes where to find source code, how to build it (for example, the builder image to run on the source), and where to store the built artifacts. Fields can include the following variables, which will be expanded when the build is created: - $PROJECT_ID: the project ID of the build. - $BUILD_ID: the autogenerated ID of the build. - $REPO_NAME: the source repository name specified by RepoSource. - $BRANCH_NAME: the branch name specified by RepoSource. - $TAG_NAME: the tag name specified by RepoSource. - $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or resolved from the specified branch or tag. - $SHORT_SHA: first 7 characters of $REVISION_ID or $COMMIT_SHA.
  &quot;artifacts&quot;: { # Artifacts produced by a build that should be uploaded upon successful completion of all build steps. # Artifacts produced by the build that should be uploaded upon successful completion of all build steps.
    &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images will be pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the Build resource&#x27;s results field. If any of the images fail to be pushed, the build is marked FAILURE.
      &quot;A String&quot;,
    ],
    &quot;objects&quot;: { # Files in the workspace to upload to Cloud Storage upon successful completion of all build steps. # 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&#x27;s credentials. The location and generation of the uploaded objects will be stored in the Build resource&#x27;s results field. If any objects fail to be pushed, the build is marked FAILURE.
      &quot;location&quot;: &quot;A String&quot;, # Cloud Storage bucket and optional object path, in the form &quot;gs://bucket/path/to/somewhere/&quot;. (see [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.
      &quot;paths&quot;: [ # Path globs used to match files in the build&#x27;s workspace.
        &quot;A String&quot;,
      ],
      &quot;timing&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for pushing all artifact objects.
        &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
        &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
      },
    },
  },
  &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
  &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
  &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
  &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
    &quot;A String&quot;,
  ],
  &quot;logUrl&quot;: &quot;A String&quot;, # Output only. URL to logs for this build in Google Cloud Console.
  &quot;logsBucket&quot;: &quot;A String&quot;, # 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`.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The &#x27;Build&#x27; name with format: `projects/{project}/locations/{location}/builds/{build}`, where {build} is a unique identifier generated by the service.
  &quot;options&quot;: { # Optional arguments to enable specific features of builds. # Special options for this build.
    &quot;diskSizeGb&quot;: &quot;A String&quot;, # Requested disk size for the VM that runs the build. Note that this is *NOT* &quot;disk free&quot;; 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 1000GB; builds that request more than the maximum are rejected with an error.
    &quot;dynamicSubstitutions&quot;: True or False, # Option to specify whether or not to apply bash style string operations to the substitutions. NOTE: this is always enabled for triggered builds and cannot be overridden in the build configuration file.
    &quot;env&quot;: [ # A list of global environment variable definitions that will exist for all build steps in this build. If a variable is defined in both globally and in a build step, the variable will use the build step value. The elements are of the form &quot;KEY=VALUE&quot; for the environment variable &quot;KEY&quot; being given the value &quot;VALUE&quot;.
      &quot;A String&quot;,
    ],
    &quot;logStreamingOption&quot;: &quot;A String&quot;, # Option to define build log streaming behavior to Google Cloud Storage.
    &quot;logging&quot;: &quot;A String&quot;, # Option to specify the logging mode, which determines if and where build logs are stored.
    &quot;machineType&quot;: &quot;A String&quot;, # Compute Engine machine type on which to run the build.
    &quot;requestedVerifyOption&quot;: &quot;A String&quot;, # Requested verifiability options.
    &quot;secretEnv&quot;: [ # 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&#x27;s `Secret`. These variables will be available to all build steps in this build.
      &quot;A String&quot;,
    ],
    &quot;sourceProvenanceHash&quot;: [ # Requested hash for SourceProvenance.
      &quot;A String&quot;,
    ],
    &quot;substitutionOption&quot;: &quot;A String&quot;, # Option to specify behavior when there is an error in the substitution checks. NOTE: this is always set to ALLOW_LOOSE for triggered builds and cannot be overridden in the build configuration file.
    &quot;volumes&quot;: [ # 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.
      { # Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.
        &quot;name&quot;: &quot;A String&quot;, # 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.
        &quot;path&quot;: &quot;A String&quot;, # 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.
      },
    ],
    &quot;workerPool&quot;: &quot;A String&quot;, # Option to specify a `WorkerPool` for the build. Format: projects/{project}/locations/{location}/workerPools/{workerPool} This field is experimental.
  },
  &quot;projectId&quot;: &quot;A String&quot;, # Output only. ID of the project.
  &quot;queueTtl&quot;: &quot;A String&quot;, # TTL in queue for this build. If provided and the build is enqueued longer than this value, the build will expire and the build status will be `EXPIRED`. The TTL starts ticking from create_time.
  &quot;results&quot;: { # Artifacts created by the build pipeline. # Output only. Results of the build.
    &quot;artifactManifest&quot;: &quot;A String&quot;, # Path to the artifact manifest. Only populated when artifacts are uploaded.
    &quot;artifactTiming&quot;: { # Start and end times for a build execution phase. # Time to push all non-container artifacts.
      &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
      &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
    },
    &quot;buildStepImages&quot;: [ # List of build step digests, in the order corresponding to build step indices.
      &quot;A String&quot;,
    ],
    &quot;buildStepOutputs&quot;: [ # List of build step outputs, produced by builder images, in the order corresponding to build step indices. [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders) can produce this output by writing to `$BUILDER_OUTPUT/output`. Only the first 4KB of data is stored.
      &quot;A String&quot;,
    ],
    &quot;images&quot;: [ # Container images that were built as a part of the build.
      { # An image built by the pipeline.
        &quot;digest&quot;: &quot;A String&quot;, # Docker Registry 2.0 digest.
        &quot;name&quot;: &quot;A String&quot;, # Name used to push the container image to Google Container Registry, as presented to `docker push`.
        &quot;pushTiming&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for pushing the specified image.
          &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
          &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
        },
      },
    ],
    &quot;numArtifacts&quot;: &quot;A String&quot;, # Number of artifacts uploaded. Only populated when artifacts are uploaded.
  },
  &quot;secrets&quot;: [ # Secrets to decrypt using Cloud Key Management Service.
    { # Pairs a set of secret environment variables containing encrypted values with the Cloud KMS key to use to decrypt the value.
      &quot;kmsKeyName&quot;: &quot;A String&quot;, # Cloud KMS key name to use to decrypt these envs.
      &quot;secretEnv&quot;: { # Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build&#x27;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&#x27;s secrets.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
  ],
  &quot;serviceAccount&quot;: &quot;A String&quot;, # IAM service account whose credentials will be used at build runtime. Must be of the format `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`. ACCOUNT can be email address or uniqueId of the service account. This field is in alpha and is not publicly available.
  &quot;source&quot;: { # Location of the source in a supported storage service. # The location of the source files to build.
    &quot;repoSource&quot;: { # Location of the source in a Google Cloud Source Repository. # If provided, get the source from this location in a Cloud Source Repository.
      &quot;branchName&quot;: &quot;A String&quot;, # Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
      &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
      &quot;dir&quot;: &quot;A String&quot;, # Directory, relative to the source root, in which to run the build. This must be a relative path. If a step&#x27;s `dir` is specified and is an absolute path, this value is ignored for that step&#x27;s execution.
      &quot;invertRegex&quot;: True or False, # Only trigger a build if the revision regex does NOT match the revision regex.
      &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed.
      &quot;repoName&quot;: &quot;A String&quot;, # Required. Name of the Cloud Source Repository.
      &quot;substitutions&quot;: { # Substitutions to use in a triggered build. Should only be used with RunBuildTrigger
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;tagName&quot;: &quot;A String&quot;, # Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
    },
    &quot;storageSource&quot;: { # Location of the source in an archive file in Google Cloud Storage. # If provided, get the source from this location in Google Cloud Storage.
      &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).
      &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used.
      &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build.
    },
  },
  &quot;sourceProvenance&quot;: { # Provenance of the source. Ways to find the original source, or verify that some source was used for this build. # Output only. A permanent fixed identifier for source.
    &quot;fileHashes&quot;: { # Output only. Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. Note that `FileHashes` will only be populated if `BuildOptions` has requested a `SourceProvenanceHash`. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (`.tar.gz`), the `FileHash` will be for the single path to that file.
      &quot;a_key&quot;: { # Container message for hashes of byte content of files, used in SourceProvenance messages to verify integrity of source input to the build.
        &quot;fileHash&quot;: [ # Collection of file hashes.
          { # Container message for hash values.
            &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
            &quot;value&quot;: &quot;A String&quot;, # The hash value.
          },
        ],
      },
    },
    &quot;resolvedRepoSource&quot;: { # Location of the source in a Google Cloud Source Repository. # A copy of the build&#x27;s `source.repo_source`, if exists, with any revisions resolved.
      &quot;branchName&quot;: &quot;A String&quot;, # Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
      &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
      &quot;dir&quot;: &quot;A String&quot;, # Directory, relative to the source root, in which to run the build. This must be a relative path. If a step&#x27;s `dir` is specified and is an absolute path, this value is ignored for that step&#x27;s execution.
      &quot;invertRegex&quot;: True or False, # Only trigger a build if the revision regex does NOT match the revision regex.
      &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed.
      &quot;repoName&quot;: &quot;A String&quot;, # Required. Name of the Cloud Source Repository.
      &quot;substitutions&quot;: { # Substitutions to use in a triggered build. Should only be used with RunBuildTrigger
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;tagName&quot;: &quot;A String&quot;, # Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
    },
    &quot;resolvedStorageSource&quot;: { # Location of the source in an archive file in Google Cloud Storage. # A copy of the build&#x27;s `source.storage_source`, if exists, with any generations resolved.
      &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).
      &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used.
      &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build.
    },
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was started.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the build.
  &quot;statusDetail&quot;: &quot;A String&quot;, # Output only. Customer-readable message about the current status.
  &quot;steps&quot;: [ # Required. The operations to be performed on the workspace.
    { # A step in the build pipeline.
      &quot;args&quot;: [ # A list of arguments that will be presented to the step when it is started. If the image used to run the step&#x27;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.
        &quot;A String&quot;,
      ],
      &quot;dir&quot;: &quot;A String&quot;, # Working directory to use when running this step&#x27;s container. If this value is a relative path, it is relative to the build&#x27;s working directory. If this value is absolute, it may be outside the build&#x27;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&#x27;s execution.
      &quot;entrypoint&quot;: &quot;A String&quot;, # Entrypoint to be used instead of the build step image&#x27;s default entrypoint. If unset, the image&#x27;s default entrypoint is used.
      &quot;env&quot;: [ # A list of environment variable definitions to be used when running a step. The elements are of the form &quot;KEY=VALUE&quot; for the environment variable &quot;KEY&quot; being given the value &quot;VALUE&quot;.
        &quot;A String&quot;,
      ],
      &quot;id&quot;: &quot;A String&quot;, # Unique identifier for this build step, used in `wait_for` to reference this build step as a dependency.
      &quot;name&quot;: &quot;A String&quot;, # Required. The name of the container image that will run this particular build step. If the image is available in the host&#x27;s Docker daemon&#x27;s cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account&#x27;s credentials if necessary. The Docker daemon&#x27;s cache will already have the latest versions of all of the officially supported build steps ([https://github.com/GoogleCloudPlatform/cloud-builders](https://github.com/GoogleCloudPlatform/cloud-builders)). The Docker daemon will also have cached many of the layers for some popular images, like &quot;ubuntu&quot;, &quot;debian&quot;, but they will be refreshed at the time you attempt to use them. If you built an image in a previous build step, it will be stored in the host&#x27;s Docker daemon&#x27;s cache and is available to use as the name for a later build step.
      &quot;pullTiming&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for pulling this build step&#x27;s builder image only.
        &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
        &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
      },
      &quot;secretEnv&quot;: [ # A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build&#x27;s `Secret`.
        &quot;A String&quot;,
      ],
      &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the build step. At this time, build step status is only updated on build completion; step status is not updated in real-time as the build progresses.
      &quot;timeout&quot;: &quot;A String&quot;, # 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.
      &quot;timing&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for executing this build step.
        &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
        &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
      },
      &quot;volumes&quot;: [ # 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.
        { # Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.
          &quot;name&quot;: &quot;A String&quot;, # 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.
          &quot;path&quot;: &quot;A String&quot;, # 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.
        },
      ],
      &quot;waitFor&quot;: [ # 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 `wait_for` have completed successfully. If `wait_for` is empty, this build step will start when all previous build steps in the `Build.Steps` list have completed successfully.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;substitutions&quot;: { # Substitutions data for `Build` resource.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;tags&quot;: [ # Tags for annotation of a `Build`. These are not docker tags.
    &quot;A String&quot;,
  ],
  &quot;timeout&quot;: &quot;A String&quot;, # 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`. `timeout` starts ticking from `startTime`. Default time is ten minutes.
  &quot;timing&quot;: { # Output only. Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps * PUSH: time to push all specified images. * FETCHSOURCE: time to fetch source. If the build does not specify source or images, these keys will not be included.
    &quot;a_key&quot;: { # Start and end times for a build execution phase.
      &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
      &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
    },
  },
}

  parent: string, The parent resource where this build will be created. Format: `projects/{project}/locations/{location}`
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectId, id, name=None, x__xgafv=None)</code>
  <pre>Returns information about a previously requested build. The `Build` that is returned includes its status (such as `SUCCESS`, `FAILURE`, or `WORKING`), and timing information.

Args:
  projectId: string, Required. ID of the project. (required)
  id: string, Required. ID of the build. (required)
  name: string, The name of the `Build` to retrieve. Format: `projects/{project}/locations/{location}/builds/{build}`
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A build resource in the Cloud Build API. At a high level, a `Build` describes where to find source code, how to build it (for example, the builder image to run on the source), and where to store the built artifacts. Fields can include the following variables, which will be expanded when the build is created: - $PROJECT_ID: the project ID of the build. - $BUILD_ID: the autogenerated ID of the build. - $REPO_NAME: the source repository name specified by RepoSource. - $BRANCH_NAME: the branch name specified by RepoSource. - $TAG_NAME: the tag name specified by RepoSource. - $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or resolved from the specified branch or tag. - $SHORT_SHA: first 7 characters of $REVISION_ID or $COMMIT_SHA.
  &quot;artifacts&quot;: { # Artifacts produced by a build that should be uploaded upon successful completion of all build steps. # Artifacts produced by the build that should be uploaded upon successful completion of all build steps.
    &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images will be pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the Build resource&#x27;s results field. If any of the images fail to be pushed, the build is marked FAILURE.
      &quot;A String&quot;,
    ],
    &quot;objects&quot;: { # Files in the workspace to upload to Cloud Storage upon successful completion of all build steps. # 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&#x27;s credentials. The location and generation of the uploaded objects will be stored in the Build resource&#x27;s results field. If any objects fail to be pushed, the build is marked FAILURE.
      &quot;location&quot;: &quot;A String&quot;, # Cloud Storage bucket and optional object path, in the form &quot;gs://bucket/path/to/somewhere/&quot;. (see [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.
      &quot;paths&quot;: [ # Path globs used to match files in the build&#x27;s workspace.
        &quot;A String&quot;,
      ],
      &quot;timing&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for pushing all artifact objects.
        &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
        &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
      },
    },
  },
  &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
  &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
  &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
  &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
    &quot;A String&quot;,
  ],
  &quot;logUrl&quot;: &quot;A String&quot;, # Output only. URL to logs for this build in Google Cloud Console.
  &quot;logsBucket&quot;: &quot;A String&quot;, # 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`.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The &#x27;Build&#x27; name with format: `projects/{project}/locations/{location}/builds/{build}`, where {build} is a unique identifier generated by the service.
  &quot;options&quot;: { # Optional arguments to enable specific features of builds. # Special options for this build.
    &quot;diskSizeGb&quot;: &quot;A String&quot;, # Requested disk size for the VM that runs the build. Note that this is *NOT* &quot;disk free&quot;; 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 1000GB; builds that request more than the maximum are rejected with an error.
    &quot;dynamicSubstitutions&quot;: True or False, # Option to specify whether or not to apply bash style string operations to the substitutions. NOTE: this is always enabled for triggered builds and cannot be overridden in the build configuration file.
    &quot;env&quot;: [ # A list of global environment variable definitions that will exist for all build steps in this build. If a variable is defined in both globally and in a build step, the variable will use the build step value. The elements are of the form &quot;KEY=VALUE&quot; for the environment variable &quot;KEY&quot; being given the value &quot;VALUE&quot;.
      &quot;A String&quot;,
    ],
    &quot;logStreamingOption&quot;: &quot;A String&quot;, # Option to define build log streaming behavior to Google Cloud Storage.
    &quot;logging&quot;: &quot;A String&quot;, # Option to specify the logging mode, which determines if and where build logs are stored.
    &quot;machineType&quot;: &quot;A String&quot;, # Compute Engine machine type on which to run the build.
    &quot;requestedVerifyOption&quot;: &quot;A String&quot;, # Requested verifiability options.
    &quot;secretEnv&quot;: [ # 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&#x27;s `Secret`. These variables will be available to all build steps in this build.
      &quot;A String&quot;,
    ],
    &quot;sourceProvenanceHash&quot;: [ # Requested hash for SourceProvenance.
      &quot;A String&quot;,
    ],
    &quot;substitutionOption&quot;: &quot;A String&quot;, # Option to specify behavior when there is an error in the substitution checks. NOTE: this is always set to ALLOW_LOOSE for triggered builds and cannot be overridden in the build configuration file.
    &quot;volumes&quot;: [ # 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.
      { # Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.
        &quot;name&quot;: &quot;A String&quot;, # 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.
        &quot;path&quot;: &quot;A String&quot;, # 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.
      },
    ],
    &quot;workerPool&quot;: &quot;A String&quot;, # Option to specify a `WorkerPool` for the build. Format: projects/{project}/locations/{location}/workerPools/{workerPool} This field is experimental.
  },
  &quot;projectId&quot;: &quot;A String&quot;, # Output only. ID of the project.
  &quot;queueTtl&quot;: &quot;A String&quot;, # TTL in queue for this build. If provided and the build is enqueued longer than this value, the build will expire and the build status will be `EXPIRED`. The TTL starts ticking from create_time.
  &quot;results&quot;: { # Artifacts created by the build pipeline. # Output only. Results of the build.
    &quot;artifactManifest&quot;: &quot;A String&quot;, # Path to the artifact manifest. Only populated when artifacts are uploaded.
    &quot;artifactTiming&quot;: { # Start and end times for a build execution phase. # Time to push all non-container artifacts.
      &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
      &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
    },
    &quot;buildStepImages&quot;: [ # List of build step digests, in the order corresponding to build step indices.
      &quot;A String&quot;,
    ],
    &quot;buildStepOutputs&quot;: [ # List of build step outputs, produced by builder images, in the order corresponding to build step indices. [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders) can produce this output by writing to `$BUILDER_OUTPUT/output`. Only the first 4KB of data is stored.
      &quot;A String&quot;,
    ],
    &quot;images&quot;: [ # Container images that were built as a part of the build.
      { # An image built by the pipeline.
        &quot;digest&quot;: &quot;A String&quot;, # Docker Registry 2.0 digest.
        &quot;name&quot;: &quot;A String&quot;, # Name used to push the container image to Google Container Registry, as presented to `docker push`.
        &quot;pushTiming&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for pushing the specified image.
          &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
          &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
        },
      },
    ],
    &quot;numArtifacts&quot;: &quot;A String&quot;, # Number of artifacts uploaded. Only populated when artifacts are uploaded.
  },
  &quot;secrets&quot;: [ # Secrets to decrypt using Cloud Key Management Service.
    { # Pairs a set of secret environment variables containing encrypted values with the Cloud KMS key to use to decrypt the value.
      &quot;kmsKeyName&quot;: &quot;A String&quot;, # Cloud KMS key name to use to decrypt these envs.
      &quot;secretEnv&quot;: { # Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build&#x27;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&#x27;s secrets.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
  ],
  &quot;serviceAccount&quot;: &quot;A String&quot;, # IAM service account whose credentials will be used at build runtime. Must be of the format `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`. ACCOUNT can be email address or uniqueId of the service account. This field is in alpha and is not publicly available.
  &quot;source&quot;: { # Location of the source in a supported storage service. # The location of the source files to build.
    &quot;repoSource&quot;: { # Location of the source in a Google Cloud Source Repository. # If provided, get the source from this location in a Cloud Source Repository.
      &quot;branchName&quot;: &quot;A String&quot;, # Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
      &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
      &quot;dir&quot;: &quot;A String&quot;, # Directory, relative to the source root, in which to run the build. This must be a relative path. If a step&#x27;s `dir` is specified and is an absolute path, this value is ignored for that step&#x27;s execution.
      &quot;invertRegex&quot;: True or False, # Only trigger a build if the revision regex does NOT match the revision regex.
      &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed.
      &quot;repoName&quot;: &quot;A String&quot;, # Required. Name of the Cloud Source Repository.
      &quot;substitutions&quot;: { # Substitutions to use in a triggered build. Should only be used with RunBuildTrigger
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;tagName&quot;: &quot;A String&quot;, # Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
    },
    &quot;storageSource&quot;: { # Location of the source in an archive file in Google Cloud Storage. # If provided, get the source from this location in Google Cloud Storage.
      &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).
      &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used.
      &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build.
    },
  },
  &quot;sourceProvenance&quot;: { # Provenance of the source. Ways to find the original source, or verify that some source was used for this build. # Output only. A permanent fixed identifier for source.
    &quot;fileHashes&quot;: { # Output only. Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. Note that `FileHashes` will only be populated if `BuildOptions` has requested a `SourceProvenanceHash`. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (`.tar.gz`), the `FileHash` will be for the single path to that file.
      &quot;a_key&quot;: { # Container message for hashes of byte content of files, used in SourceProvenance messages to verify integrity of source input to the build.
        &quot;fileHash&quot;: [ # Collection of file hashes.
          { # Container message for hash values.
            &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
            &quot;value&quot;: &quot;A String&quot;, # The hash value.
          },
        ],
      },
    },
    &quot;resolvedRepoSource&quot;: { # Location of the source in a Google Cloud Source Repository. # A copy of the build&#x27;s `source.repo_source`, if exists, with any revisions resolved.
      &quot;branchName&quot;: &quot;A String&quot;, # Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
      &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
      &quot;dir&quot;: &quot;A String&quot;, # Directory, relative to the source root, in which to run the build. This must be a relative path. If a step&#x27;s `dir` is specified and is an absolute path, this value is ignored for that step&#x27;s execution.
      &quot;invertRegex&quot;: True or False, # Only trigger a build if the revision regex does NOT match the revision regex.
      &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed.
      &quot;repoName&quot;: &quot;A String&quot;, # Required. Name of the Cloud Source Repository.
      &quot;substitutions&quot;: { # Substitutions to use in a triggered build. Should only be used with RunBuildTrigger
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;tagName&quot;: &quot;A String&quot;, # Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
    },
    &quot;resolvedStorageSource&quot;: { # Location of the source in an archive file in Google Cloud Storage. # A copy of the build&#x27;s `source.storage_source`, if exists, with any generations resolved.
      &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).
      &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used.
      &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build.
    },
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was started.
  &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the build.
  &quot;statusDetail&quot;: &quot;A String&quot;, # Output only. Customer-readable message about the current status.
  &quot;steps&quot;: [ # Required. The operations to be performed on the workspace.
    { # A step in the build pipeline.
      &quot;args&quot;: [ # A list of arguments that will be presented to the step when it is started. If the image used to run the step&#x27;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.
        &quot;A String&quot;,
      ],
      &quot;dir&quot;: &quot;A String&quot;, # Working directory to use when running this step&#x27;s container. If this value is a relative path, it is relative to the build&#x27;s working directory. If this value is absolute, it may be outside the build&#x27;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&#x27;s execution.
      &quot;entrypoint&quot;: &quot;A String&quot;, # Entrypoint to be used instead of the build step image&#x27;s default entrypoint. If unset, the image&#x27;s default entrypoint is used.
      &quot;env&quot;: [ # A list of environment variable definitions to be used when running a step. The elements are of the form &quot;KEY=VALUE&quot; for the environment variable &quot;KEY&quot; being given the value &quot;VALUE&quot;.
        &quot;A String&quot;,
      ],
      &quot;id&quot;: &quot;A String&quot;, # Unique identifier for this build step, used in `wait_for` to reference this build step as a dependency.
      &quot;name&quot;: &quot;A String&quot;, # Required. The name of the container image that will run this particular build step. If the image is available in the host&#x27;s Docker daemon&#x27;s cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account&#x27;s credentials if necessary. The Docker daemon&#x27;s cache will already have the latest versions of all of the officially supported build steps ([https://github.com/GoogleCloudPlatform/cloud-builders](https://github.com/GoogleCloudPlatform/cloud-builders)). The Docker daemon will also have cached many of the layers for some popular images, like &quot;ubuntu&quot;, &quot;debian&quot;, but they will be refreshed at the time you attempt to use them. If you built an image in a previous build step, it will be stored in the host&#x27;s Docker daemon&#x27;s cache and is available to use as the name for a later build step.
      &quot;pullTiming&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for pulling this build step&#x27;s builder image only.
        &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
        &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
      },
      &quot;secretEnv&quot;: [ # A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build&#x27;s `Secret`.
        &quot;A String&quot;,
      ],
      &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the build step. At this time, build step status is only updated on build completion; step status is not updated in real-time as the build progresses.
      &quot;timeout&quot;: &quot;A String&quot;, # 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.
      &quot;timing&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for executing this build step.
        &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
        &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
      },
      &quot;volumes&quot;: [ # 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.
        { # Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.
          &quot;name&quot;: &quot;A String&quot;, # 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.
          &quot;path&quot;: &quot;A String&quot;, # 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.
        },
      ],
      &quot;waitFor&quot;: [ # 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 `wait_for` have completed successfully. If `wait_for` is empty, this build step will start when all previous build steps in the `Build.Steps` list have completed successfully.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;substitutions&quot;: { # Substitutions data for `Build` resource.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;tags&quot;: [ # Tags for annotation of a `Build`. These are not docker tags.
    &quot;A String&quot;,
  ],
  &quot;timeout&quot;: &quot;A String&quot;, # 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`. `timeout` starts ticking from `startTime`. Default time is ten minutes.
  &quot;timing&quot;: { # Output only. Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps * PUSH: time to push all specified images. * FETCHSOURCE: time to fetch source. If the build does not specify source or images, these keys will not be included.
    &quot;a_key&quot;: { # Start and end times for a build execution phase.
      &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
      &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
    },
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, filter=None, pageSize=None, pageToken=None, parent=None, x__xgafv=None)</code>
  <pre>Lists previously requested builds. Previously requested builds may still be in-progress, or may have finished successfully or unsuccessfully.

Args:
  projectId: string, Required. ID of the project. (required)
  filter: string, The raw filter text to constrain the results.
  pageSize: integer, Number of results to return in the list.
  pageToken: string, The page token for the next page of Builds. If unspecified, the first page of results is returned. If the token is rejected for any reason, INVALID_ARGUMENT will be thrown. In this case, the token should be discarded, and pagination should be restarted from the first page of results. See https://google.aip.dev/158 for more.
  parent: string, The parent of the collection of `Builds`. Format: `projects/{project}/locations/location`
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response including listed builds.
  &quot;builds&quot;: [ # Builds will be sorted by `create_time`, descending.
    { # A build resource in the Cloud Build API. At a high level, a `Build` describes where to find source code, how to build it (for example, the builder image to run on the source), and where to store the built artifacts. Fields can include the following variables, which will be expanded when the build is created: - $PROJECT_ID: the project ID of the build. - $BUILD_ID: the autogenerated ID of the build. - $REPO_NAME: the source repository name specified by RepoSource. - $BRANCH_NAME: the branch name specified by RepoSource. - $TAG_NAME: the tag name specified by RepoSource. - $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or resolved from the specified branch or tag. - $SHORT_SHA: first 7 characters of $REVISION_ID or $COMMIT_SHA.
      &quot;artifacts&quot;: { # Artifacts produced by a build that should be uploaded upon successful completion of all build steps. # Artifacts produced by the build that should be uploaded upon successful completion of all build steps.
        &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images will be pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the Build resource&#x27;s results field. If any of the images fail to be pushed, the build is marked FAILURE.
          &quot;A String&quot;,
        ],
        &quot;objects&quot;: { # Files in the workspace to upload to Cloud Storage upon successful completion of all build steps. # 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&#x27;s credentials. The location and generation of the uploaded objects will be stored in the Build resource&#x27;s results field. If any objects fail to be pushed, the build is marked FAILURE.
          &quot;location&quot;: &quot;A String&quot;, # Cloud Storage bucket and optional object path, in the form &quot;gs://bucket/path/to/somewhere/&quot;. (see [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.
          &quot;paths&quot;: [ # Path globs used to match files in the build&#x27;s workspace.
            &quot;A String&quot;,
          ],
          &quot;timing&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for pushing all artifact objects.
            &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
            &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
          },
        },
      },
      &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
      &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
      &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
      &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
        &quot;A String&quot;,
      ],
      &quot;logUrl&quot;: &quot;A String&quot;, # Output only. URL to logs for this build in Google Cloud Console.
      &quot;logsBucket&quot;: &quot;A String&quot;, # 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`.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The &#x27;Build&#x27; name with format: `projects/{project}/locations/{location}/builds/{build}`, where {build} is a unique identifier generated by the service.
      &quot;options&quot;: { # Optional arguments to enable specific features of builds. # Special options for this build.
        &quot;diskSizeGb&quot;: &quot;A String&quot;, # Requested disk size for the VM that runs the build. Note that this is *NOT* &quot;disk free&quot;; 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 1000GB; builds that request more than the maximum are rejected with an error.
        &quot;dynamicSubstitutions&quot;: True or False, # Option to specify whether or not to apply bash style string operations to the substitutions. NOTE: this is always enabled for triggered builds and cannot be overridden in the build configuration file.
        &quot;env&quot;: [ # A list of global environment variable definitions that will exist for all build steps in this build. If a variable is defined in both globally and in a build step, the variable will use the build step value. The elements are of the form &quot;KEY=VALUE&quot; for the environment variable &quot;KEY&quot; being given the value &quot;VALUE&quot;.
          &quot;A String&quot;,
        ],
        &quot;logStreamingOption&quot;: &quot;A String&quot;, # Option to define build log streaming behavior to Google Cloud Storage.
        &quot;logging&quot;: &quot;A String&quot;, # Option to specify the logging mode, which determines if and where build logs are stored.
        &quot;machineType&quot;: &quot;A String&quot;, # Compute Engine machine type on which to run the build.
        &quot;requestedVerifyOption&quot;: &quot;A String&quot;, # Requested verifiability options.
        &quot;secretEnv&quot;: [ # 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&#x27;s `Secret`. These variables will be available to all build steps in this build.
          &quot;A String&quot;,
        ],
        &quot;sourceProvenanceHash&quot;: [ # Requested hash for SourceProvenance.
          &quot;A String&quot;,
        ],
        &quot;substitutionOption&quot;: &quot;A String&quot;, # Option to specify behavior when there is an error in the substitution checks. NOTE: this is always set to ALLOW_LOOSE for triggered builds and cannot be overridden in the build configuration file.
        &quot;volumes&quot;: [ # 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.
          { # Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.
            &quot;name&quot;: &quot;A String&quot;, # 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.
            &quot;path&quot;: &quot;A String&quot;, # 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.
          },
        ],
        &quot;workerPool&quot;: &quot;A String&quot;, # Option to specify a `WorkerPool` for the build. Format: projects/{project}/locations/{location}/workerPools/{workerPool} This field is experimental.
      },
      &quot;projectId&quot;: &quot;A String&quot;, # Output only. ID of the project.
      &quot;queueTtl&quot;: &quot;A String&quot;, # TTL in queue for this build. If provided and the build is enqueued longer than this value, the build will expire and the build status will be `EXPIRED`. The TTL starts ticking from create_time.
      &quot;results&quot;: { # Artifacts created by the build pipeline. # Output only. Results of the build.
        &quot;artifactManifest&quot;: &quot;A String&quot;, # Path to the artifact manifest. Only populated when artifacts are uploaded.
        &quot;artifactTiming&quot;: { # Start and end times for a build execution phase. # Time to push all non-container artifacts.
          &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
          &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
        },
        &quot;buildStepImages&quot;: [ # List of build step digests, in the order corresponding to build step indices.
          &quot;A String&quot;,
        ],
        &quot;buildStepOutputs&quot;: [ # List of build step outputs, produced by builder images, in the order corresponding to build step indices. [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders) can produce this output by writing to `$BUILDER_OUTPUT/output`. Only the first 4KB of data is stored.
          &quot;A String&quot;,
        ],
        &quot;images&quot;: [ # Container images that were built as a part of the build.
          { # An image built by the pipeline.
            &quot;digest&quot;: &quot;A String&quot;, # Docker Registry 2.0 digest.
            &quot;name&quot;: &quot;A String&quot;, # Name used to push the container image to Google Container Registry, as presented to `docker push`.
            &quot;pushTiming&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for pushing the specified image.
              &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
              &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
            },
          },
        ],
        &quot;numArtifacts&quot;: &quot;A String&quot;, # Number of artifacts uploaded. Only populated when artifacts are uploaded.
      },
      &quot;secrets&quot;: [ # Secrets to decrypt using Cloud Key Management Service.
        { # Pairs a set of secret environment variables containing encrypted values with the Cloud KMS key to use to decrypt the value.
          &quot;kmsKeyName&quot;: &quot;A String&quot;, # Cloud KMS key name to use to decrypt these envs.
          &quot;secretEnv&quot;: { # Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build&#x27;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&#x27;s secrets.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
      ],
      &quot;serviceAccount&quot;: &quot;A String&quot;, # IAM service account whose credentials will be used at build runtime. Must be of the format `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`. ACCOUNT can be email address or uniqueId of the service account. This field is in alpha and is not publicly available.
      &quot;source&quot;: { # Location of the source in a supported storage service. # The location of the source files to build.
        &quot;repoSource&quot;: { # Location of the source in a Google Cloud Source Repository. # If provided, get the source from this location in a Cloud Source Repository.
          &quot;branchName&quot;: &quot;A String&quot;, # Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
          &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
          &quot;dir&quot;: &quot;A String&quot;, # Directory, relative to the source root, in which to run the build. This must be a relative path. If a step&#x27;s `dir` is specified and is an absolute path, this value is ignored for that step&#x27;s execution.
          &quot;invertRegex&quot;: True or False, # Only trigger a build if the revision regex does NOT match the revision regex.
          &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed.
          &quot;repoName&quot;: &quot;A String&quot;, # Required. Name of the Cloud Source Repository.
          &quot;substitutions&quot;: { # Substitutions to use in a triggered build. Should only be used with RunBuildTrigger
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;tagName&quot;: &quot;A String&quot;, # Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
        },
        &quot;storageSource&quot;: { # Location of the source in an archive file in Google Cloud Storage. # If provided, get the source from this location in Google Cloud Storage.
          &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).
          &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used.
          &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build.
        },
      },
      &quot;sourceProvenance&quot;: { # Provenance of the source. Ways to find the original source, or verify that some source was used for this build. # Output only. A permanent fixed identifier for source.
        &quot;fileHashes&quot;: { # Output only. Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. Note that `FileHashes` will only be populated if `BuildOptions` has requested a `SourceProvenanceHash`. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (`.tar.gz`), the `FileHash` will be for the single path to that file.
          &quot;a_key&quot;: { # Container message for hashes of byte content of files, used in SourceProvenance messages to verify integrity of source input to the build.
            &quot;fileHash&quot;: [ # Collection of file hashes.
              { # Container message for hash values.
                &quot;type&quot;: &quot;A String&quot;, # The type of hash that was performed.
                &quot;value&quot;: &quot;A String&quot;, # The hash value.
              },
            ],
          },
        },
        &quot;resolvedRepoSource&quot;: { # Location of the source in a Google Cloud Source Repository. # A copy of the build&#x27;s `source.repo_source`, if exists, with any revisions resolved.
          &quot;branchName&quot;: &quot;A String&quot;, # Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
          &quot;commitSha&quot;: &quot;A String&quot;, # Explicit commit SHA to build.
          &quot;dir&quot;: &quot;A String&quot;, # Directory, relative to the source root, in which to run the build. This must be a relative path. If a step&#x27;s `dir` is specified and is an absolute path, this value is ignored for that step&#x27;s execution.
          &quot;invertRegex&quot;: True or False, # Only trigger a build if the revision regex does NOT match the revision regex.
          &quot;projectId&quot;: &quot;A String&quot;, # ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed.
          &quot;repoName&quot;: &quot;A String&quot;, # Required. Name of the Cloud Source Repository.
          &quot;substitutions&quot;: { # Substitutions to use in a triggered build. Should only be used with RunBuildTrigger
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;tagName&quot;: &quot;A String&quot;, # Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax
        },
        &quot;resolvedStorageSource&quot;: { # Location of the source in an archive file in Google Cloud Storage. # A copy of the build&#x27;s `source.storage_source`, if exists, with any generations resolved.
          &quot;bucket&quot;: &quot;A String&quot;, # Google Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).
          &quot;generation&quot;: &quot;A String&quot;, # Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used.
          &quot;object&quot;: &quot;A String&quot;, # Google Cloud Storage object containing the source. This object must be a gzipped archive file (`.tar.gz`) containing source to build.
        },
      },
      &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was started.
      &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the build.
      &quot;statusDetail&quot;: &quot;A String&quot;, # Output only. Customer-readable message about the current status.
      &quot;steps&quot;: [ # Required. The operations to be performed on the workspace.
        { # A step in the build pipeline.
          &quot;args&quot;: [ # A list of arguments that will be presented to the step when it is started. If the image used to run the step&#x27;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.
            &quot;A String&quot;,
          ],
          &quot;dir&quot;: &quot;A String&quot;, # Working directory to use when running this step&#x27;s container. If this value is a relative path, it is relative to the build&#x27;s working directory. If this value is absolute, it may be outside the build&#x27;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&#x27;s execution.
          &quot;entrypoint&quot;: &quot;A String&quot;, # Entrypoint to be used instead of the build step image&#x27;s default entrypoint. If unset, the image&#x27;s default entrypoint is used.
          &quot;env&quot;: [ # A list of environment variable definitions to be used when running a step. The elements are of the form &quot;KEY=VALUE&quot; for the environment variable &quot;KEY&quot; being given the value &quot;VALUE&quot;.
            &quot;A String&quot;,
          ],
          &quot;id&quot;: &quot;A String&quot;, # Unique identifier for this build step, used in `wait_for` to reference this build step as a dependency.
          &quot;name&quot;: &quot;A String&quot;, # Required. The name of the container image that will run this particular build step. If the image is available in the host&#x27;s Docker daemon&#x27;s cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account&#x27;s credentials if necessary. The Docker daemon&#x27;s cache will already have the latest versions of all of the officially supported build steps ([https://github.com/GoogleCloudPlatform/cloud-builders](https://github.com/GoogleCloudPlatform/cloud-builders)). The Docker daemon will also have cached many of the layers for some popular images, like &quot;ubuntu&quot;, &quot;debian&quot;, but they will be refreshed at the time you attempt to use them. If you built an image in a previous build step, it will be stored in the host&#x27;s Docker daemon&#x27;s cache and is available to use as the name for a later build step.
          &quot;pullTiming&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for pulling this build step&#x27;s builder image only.
            &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
            &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
          },
          &quot;secretEnv&quot;: [ # A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build&#x27;s `Secret`.
            &quot;A String&quot;,
          ],
          &quot;status&quot;: &quot;A String&quot;, # Output only. Status of the build step. At this time, build step status is only updated on build completion; step status is not updated in real-time as the build progresses.
          &quot;timeout&quot;: &quot;A String&quot;, # 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.
          &quot;timing&quot;: { # Start and end times for a build execution phase. # Output only. Stores timing information for executing this build step.
            &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
            &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
          },
          &quot;volumes&quot;: [ # 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.
            { # Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.
              &quot;name&quot;: &quot;A String&quot;, # 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.
              &quot;path&quot;: &quot;A String&quot;, # 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.
            },
          ],
          &quot;waitFor&quot;: [ # 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 `wait_for` have completed successfully. If `wait_for` is empty, this build step will start when all previous build steps in the `Build.Steps` list have completed successfully.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;substitutions&quot;: { # Substitutions data for `Build` resource.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;tags&quot;: [ # Tags for annotation of a `Build`. These are not docker tags.
        &quot;A String&quot;,
      ],
      &quot;timeout&quot;: &quot;A String&quot;, # 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`. `timeout` starts ticking from `startTime`. Default time is ten minutes.
      &quot;timing&quot;: { # Output only. Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps * PUSH: time to push all specified images. * FETCHSOURCE: time to fetch source. If the build does not specify source or images, these keys will not be included.
        &quot;a_key&quot;: { # Start and end times for a build execution phase.
          &quot;endTime&quot;: &quot;A String&quot;, # End of time span.
          &quot;startTime&quot;: &quot;A String&quot;, # Start of time span.
        },
      },
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to receive the next page of results. This will be absent if the end of the response list has been reached.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="retry">retry(projectId, id, body=None, x__xgafv=None)</code>
  <pre>Creates a new build based on the specified build. This method creates a new build using the original build request, which may or may not result in an identical build. For triggered builds: * Triggered builds resolve to a precise revision; therefore a retry of a triggered build will result in a build that uses the same revision. For non-triggered builds that specify `RepoSource`: * If the original build built from the tip of a branch, the retried build will build from the tip of that branch, which may not be the same revision as the original build. * If the original build specified a commit sha or revision ID, the retried build will use the identical source. For builds that specify `StorageSource`: * If the original build pulled source from Google Cloud Storage without specifying the generation of the object, the new build will use the current object, which may be different from the original build source. * If the original build pulled source from Cloud Storage and specified the generation of the object, the new build will attempt to use the same object, which may or may not be available depending on the bucket&#x27;s lifecycle management settings.

Args:
  projectId: string, Required. ID of the project. (required)
  id: string, Required. Build ID of the original build. (required)
  body: object, The request body.
    The object takes the form of:

{ # Specifies a build to retry.
  &quot;id&quot;: &quot;A String&quot;, # Required. Build ID of the original build.
  &quot;name&quot;: &quot;A String&quot;, # The name of the `Build` to retry. Format: `projects/{project}/locations/{location}/builds/{build}`
  &quot;projectId&quot;: &quot;A String&quot;, # Required. ID of the project.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

</body></html>