mmv1/products/firebaseapphosting/Build.yaml (273 lines of code) (raw):
# Copyright 2024 Google Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
name: Build
description: |-
A single build for a backend, at a specific point codebase reference tag
and point in time. Encapsulates several resources, including an Artifact Registry
container image, a Cloud Build invocation that built the image, and the
Cloud Run revision that uses that image.
base_url: projects/{{project}}/locations/{{location}}/backends/{{backend}}/builds
immutable: true
self_link: projects/{{project}}/locations/{{location}}/backends/{{backend}}/builds/{{build_id}}
create_url: projects/{{project}}/locations/{{location}}/backends/{{backend}}/builds?buildId={{build_id}}
id_format: projects/{{project}}/locations/{{location}}/backends/{{backend}}/builds/{{build_id}}
# A Build can't be deleted while serving traffic. Old Builds will be auto cleaned up in the background.
exclude_delete: true
exclude_sweeper: true
import_format:
- projects/{{project}}/locations/{{location}}/backends/{{backend}}/builds/{{build_id}}
- "{{project}}/{{location}}/{{backend}}/{{build_id}}"
- "{{location}}/{{backend}}/{{build_id}}"
examples:
- name: firebase_app_hosting_build_minimal
primary_resource_id: example
vars:
backend_id: "mini"
build_id: "mini-build"
service_act_id: "firebase-app-hosting-compute"
test_env_vars:
project_id: "PROJECT_NAME"
test_vars_overrides:
# prevent tests from colliding with each other
service_act_id: '"tf-test-build-min"'
- name: firebase_app_hosting_build_full
primary_resource_id: example
vars:
backend_id: "full"
build_id: "full-build"
service_act_id: "firebase-app-hosting-compute"
test_env_vars:
project_id: "PROJECT_NAME"
test_vars_overrides:
# prevent tests from colliding with each other
service_act_id: '"tf-test-build-full"'
- name: firebase_app_hosting_build_github
primary_resource_id: example
vars:
backend_id: "mini"
build_id: "gh-build"
test_env_vars:
project_id: "PROJECT_NAME"
# Can't establish a Github connection in automated tests.
exclude_test: true
autogen_async: true
async:
operation:
timeouts:
insert_minutes: 20
base_url: "{{op_id}}"
actions:
- create
type: OpAsync
result:
resource_inside_response: true
include_project: false
# Build errors are surfaced in the resource itself
suppress_error: true
autogen_status: QnVpbGQ=
parameters:
- name: location
type: String
description: The location of the Backend that this Build applies to
immutable: true
url_param_only: true
required: true
- name: backend
type: ResourceRef
description: The ID of the Backend that this Build applies to
immutable: true
url_param_only: true
required: true
resource: "Backend"
imports: "backendId"
- name: buildId
type: String
description: The user-specified ID of the build being created.
immutable: true
url_param_only: true
required: true
properties:
# Standard uninteresting fields
- name: displayName
type: String
description: Human-readable name. 63 character limit.
- name: annotations
type: KeyValueAnnotations
description: |-
Unstructured key value map that may be set by external tools to
store and arbitrary metadata. They are not queryable and should be
preserved when modifying objects.
- name: labels
type: KeyValueLabels
description: |-
Unstructured key value map that can be used to organize and categorize
objects.
- name: name
type: String
description: |-
Identifier. The resource name of the build.
Format:
`projects/{project}/locations/{locationId}/backends/{backendId}/builds/{buildId}`.
output: true
- name: createTime
type: String
description: Time at which the build was created.
output: true
- name: updateTime
type: String
description: Time at which the build was last updated.
output: true
- name: etag
type: Fingerprint
description: |-
Server-computed checksum based on other values; may be sent
on update or delete to ensure operation is done on expected resource.
output: true
- name: uid
type: String
description: System-assigned, unique identifier.
output: true
# Intersting fields
- name: image
type: String
description: |-
The Artifact Registry
[container
image](https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories.dockerImages)
URI, used by the Cloud Run
[`revision`](https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.services.revisions)
for this build.
output: true
- name: buildLogsUri
type: String
description: |-
The location of the [Cloud Build
logs](https://cloud.google.com/build/docs/view-build-results) for the build
process.
output: true
- name: state
type: String
description: |-
The state of the build.
Possible values:
BUILDING
BUILT
DEPLOYING
READY
FAILED
output: true
- name: errorSource
type: String
description: |-
The source of the error for the build, if in a `FAILED` state.
Possible values:
CLOUD_BUILD
CLOUD_RUN
output: true
- name: environment
type: String
description: The environment name of the backend when this build was created.
output: true
- name: source
type: NestedObject
description: The source for the build.
required: true
properties:
- name: container
type: NestedObject
exactly_one_of:
- source.0.container
- source.0.codebase
description: |-
The URI of an Artifact Registry
[container
image](https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories.dockerImages)
to use as the build source.
properties:
- name: image
type: String
description: A URI representing a container for the backend to use.
required: true
- name: codebase
type: NestedObject
exactly_one_of:
- source.0.container
- source.0.codebase
description: |-
A codebase source, representing the state of the codebase
that the build will be created at.
properties:
- name: displayName
type: String
description: |-
The human-friendly name to use for this Codebase when displaying a build.
We use the first eight characters of the SHA-1 hash for GitHub.com.
output: true
- name: hash
type: String
description: The full SHA-1 hash of a Git commit, if available.
output: true
- name: commitMessage
type: String
description: The message of a codebase change.
output: true
- name: uri
type: String
description: |-
A URI linking to the codebase on an hosting provider's website. May
not be valid if the commit has been rebased or force-pushed out of
existence in the linked repository.
output: true
- name: author
type: NestedObject
description: |-
Version control metadata for a user associated with a resolved codebase.
Currently assumes a Git user.
output: true
properties:
- name: displayName
type: String
description: The 'name' field in a Git user's git.config. Required by Git.
output: true
- name: email
type: String
description: The 'email' field in a Git user's git.config, if available.
output: true
- name: imageUri
type: String
description: |-
The URI of an image file associated with the user's account in an
external source control provider, if available.
output: true
- name: commitTime
type: String
description: The time the change was made.
output: true
- name: branch
type: String
description: The branch in the codebase to build from, using the latest commit.
- name: commit
type: String
description: The commit in the codebase to build from.
- name: error
type: NestedObject
output: true
description: |-
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).
properties:
- name: code
type: Integer
output: true
description: The status code, which should be an enum value of google.rpc.Code.
- name: message
type: String
output: true
description: |-
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.
- name: details
type: Array
output: true
description: |-
A list of messages that carry the error details. There is a common set of
message types for APIs to use.
item_type:
type: KeyValuePairs