// Copyright 2022 Google LLC
//
// 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.
syntax = "proto3";
package google.cloud.deploy.v1;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/longrunning/operations.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/timestamp.proto";
import "google/type/date.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/deploy/v1;deploy";
option java_multiple_files = true;
option java_outer_classname = "CloudDeployProto";
option java_package = "com.google.cloud.deploy.v1";
option (google.api.resource_definition) = {
type: "cloudbuild.googleapis.com/Build"
pattern: "projects/{project}/locations/{location}/builds/{build}"
};
option (google.api.resource_definition) = {
type: "container.googleapis.com/Cluster"
pattern: "projects/{project}/locations/{location}/clusters/{cluster}"
};
option (google.api.resource_definition) = {
type: "clouddeploy.googleapis.com/Operation"
pattern: "projects/{project}/locations/{location}/operations/{operation}"
};
option (google.api.resource_definition) = {
type: "cloudbuild.googleapis.com/WorkerPool"
pattern: "projects/{project}/locations/{location}/workerPools/{worker_pool}"
};
option (google.api.resource_definition) = {
type: "gkehub.googleapis.com/Membership"
pattern: "projects/{project}/locations/{location}/memberships/{membership}"
};
// CloudDeploy service creates and manages Continuous Delivery operations
// on Google Cloud Platform via Skaffold (https://skaffold.dev).
service CloudDeploy {
option (google.api.default_host) = "clouddeploy.googleapis.com";
option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
// Lists DeliveryPipelines in a given project and location.
rpc ListDeliveryPipelines(ListDeliveryPipelinesRequest) returns (ListDeliveryPipelinesResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*}/deliveryPipelines"
};
option (google.api.method_signature) = "parent";
}
// Gets details of a single DeliveryPipeline.
rpc GetDeliveryPipeline(GetDeliveryPipelineRequest) returns (DeliveryPipeline) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/deliveryPipelines/*}"
};
option (google.api.method_signature) = "name";
}
// Creates a new DeliveryPipeline in a given project and location.
rpc CreateDeliveryPipeline(CreateDeliveryPipelineRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1/{parent=projects/*/locations/*}/deliveryPipelines"
body: "delivery_pipeline"
};
option (google.api.method_signature) = "parent,delivery_pipeline,delivery_pipeline_id";
option (google.longrunning.operation_info) = {
response_type: "DeliveryPipeline"
metadata_type: "OperationMetadata"
};
}
// Updates the parameters of a single DeliveryPipeline.
rpc UpdateDeliveryPipeline(UpdateDeliveryPipelineRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
patch: "/v1/{delivery_pipeline.name=projects/*/locations/*/deliveryPipelines/*}"
body: "delivery_pipeline"
};
option (google.api.method_signature) = "delivery_pipeline,update_mask";
option (google.longrunning.operation_info) = {
response_type: "DeliveryPipeline"
metadata_type: "OperationMetadata"
};
}
// Deletes a single DeliveryPipeline.
rpc DeleteDeliveryPipeline(DeleteDeliveryPipelineRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
delete: "/v1/{name=projects/*/locations/*/deliveryPipelines/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "google.protobuf.Empty"
metadata_type: "OperationMetadata"
};
}
// Lists Targets in a given project and location.
rpc ListTargets(ListTargetsRequest) returns (ListTargetsResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*}/targets"
};
option (google.api.method_signature) = "parent";
}
// Gets details of a single Target.
rpc GetTarget(GetTargetRequest) returns (Target) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/targets/*}"
};
option (google.api.method_signature) = "name";
}
// Creates a new Target in a given project and location.
rpc CreateTarget(CreateTargetRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1/{parent=projects/*/locations/*}/targets"
body: "target"
};
option (google.api.method_signature) = "parent,target,target_id";
option (google.longrunning.operation_info) = {
response_type: "Target"
metadata_type: "OperationMetadata"
};
}
// Updates the parameters of a single Target.
rpc UpdateTarget(UpdateTargetRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
patch: "/v1/{target.name=projects/*/locations/*/targets/*}"
body: "target"
};
option (google.api.method_signature) = "target,update_mask";
option (google.longrunning.operation_info) = {
response_type: "Target"
metadata_type: "OperationMetadata"
};
}
// Deletes a single Target.
rpc DeleteTarget(DeleteTargetRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
delete: "/v1/{name=projects/*/locations/*/targets/*}"
};
option (google.api.method_signature) = "name";
option (google.longrunning.operation_info) = {
response_type: "google.protobuf.Empty"
metadata_type: "OperationMetadata"
};
}
// Lists Releases in a given project and location.
rpc ListReleases(ListReleasesRequest) returns (ListReleasesResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/deliveryPipelines/*}/releases"
};
option (google.api.method_signature) = "parent";
}
// Gets details of a single Release.
rpc GetRelease(GetReleaseRequest) returns (Release) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/deliveryPipelines/*/releases/*}"
};
option (google.api.method_signature) = "name";
}
// Creates a new Release in a given project and location.
rpc CreateRelease(CreateReleaseRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1/{parent=projects/*/locations/*/deliveryPipelines/*}/releases"
body: "release"
};
option (google.api.method_signature) = "parent,release,release_id";
option (google.longrunning.operation_info) = {
response_type: "Release"
metadata_type: "OperationMetadata"
};
}
// Abandons a Release in the Delivery Pipeline.
rpc AbandonRelease(AbandonReleaseRequest) returns (AbandonReleaseResponse) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/deliveryPipelines/*/releases/*}:abandon"
body: "*"
};
option (google.api.method_signature) = "name";
}
// Approves a Rollout.
rpc ApproveRollout(ApproveRolloutRequest) returns (ApproveRolloutResponse) {
option (google.api.http) = {
post: "/v1/{name=projects/*/locations/*/deliveryPipelines/*/releases/*/rollouts/*}:approve"
body: "*"
};
option (google.api.method_signature) = "name";
}
// Lists Rollouts in a given project and location.
rpc ListRollouts(ListRolloutsRequest) returns (ListRolloutsResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/deliveryPipelines/*/releases/*}/rollouts"
};
option (google.api.method_signature) = "parent";
}
// Gets details of a single Rollout.
rpc GetRollout(GetRolloutRequest) returns (Rollout) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/deliveryPipelines/*/releases/*/rollouts/*}"
};
option (google.api.method_signature) = "name";
}
// Creates a new Rollout in a given project and location.
rpc CreateRollout(CreateRolloutRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1/{parent=projects/*/locations/*/deliveryPipelines/*/releases/*}/rollouts"
body: "rollout"
};
option (google.api.method_signature) = "parent,rollout,rollout_id";
option (google.longrunning.operation_info) = {
response_type: "Rollout"
metadata_type: "OperationMetadata"
};
}
// Retries the specified Job in a Rollout.
rpc RetryJob(RetryJobRequest) returns (RetryJobResponse) {
option (google.api.http) = {
post: "/v1/{rollout=projects/*/locations/*/deliveryPipelines/*/releases/*/rollouts/*}:retryJob"
body: "*"
};
option (google.api.method_signature) = "rollout,phase_id,job_id";
}
// Lists JobRuns in a given project and location.
rpc ListJobRuns(ListJobRunsRequest) returns (ListJobRunsResponse) {
option (google.api.http) = {
get: "/v1/{parent=projects/*/locations/*/deliveryPipelines/*/releases/*/rollouts/*}/jobRuns"
};
option (google.api.method_signature) = "parent";
}
// Gets details of a single JobRun.
rpc GetJobRun(GetJobRunRequest) returns (JobRun) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/deliveryPipelines/*/releases/*/rollouts/*/jobRuns/*}"
};
option (google.api.method_signature) = "name";
}
// Gets the configuration for a location.
rpc GetConfig(GetConfigRequest) returns (Config) {
option (google.api.http) = {
get: "/v1/{name=projects/*/locations/*/config}"
};
option (google.api.method_signature) = "name";
}
}
// A `DeliveryPipeline` resource in the Google Cloud Deploy API.
//
// A `DeliveryPipeline` defines a pipeline through which a Skaffold
// configuration can progress.
message DeliveryPipeline {
option (google.api.resource) = {
type: "clouddeploy.googleapis.com/DeliveryPipeline"
pattern: "projects/{project}/locations/{location}/deliveryPipelines/{delivery_pipeline}"
};
// Optional. Name of the `DeliveryPipeline`. Format is projects/{project}/
// locations/{location}/deliveryPipelines/[a-z][a-z0-9\-]{0,62}.
string name = 1 [(google.api.field_behavior) = OPTIONAL];
// Output only. Unique identifier of the `DeliveryPipeline`.
string uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Description of the `DeliveryPipeline`. Max length is 255 characters.
string description = 3;
// User annotations. These attributes can only be set and used by the
// user, and not by Google Cloud Deploy.
map<string, string> annotations = 4;
// Labels are attributes that can be set and used by both the
// user and by Google Cloud Deploy. Labels must meet the following
// constraints:
//
// * Keys and values can contain only lowercase letters, numeric characters,
// underscores, and dashes.
// * All characters must use UTF-8 encoding, and international characters are
// allowed.
// * Keys must start with a lowercase letter or international character.
// * Each resource is limited to a maximum of 64 labels.
//
// Both keys and values are additionally constrained to be <= 128 bytes.
map<string, string> labels = 5;
// Output only. Time at which the pipeline was created.
google.protobuf.Timestamp create_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Most recent time at which the pipeline was updated.
google.protobuf.Timestamp update_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
// The ordering configuration of the `DeliveryPipeline`.
oneof pipeline {
// SerialPipeline defines a sequential set of stages for a
// `DeliveryPipeline`.
SerialPipeline serial_pipeline = 8;
}
// Output only. Information around the state of the Delivery Pipeline.
PipelineCondition condition = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
// This checksum is computed by the server based on the value of other
// fields, and may be sent on update and delete requests to ensure the
// client has an up-to-date value before proceeding.
string etag = 10;
// When suspended, no new releases or rollouts can be created,
// but in-progress ones will complete.
bool suspended = 12;
}
// SerialPipeline defines a sequential set of stages for a `DeliveryPipeline`.
message SerialPipeline {
// Each stage specifies configuration for a `Target`. The ordering
// of this list defines the promotion flow.
repeated Stage stages = 1;
}
// Stage specifies a location to which to deploy.
message Stage {
// The target_id to which this stage points. This field refers exclusively to
// the last segment of a target name. For example, this field would just be
// `my-target` (rather than
// `projects/project/locations/location/targets/my-target`). The location of
// the `Target` is inferred to be the same as the location of the
// `DeliveryPipeline` that contains this `Stage`.
string target_id = 1;
// Skaffold profiles to use when rendering the manifest for this stage's
// `Target`.
repeated string profiles = 2;
// Optional. The strategy to use for a `Rollout` to this stage.
Strategy strategy = 5 [(google.api.field_behavior) = OPTIONAL];
}
// Strategy contains deployment strategy information.
message Strategy {
// Deployment strategy details.
oneof deployment_strategy {
// Standard deployment strategy executes a single deploy and allows
// verifying the deployment.
Standard standard = 1;
}
}
// Standard represents the standard deployment strategy.
message Standard {
// Whether to verify a deployment.
bool verify = 1;
}
// PipelineReadyCondition contains information around the status of the
// Pipeline.
message PipelineReadyCondition {
// True if the Pipeline is in a valid state. Otherwise at least one condition
// in `PipelineCondition` is in an invalid state. Iterate over those
// conditions and see which condition(s) has status = false to find out what
// is wrong with the Pipeline.
bool status = 3;
// Last time the condition was updated.
google.protobuf.Timestamp update_time = 4;
}
// TargetsPresentCondition contains information on any Targets defined in
// the Delivery Pipeline that do not actually exist.
message TargetsPresentCondition {
// True if there aren't any missing Targets.
bool status = 1;
// The list of Target names that are missing. For example,
// projects/{project_id}/locations/{location_name}/targets/{target_name}.
repeated string missing_targets = 2 [(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/Target"
}];
// Last time the condition was updated.
google.protobuf.Timestamp update_time = 4;
}
// PipelineCondition contains all conditions relevant to a Delivery Pipeline.
message PipelineCondition {
// Details around the Pipeline's overall status.
PipelineReadyCondition pipeline_ready_condition = 1;
// Detalis around targets enumerated in the pipeline.
TargetsPresentCondition targets_present_condition = 3;
}
// The request object for `ListDeliveryPipelines`.
message ListDeliveryPipelinesRequest {
// Required. The parent, which owns this collection of pipelines. Format must be
// projects/{project_id}/locations/{location_name}.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "clouddeploy.googleapis.com/DeliveryPipeline"
}
];
// The maximum number of pipelines to return. The service may return
// fewer than this value. If unspecified, at most 50 pipelines will
// be returned. The maximum value is 1000; values above 1000 will be set
// to 1000.
int32 page_size = 2;
// A page token, received from a previous `ListDeliveryPipelines` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other provided parameters match
// the call that provided the page token.
string page_token = 3;
// Filter pipelines to be returned. See https://google.aip.dev/160 for more
// details.
string filter = 4;
// Field to sort by. See https://google.aip.dev/132#ordering for more details.
string order_by = 5;
}
// The response object from `ListDeliveryPipelines`.
message ListDeliveryPipelinesResponse {
// The `DeliveryPipeline` objects.
repeated DeliveryPipeline delivery_pipelines = 1;
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there are no subsequent pages.
string next_page_token = 2;
// Locations that could not be reached.
repeated string unreachable = 3;
}
// The request object for `GetDeliveryPipeline`
message GetDeliveryPipelineRequest {
// Required. Name of the `DeliveryPipeline`. Format must be
// projects/{project_id}/locations/{location_name}/deliveryPipelines/{pipeline_name}.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/DeliveryPipeline"
}
];
}
// The request object for `CreateDeliveryPipeline`.
message CreateDeliveryPipelineRequest {
// Required. The parent collection in which the `DeliveryPipeline` should be created.
// Format should be projects/{project_id}/locations/{location_name}.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "clouddeploy.googleapis.com/DeliveryPipeline"
}
];
// Required. ID of the `DeliveryPipeline`.
string delivery_pipeline_id = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The `DeliveryPipeline` to create.
DeliveryPipeline delivery_pipeline = 3 [(google.api.field_behavior) = REQUIRED];
// Optional. A request ID to identify requests. Specify a unique request ID
// so that if you must retry your request, the server will know to ignore
// the request if it has already been completed. The server will guarantee
// that for at least 60 minutes since the first request.
//
// For example, consider a situation where you make an initial request and the
// request times out. If you make the request again with the same request ID,
// the server can check if original operation with the same request ID was
// received, and if so, will ignore the second request. This prevents clients
// from accidentally creating duplicate commitments.
//
// The request ID must be a valid UUID with the exception that zero UUID is
// not supported (00000000-0000-0000-0000-000000000000).
string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. If set to true, the request is validated and the user is provided with
// an expected result, but no actual change is made.
bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL];
}
// The request object for `UpdateDeliveryPipeline`.
message UpdateDeliveryPipelineRequest {
// Required. Field mask is used to specify the fields to be overwritten in the
// `DeliveryPipeline` resource by the update.
// The fields specified in the update_mask are relative to the resource, not
// the full request. A field will be overwritten if it is in the mask. If the
// user does not provide a mask then all fields will be overwritten.
google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The `DeliveryPipeline` to update.
DeliveryPipeline delivery_pipeline = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. A request ID to identify requests. Specify a unique request ID
// so that if you must retry your request, the server will know to ignore
// the request if it has already been completed. The server will guarantee
// that for at least 60 minutes since the first request.
//
// For example, consider a situation where you make an initial request and the
// request times out. If you make the request again with the same request ID,
// the server can check if original operation with the same request ID was
// received, and if so, will ignore the second request. This prevents clients
// from accidentally creating duplicate commitments.
//
// The request ID must be a valid UUID with the exception that zero UUID is
// not supported (00000000-0000-0000-0000-000000000000).
string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. If set to true, updating a `DeliveryPipeline` that does not exist will
// result in the creation of a new `DeliveryPipeline`.
bool allow_missing = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. If set to true, the request is validated and the user is provided with
// an expected result, but no actual change is made.
bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL];
}
// The request object for `DeleteDeliveryPipeline`.
message DeleteDeliveryPipelineRequest {
// Required. The name of the `DeliveryPipeline` to delete. Format should be
// projects/{project_id}/locations/{location_name}/deliveryPipelines/{pipeline_name}.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/DeliveryPipeline"
}
];
// Optional. A request ID to identify requests. Specify a unique request ID
// so that if you must retry your request, the server will know to ignore
// the request if it has already been completed. The server will guarantee
// that for at least 60 minutes after the first request.
//
// For example, consider a situation where you make an initial request and the
// request times out. If you make the request again with the same request ID,
// the server can check if original operation with the same request ID was
// received, and if so, will ignore the second request. This prevents clients
// from accidentally creating duplicate commitments.
//
// The request ID must be a valid UUID with the exception that zero UUID is
// not supported (00000000-0000-0000-0000-000000000000).
string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. If set to true, then deleting an already deleted or non-existing
// `DeliveryPipeline` will succeed.
bool allow_missing = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. If set, validate the request and preview the review, but do not actually
// post it.
bool validate_only = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. If set to true, all child resources under this pipeline will also be
// deleted. Otherwise, the request will only work if the pipeline has
// no child resources.
bool force = 6 [(google.api.field_behavior) = OPTIONAL];
// Optional. This checksum is computed by the server based on the value of other
// fields, and may be sent on update and delete requests to ensure the
// client has an up-to-date value before proceeding.
string etag = 5 [(google.api.field_behavior) = OPTIONAL];
}
// A `Target` resource in the Google Cloud Deploy API.
//
// A `Target` defines a location to which a Skaffold configuration
// can be deployed.
message Target {
option (google.api.resource) = {
type: "clouddeploy.googleapis.com/Target"
pattern: "projects/{project}/locations/{location}/targets/{target}"
};
// Optional. Name of the `Target`. Format is
// projects/{project}/locations/{location}/targets/[a-z][a-z0-9\-]{0,62}.
string name = 1 [(google.api.field_behavior) = OPTIONAL];
// Output only. Resource id of the `Target`.
string target_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Unique identifier of the `Target`.
string uid = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. Description of the `Target`. Max length is 255 characters.
string description = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. User annotations. These attributes can only be set and used by the
// user, and not by Google Cloud Deploy. See
// https://google.aip.dev/128#annotations for more details such as format and
// size limitations.
map<string, string> annotations = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Labels are attributes that can be set and used by both the
// user and by Google Cloud Deploy. Labels must meet the following
// constraints:
//
// * Keys and values can contain only lowercase letters, numeric characters,
// underscores, and dashes.
// * All characters must use UTF-8 encoding, and international characters are
// allowed.
// * Keys must start with a lowercase letter or international character.
// * Each resource is limited to a maximum of 64 labels.
//
// Both keys and values are additionally constrained to be <= 128 bytes.
map<string, string> labels = 6 [(google.api.field_behavior) = OPTIONAL];
// Optional. Whether or not the `Target` requires approval.
bool require_approval = 13 [(google.api.field_behavior) = OPTIONAL];
// Output only. Time at which the `Target` was created.
google.protobuf.Timestamp create_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Most recent time at which the `Target` was updated.
google.protobuf.Timestamp update_time = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
// Destination to which the Skaffold configuration is applied during a
// rollout.
oneof deployment_target {
// Information specifying a GKE Cluster.
GkeCluster gke = 15;
// Information specifying an Anthos Cluster.
AnthosCluster anthos_cluster = 17;
// Information specifying a Cloud Run deployment target.
CloudRunLocation run = 18;
}
// Optional. This checksum is computed by the server based on the value of other
// fields, and may be sent on update and delete requests to ensure the
// client has an up-to-date value before proceeding.
string etag = 12 [(google.api.field_behavior) = OPTIONAL];
// Configurations for all execution that relates to this `Target`.
// Each `ExecutionEnvironmentUsage` value may only be used in a single
// configuration; using the same value multiple times is an error.
// When one or more configurations are specified, they must include the
// `RENDER` and `DEPLOY` `ExecutionEnvironmentUsage` values.
// When no configurations are specified, execution will use the default
// specified in `DefaultPool`.
repeated ExecutionConfig execution_configs = 16;
}
// Configuration of the environment to use when calling Skaffold.
message ExecutionConfig {
// Possible usages of this configuration.
enum ExecutionEnvironmentUsage {
// Default value. This value is unused.
EXECUTION_ENVIRONMENT_USAGE_UNSPECIFIED = 0;
// Use for rendering.
RENDER = 1;
// Use for deploying and deployment hooks.
DEPLOY = 2;
// Use for deployment verification.
VERIFY = 3;
}
// Required. Usages when this configuration should be applied.
repeated ExecutionEnvironmentUsage usages = 1 [(google.api.field_behavior) = REQUIRED];
// Details of the environment.
oneof execution_environment {
// Optional. Use default Cloud Build pool.
DefaultPool default_pool = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Use private Cloud Build pool.
PrivatePool private_pool = 3 [(google.api.field_behavior) = OPTIONAL];
}
// Optional. The resource name of the `WorkerPool`, with the format
// `projects/{project}/locations/{location}/workerPools/{worker_pool}`.
// If this optional field is unspecified, the default Cloud Build pool will be
// used.
string worker_pool = 4 [
(google.api.field_behavior) = OPTIONAL,
(google.api.resource_reference) = {
type: "cloudbuild.googleapis.com/WorkerPool"
}
];
// Optional. Google service account to use for execution. If unspecified,
// the project execution service account
// (<PROJECT_NUMBER>-compute@developer.gserviceaccount.com) is used.
string service_account = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Cloud Storage location in which to store execution outputs. This can
// either be a bucket ("gs://my-bucket") or a path within a bucket
// ("gs://my-bucket/my-dir").
// If unspecified, a default bucket located in the same region will be used.
string artifact_storage = 6 [(google.api.field_behavior) = OPTIONAL];
// Optional. Execution timeout for a Cloud Build Execution. This must be between 10m and
// 24h in seconds format.
// If unspecified, a default timeout of 1h is used.
google.protobuf.Duration execution_timeout = 7 [(google.api.field_behavior) = OPTIONAL];
}
// Execution using the default Cloud Build pool.
message DefaultPool {
// Optional. Google service account to use for execution. If unspecified,
// the project execution service account
// (<PROJECT_NUMBER>-compute@developer.gserviceaccount.com) will be used.
string service_account = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Cloud Storage location where execution outputs should be stored. This can
// either be a bucket ("gs://my-bucket") or a path within a bucket
// ("gs://my-bucket/my-dir").
// If unspecified, a default bucket located in the same region will be used.
string artifact_storage = 2 [(google.api.field_behavior) = OPTIONAL];
}
// Execution using a private Cloud Build pool.
message PrivatePool {
// Required. Resource name of the Cloud Build worker pool to use. The format is
// `projects/{project}/locations/{location}/workerPools/{pool}`.
string worker_pool = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "cloudbuild.googleapis.com/WorkerPool"
}
];
// Optional. Google service account to use for execution. If unspecified,
// the project execution service account
// (<PROJECT_NUMBER>-compute@developer.gserviceaccount.com) will be used.
string service_account = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Cloud Storage location where execution outputs should be stored. This can
// either be a bucket ("gs://my-bucket") or a path within a bucket
// ("gs://my-bucket/my-dir").
// If unspecified, a default bucket located in the same region will be used.
string artifact_storage = 3 [(google.api.field_behavior) = OPTIONAL];
}
// Information specifying a GKE Cluster.
message GkeCluster {
// Information specifying a GKE Cluster. Format is
// `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}.
string cluster = 1 [(google.api.resource_reference) = {
type: "container.googleapis.com/Cluster"
}];
// Optional. If true, `cluster` is accessed using the private IP address of the control
// plane endpoint. Otherwise, the default IP address of the control plane
// endpoint is used. The default IP address is the private IP address for
// clusters with private control-plane endpoints and the public IP address
// otherwise.
//
// Only specify this option when `cluster` is a [private GKE
// cluster](https://cloud.google.com/kubernetes-engine/docs/concepts/private-cluster-concept).
bool internal_ip = 2 [(google.api.field_behavior) = OPTIONAL];
}
// Information specifying an Anthos Cluster.
message AnthosCluster {
// Membership of the GKE Hub-registered cluster to which to apply the Skaffold
// configuration. Format is
// `projects/{project}/locations/{location}/memberships/{membership_name}`.
string membership = 1 [(google.api.resource_reference) = {
type: "gkehub.googleapis.com/Membership"
}];
}
// Information specifying where to deploy a Cloud Run Service.
message CloudRunLocation {
// Required. The location for the Cloud Run Service. Format must be
// `projects/{project}/locations/{location}`.
string location = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "locations.googleapis.com/Location"
}
];
}
// The request object for `ListTargets`.
message ListTargetsRequest {
// Required. The parent, which owns this collection of targets. Format must be
// projects/{project_id}/locations/{location_name}.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "clouddeploy.googleapis.com/Target"
}
];
// Optional. The maximum number of `Target` objects to return. The service may return
// fewer than this value. If unspecified, at most 50 `Target` objects will be
// returned. The maximum value is 1000; values above 1000 will be set to 1000.
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. A page token, received from a previous `ListTargets` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other provided parameters match
// the call that provided the page token.
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Filter targets to be returned. See https://google.aip.dev/160 for more
// details.
string filter = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Field to sort by. See https://google.aip.dev/132#ordering for more details.
string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
}
// The response object from `ListTargets`.
message ListTargetsResponse {
// The `Target` objects.
repeated Target targets = 1;
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there are no subsequent pages.
string next_page_token = 2;
// Locations that could not be reached.
repeated string unreachable = 3;
}
// The request object for `GetTarget`.
message GetTargetRequest {
// Required. Name of the `Target`. Format must be
// projects/{project_id}/locations/{location_name}/targets/{target_name}.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/Target"
}
];
}
// The request object for `CreateTarget`.
message CreateTargetRequest {
// Required. The parent collection in which the `Target` should be created.
// Format should be
// projects/{project_id}/locations/{location_name}.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
child_type: "clouddeploy.googleapis.com/Target"
}
];
// Required. ID of the `Target`.
string target_id = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The `Target` to create.
Target target = 3 [(google.api.field_behavior) = REQUIRED];
// Optional. A request ID to identify requests. Specify a unique request ID
// so that if you must retry your request, the server will know to ignore
// the request if it has already been completed. The server will guarantee
// that for at least 60 minutes since the first request.
//
// For example, consider a situation where you make an initial request and the
// request times out. If you make the request again with the same request ID,
// the server can check if original operation with the same request ID was
// received, and if so, will ignore the second request. This prevents clients
// from accidentally creating duplicate commitments.
//
// The request ID must be a valid UUID with the exception that zero UUID is
// not supported (00000000-0000-0000-0000-000000000000).
string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. If set to true, the request is validated and the user is provided with
// an expected result, but no actual change is made.
bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL];
}
// The request object for `UpdateTarget`.
message UpdateTargetRequest {
// Required. Field mask is used to specify the fields to be overwritten in the
// Target resource by the update.
// The fields specified in the update_mask are relative to the resource, not
// the full request. A field will be overwritten if it is in the mask. If the
// user does not provide a mask then all fields will be overwritten.
google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = REQUIRED];
// Required. The `Target` to update.
Target target = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. A request ID to identify requests. Specify a unique request ID
// so that if you must retry your request, the server will know to ignore
// the request if it has already been completed. The server will guarantee
// that for at least 60 minutes since the first request.
//
// For example, consider a situation where you make an initial request and the
// request times out. If you make the request again with the same request ID,
// the server can check if original operation with the same request ID was
// received, and if so, will ignore the second request. This prevents clients
// from accidentally creating duplicate commitments.
//
// The request ID must be a valid UUID with the exception that zero UUID is
// not supported (00000000-0000-0000-0000-000000000000).
string request_id = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. If set to true, updating a `Target` that does not exist will
// result in the creation of a new `Target`.
bool allow_missing = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. If set to true, the request is validated and the user is provided with
// an expected result, but no actual change is made.
bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL];
}
// The request object for `DeleteTarget`.
message DeleteTargetRequest {
// Required. The name of the `Target` to delete. Format should be
// projects/{project_id}/locations/{location_name}/targets/{target_name}.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/Target"
}
];
// Optional. A request ID to identify requests. Specify a unique request ID
// so that if you must retry your request, the server will know to ignore
// the request if it has already been completed. The server will guarantee
// that for at least 60 minutes after the first request.
//
// For example, consider a situation where you make an initial request and the
// request times out. If you make the request again with the same request ID,
// the server can check if original operation with the same request ID was
// received, and if so, will ignore the second request. This prevents clients
// from accidentally creating duplicate commitments.
//
// The request ID must be a valid UUID with the exception that zero UUID is
// not supported (00000000-0000-0000-0000-000000000000).
string request_id = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. If set to true, then deleting an already deleted or non-existing
// DeliveryPipeline will succeed.
bool allow_missing = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. If set, validate the request and preview the review, but do not actually
// post it.
bool validate_only = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. This checksum is computed by the server based on the value of other
// fields, and may be sent on update and delete requests to ensure the
// client has an up-to-date value before proceeding.
string etag = 5 [(google.api.field_behavior) = OPTIONAL];
}
// A `Release` resource in the Google Cloud Deploy API.
//
// A `Release` defines a specific Skaffold configuration instance
// that can be deployed.
message Release {
option (google.api.resource) = {
type: "clouddeploy.googleapis.com/Release"
pattern: "projects/{project}/locations/{location}/deliveryPipelines/{delivery_pipeline}/releases/{release}"
};
// Valid states of the render operation.
enum RenderState {
// The render state is unspecified.
RENDER_STATE_UNSPECIFIED = 0;
// All rendering operations have completed successfully.
SUCCEEDED = 1;
// All rendering operations have completed, and one or more have failed.
FAILED = 2;
// Rendering has started and is not complete.
IN_PROGRESS = 3;
}
// Details of rendering for a single target.
message TargetRender {
// Valid states of the render operation.
enum TargetRenderState {
// The render operation state is unspecified.
TARGET_RENDER_STATE_UNSPECIFIED = 0;
// The render operation has completed successfully.
SUCCEEDED = 1;
// The render operation has failed.
FAILED = 2;
// The render operation is in progress.
IN_PROGRESS = 3;
}
// Well-known rendering failures.
enum FailureCause {
// No reason for failure is specified.
FAILURE_CAUSE_UNSPECIFIED = 0;
// Cloud Build is not available, either because it is not enabled or
// because Google Cloud Deploy has insufficient permissions. See [required
// permission](/deploy/docs/cloud-deploy-service-account#required_permissions).
CLOUD_BUILD_UNAVAILABLE = 1;
// The render operation did not complete successfully; check Cloud Build
// logs.
EXECUTION_FAILED = 2;
}
// Output only. The resource name of the Cloud Build `Build` object that is used to
// render the manifest for this target. Format is
// `projects/{project}/locations/{location}/builds/{build}`.
string rendering_build = 1 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "cloudbuild.googleapis.com/Build"
}
];
// Output only. Current state of the render operation for this Target.
TargetRenderState rendering_state = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Reason this render failed. This will always be unspecified while the
// render in progress.
FailureCause failure_cause = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Additional information about the render failure, if available.
string failure_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Optional. Name of the `Release`. Format is projects/{project}/
// locations/{location}/deliveryPipelines/{deliveryPipeline}/
// releases/[a-z][a-z0-9\-]{0,62}.
string name = 1 [(google.api.field_behavior) = OPTIONAL];
// Output only. Unique identifier of the `Release`.
string uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Description of the `Release`. Max length is 255 characters.
string description = 3;
// User annotations. These attributes can only be set and used by the
// user, and not by Google Cloud Deploy. See
// https://google.aip.dev/128#annotations for more details such as format and
// size limitations.
map<string, string> annotations = 4;
// Labels are attributes that can be set and used by both the
// user and by Google Cloud Deploy. Labels must meet the following
// constraints:
//
// * Keys and values can contain only lowercase letters, numeric characters,
// underscores, and dashes.
// * All characters must use UTF-8 encoding, and international characters are
// allowed.
// * Keys must start with a lowercase letter or international character.
// * Each resource is limited to a maximum of 64 labels.
//
// Both keys and values are additionally constrained to be <= 128 bytes.
map<string, string> labels = 5;
// Output only. Indicates whether this is an abandoned release.
bool abandoned = 23 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time at which the `Release` was created.
google.protobuf.Timestamp create_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time at which the render began.
google.protobuf.Timestamp render_start_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time at which the render completed.
google.protobuf.Timestamp render_end_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
// Cloud Storage URI of tar.gz archive containing Skaffold configuration.
string skaffold_config_uri = 17;
// Filepath of the Skaffold config inside of the config URI.
string skaffold_config_path = 9;
// List of artifacts to pass through to Skaffold command.
repeated BuildArtifact build_artifacts = 10;
// Output only. Snapshot of the parent pipeline taken at release creation time.
DeliveryPipeline delivery_pipeline_snapshot = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Snapshot of the targets taken at release creation time.
repeated Target target_snapshots = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Current state of the render operation.
RenderState render_state = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
// This checksum is computed by the server based on the value of other
// fields, and may be sent on update and delete requests to ensure the
// client has an up-to-date value before proceeding.
string etag = 16;
// The Skaffold version to use when operating on this release, such as
// "1.20.0". Not all versions are valid; Google Cloud Deploy supports a
// specific set of versions.
//
// If unset, the most recent supported Skaffold version will be used.
string skaffold_version = 19;
// Output only. Map from target ID to the target artifacts created
// during the render operation.
map<string, TargetArtifact> target_artifacts = 20 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Map from target ID to details of the render operation for that target.
map<string, TargetRender> target_renders = 22 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Description of an a image to use during Skaffold rendering.
message BuildArtifact {
// Image name in Skaffold configuration.
string image = 3;
// Image tag to use. This will generally be the full path to an image, such
// as "gcr.io/my-project/busybox:1.2.3" or
// "gcr.io/my-project/busybox@sha256:abc123".
string tag = 2;
}
// The artifacts produced by a target render operation.
message TargetArtifact {
oneof uri {
// Output only. URI of a directory containing the artifacts. This contains
// deployment configuration used by Skaffold during a rollout, and all
// paths are relative to this location.
string artifact_uri = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Output only. File path of the resolved Skaffold configuration relative to the URI.
string skaffold_config_path = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. File path of the rendered manifest relative to the URI.
string manifest_path = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// The request object for `ListReleases`.
message ListReleasesRequest {
// Required. The `DeliveryPipeline` which owns this collection of `Release` objects.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/DeliveryPipeline"
}
];
// Optional. The maximum number of `Release` objects to return. The service may return
// fewer than this value. If unspecified, at most 50 `Release` objects will be
// returned. The maximum value is 1000; values above 1000 will be set to 1000.
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. A page token, received from a previous `ListReleases` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other provided parameters match
// the call that provided the page token.
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Filter releases to be returned. See https://google.aip.dev/160 for more
// details.
string filter = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Field to sort by. See https://google.aip.dev/132#ordering for more details.
string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
}
// The response object from `ListReleases`.
message ListReleasesResponse {
// The `Release` objects.
repeated Release releases = 1;
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there are no subsequent pages.
string next_page_token = 2;
// Locations that could not be reached.
repeated string unreachable = 3;
}
// The request object for `GetRelease`.
message GetReleaseRequest {
// Required. Name of the `Release`. Format must be
// projects/{project_id}/locations/{location_name}/deliveryPipelines/{pipeline_name}/releases/{release_name}.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/Release"
}
];
}
// The request object for `CreateRelease`,
message CreateReleaseRequest {
// Required. The parent collection in which the `Release` should be created.
// Format should be
// projects/{project_id}/locations/{location_name}/deliveryPipelines/{pipeline_name}.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/DeliveryPipeline"
}
];
// Required. ID of the `Release`.
string release_id = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The `Release` to create.
Release release = 3 [(google.api.field_behavior) = REQUIRED];
// Optional. A request ID to identify requests. Specify a unique request ID
// so that if you must retry your request, the server will know to ignore
// the request if it has already been completed. The server will guarantee
// that for at least 60 minutes since the first request.
//
// For example, consider a situation where you make an initial request and the
// request times out. If you make the request again with the same request ID,
// the server can check if original operation with the same request ID was
// received, and if so, will ignore the second request. This prevents clients
// from accidentally creating duplicate commitments.
//
// The request ID must be a valid UUID with the exception that zero UUID is
// not supported (00000000-0000-0000-0000-000000000000).
string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. If set to true, the request is validated and the user is provided with
// an expected result, but no actual change is made.
bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL];
}
// A `Rollout` resource in the Google Cloud Deploy API.
//
// A `Rollout` contains information around a specific deployment to a `Target`.
message Rollout {
option (google.api.resource) = {
type: "clouddeploy.googleapis.com/Rollout"
pattern: "projects/{project}/locations/{location}/deliveryPipelines/{delivery_pipeline}/releases/{release}/rollouts/{rollout}"
};
// Valid approval states of a `Rollout`.
enum ApprovalState {
// The `Rollout` has an unspecified approval state.
APPROVAL_STATE_UNSPECIFIED = 0;
// The `Rollout` requires approval.
NEEDS_APPROVAL = 1;
// The `Rollout` does not require approval.
DOES_NOT_NEED_APPROVAL = 2;
// The `Rollout` has been approved.
APPROVED = 3;
// The `Rollout` has been rejected.
REJECTED = 4;
}
// Valid states of a `Rollout`.
enum State {
// The `Rollout` has an unspecified state.
STATE_UNSPECIFIED = 0;
// The `Rollout` has completed successfully.
SUCCEEDED = 1;
// The `Rollout` has failed.
FAILED = 2;
// The `Rollout` is being deployed.
IN_PROGRESS = 3;
// The `Rollout` needs approval.
PENDING_APPROVAL = 4;
// An approver rejected the `Rollout`.
APPROVAL_REJECTED = 5;
// The `Rollout` is waiting for an earlier Rollout(s) to complete on this
// `Target`.
PENDING = 6;
// The `Rollout` is waiting for the `Release` to be fully rendered.
PENDING_RELEASE = 7;
}
// Well-known rollout failures.
enum FailureCause {
// No reason for failure is specified.
FAILURE_CAUSE_UNSPECIFIED = 0;
// Cloud Build is not available, either because it is not enabled or because
// Cloud Deploy has insufficient permissions. See [required
// permission](/deploy/docs/cloud-deploy-service-account#required_permissions).
CLOUD_BUILD_UNAVAILABLE = 1;
// The deploy operation did not complete successfully; check Cloud Build
// logs.
EXECUTION_FAILED = 2;
// Deployment did not complete within the alloted time.
DEADLINE_EXCEEDED = 3;
// Release is in a failed state.
RELEASE_FAILED = 4;
// Release is abandoned.
RELEASE_ABANDONED = 5;
// No skaffold verify configuration was found.
VERIFICATION_CONFIG_NOT_FOUND = 6;
}
// Optional. Name of the `Rollout`. Format is projects/{project}/
// locations/{location}/deliveryPipelines/{deliveryPipeline}/
// releases/{release}/rollouts/[a-z][a-z0-9\-]{0,62}.
string name = 1 [(google.api.field_behavior) = OPTIONAL];
// Output only. Unique identifier of the `Rollout`.
string uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Description of the `Rollout` for user purposes. Max length is 255
// characters.
string description = 3;
// User annotations. These attributes can only be set and used by the
// user, and not by Google Cloud Deploy. See
// https://google.aip.dev/128#annotations for more details such as format and
// size limitations.
map<string, string> annotations = 4;
// Labels are attributes that can be set and used by both the
// user and by Google Cloud Deploy. Labels must meet the following
// constraints:
//
// * Keys and values can contain only lowercase letters, numeric characters,
// underscores, and dashes.
// * All characters must use UTF-8 encoding, and international characters are
// allowed.
// * Keys must start with a lowercase letter or international character.
// * Each resource is limited to a maximum of 64 labels.
//
// Both keys and values are additionally constrained to be <= 128 bytes.
map<string, string> labels = 5;
// Output only. Time at which the `Rollout` was created.
google.protobuf.Timestamp create_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time at which the `Rollout` was approved.
google.protobuf.Timestamp approve_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time at which the `Rollout` was enqueued.
google.protobuf.Timestamp enqueue_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time at which the `Rollout` started deploying.
google.protobuf.Timestamp deploy_start_time = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time at which the `Rollout` finished deploying.
google.protobuf.Timestamp deploy_end_time = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
// Required. The ID of Target to which this `Rollout` is deploying.
string target_id = 18 [(google.api.field_behavior) = REQUIRED];
// Output only. Approval state of the `Rollout`.
ApprovalState approval_state = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Current state of the `Rollout`.
State state = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Additional information about the rollout failure, if available.
string failure_reason = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The resource name of the Cloud Build `Build` object that is used to deploy
// the Rollout. Format is
// `projects/{project}/locations/{location}/builds/{build}`.
string deploying_build = 17 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "cloudbuild.googleapis.com/Build"
}
];
// This checksum is computed by the server based on the value of other
// fields, and may be sent on update and delete requests to ensure the
// client has an up-to-date value before proceeding.
string etag = 16;
// Output only. The reason this rollout failed. This will always be unspecified while the
// rollout is in progress.
FailureCause deploy_failure_cause = 19 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The phases that represent the workflows of this `Rollout`.
repeated Phase phases = 23 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Metadata contains information about the rollout.
Metadata metadata = 24 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Metadata includes information associated with a `Rollout`.
message Metadata {
// Output only. The name of the Cloud Run Service that is associated with a `Rollout`.
CloudRunMetadata cloud_run = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// DeployJobRunMetadata surfaces information associated with a `DeployJobRun` to
// the user.
message DeployJobRunMetadata {
// Output only. The name of the Cloud Run Service that is associated with a `DeployJobRun`.
CloudRunMetadata cloud_run = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// CloudRunMetadata contains information from a Cloud Run deployment.
message CloudRunMetadata {
// Output only. The name of the Cloud Run Service that is associated with a `Rollout`.
// Format is projects/{project}/locations/{location}/services/{service}.
string service = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The Cloud Run Service urls that are associated with a `Rollout`.
repeated string service_urls = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The Cloud Run Revision id associated with a `Rollout`.
string revision = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Phase represents a collection of jobs that are logically grouped together
// for a `Rollout`.
message Phase {
// Valid states of a Phase.
enum State {
// The Phase has an unspecified state.
STATE_UNSPECIFIED = 0;
// The Phase is waiting for an earlier Phase(s) to complete.
PENDING = 1;
// The Phase is in progress.
IN_PROGRESS = 2;
// The Phase has succeeded.
SUCCEEDED = 3;
// The Phase has failed.
FAILED = 4;
// The Phase was aborted.
ABORTED = 5;
}
// Output only. The ID of the Phase.
string id = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Current state of the Phase.
State state = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// The job composition of this Phase.
oneof jobs {
// Output only. Deployment job composition.
DeploymentJobs deployment_jobs = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
}
}
// Deployment job composition.
message DeploymentJobs {
// Output only. The deploy Job. This is the first job run in the phase.
Job deploy_job = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The verify Job. Runs after a deploy if the deploy succeeds.
Job verify_job = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Job represents an operation for a `Rollout`.
message Job {
// Valid states of a Job.
enum State {
// The Job has an unspecified state.
STATE_UNSPECIFIED = 0;
// The Job is waiting for an earlier Phase(s) or Job(s) to complete.
PENDING = 1;
// The Job is disabled.
DISABLED = 2;
// The Job is in progress.
IN_PROGRESS = 3;
// The Job succeeded.
SUCCEEDED = 4;
// The Job failed.
FAILED = 5;
// The Job was aborted.
ABORTED = 6;
}
// Output only. The ID of the Job.
string id = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The current state of the Job.
State state = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The name of the `JobRun` responsible for the most recent invocation of this
// Job.
string job_run = 3 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/JobRun"
}
];
// The type of Job.
oneof job_type {
// Output only. A deploy Job.
DeployJob deploy_job = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. A verify Job.
VerifyJob verify_job = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
}
}
// A deploy Job.
message DeployJob {
}
// A verify Job.
message VerifyJob {
}
// ListRolloutsRequest is the request object used by `ListRollouts`.
message ListRolloutsRequest {
// Required. The `Release` which owns this collection of `Rollout` objects.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/Release"
}
];
// Optional. The maximum number of `Rollout` objects to return. The service may return
// fewer than this value. If unspecified, at most 50 `Rollout` objects will be
// returned. The maximum value is 1000; values above 1000 will be set to 1000.
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. A page token, received from a previous `ListRollouts` call.
// Provide this to retrieve the subsequent page.
//
// When paginating, all other provided parameters match
// the call that provided the page token.
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Filter rollouts to be returned. See https://google.aip.dev/160 for more
// details.
string filter = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Field to sort by. See https://google.aip.dev/132#ordering for more details.
string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
}
// ListRolloutsResponse is the response object reutrned by `ListRollouts`.
message ListRolloutsResponse {
// The `Rollout` objects.
repeated Rollout rollouts = 1;
// A token, which can be sent as `page_token` to retrieve the next page.
// If this field is omitted, there are no subsequent pages.
string next_page_token = 2;
// Locations that could not be reached.
repeated string unreachable = 3;
}
// GetRolloutRequest is the request object used by `GetRollout`.
message GetRolloutRequest {
// Required. Name of the `Rollout`. Format must be
// projects/{project_id}/locations/{location_name}/deliveryPipelines/{pipeline_name}/releases/{release_name}/rollouts/{rollout_name}.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/Rollout"
}
];
}
// CreateRolloutRequest is the request object used by `CreateRollout`.
message CreateRolloutRequest {
// Required. The parent collection in which the `Rollout` should be created.
// Format should be
// projects/{project_id}/locations/{location_name}/deliveryPipelines/{pipeline_name}/releases/{release_name}.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/Release"
}
];
// Required. ID of the `Rollout`.
string rollout_id = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The `Rollout` to create.
Rollout rollout = 3 [(google.api.field_behavior) = REQUIRED];
// Optional. A request ID to identify requests. Specify a unique request ID
// so that if you must retry your request, the server will know to ignore
// the request if it has already been completed. The server will guarantee
// that for at least 60 minutes since the first request.
//
// For example, consider a situation where you make an initial request and the
// request times out. If you make the request again with the same request ID,
// the server can check if original operation with the same request ID was
// received, and if so, will ignore the second request. This prevents clients
// from accidentally creating duplicate commitments.
//
// The request ID must be a valid UUID with the exception that zero UUID is
// not supported (00000000-0000-0000-0000-000000000000).
string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. If set to true, the request is validated and the user is provided with
// an expected result, but no actual change is made.
bool validate_only = 5 [(google.api.field_behavior) = OPTIONAL];
}
// Represents the metadata of the long-running operation.
message OperationMetadata {
// Output only. The time the operation was created.
google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time the operation finished running.
google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Server-defined resource path for the target of the operation.
string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Name of the verb executed by the operation.
string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Human-readable status of the operation, if any.
string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Identifies whether the user has requested cancellation
// of the operation. Operations that have successfully been cancelled
// have [Operation.error][] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
// corresponding to `Code.CANCELLED`.
bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. API version used to start the operation.
string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// The request object used by `ApproveRollout`.
message ApproveRolloutRequest {
// Required. Name of the Rollout. Format is
// projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/
// releases/{release}/rollouts/{rollout}.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/Rollout"
}
];
// Required. True = approve; false = reject
bool approved = 2 [(google.api.field_behavior) = REQUIRED];
}
// The response object from `ApproveRollout`.
message ApproveRolloutResponse {
}
// RetryJobRequest is the request object used by `RetryJob`.
message RetryJobRequest {
// Required. Name of the Rollout. Format is
// projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/
// releases/{release}/rollouts/{rollout}.
string rollout = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/Rollout"
}
];
// Required. The phase ID the Job to retry belongs to.
string phase_id = 2 [(google.api.field_behavior) = REQUIRED];
// Required. The job ID for the Job to retry.
string job_id = 3 [(google.api.field_behavior) = REQUIRED];
}
// The response object from 'RetryJob'.
message RetryJobResponse {
}
// The request object used by `AbandonRelease`.
message AbandonReleaseRequest {
// Required. Name of the Release. Format is
// projects/{project}/locations/{location}/deliveryPipelines/{deliveryPipeline}/
// releases/{release}.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/Release"
}
];
}
// The response object for `AbandonRelease`.
message AbandonReleaseResponse {
}
// A `JobRun` resource in the Google Cloud Deploy API.
//
// A `JobRun` contains information of a single `Rollout` job evaluation.
message JobRun {
option (google.api.resource) = {
type: "clouddeploy.googleapis.com/JobRun"
pattern: "projects/{project}/locations/{location}/deliveryPipelines/{delivery_pipeline}/releases/{release}/rollouts/{rollout}/jobRuns/{job_run}"
};
// Valid states of a `JobRun`.
enum State {
// The `JobRun` has an unspecified state.
STATE_UNSPECIFIED = 0;
// The `JobRun` is in progress.
IN_PROGRESS = 1;
// The `JobRun` has succeeded.
SUCCEEDED = 2;
// The `JobRun` has failed.
FAILED = 3;
}
// Optional. Name of the `JobRun`. Format is projects/{project}/locations/{location}/
// deliveryPipelines/{deliveryPipeline}/releases/{releases}/rollouts/
// {rollouts}/jobRuns/{uuid}.
string name = 1 [(google.api.field_behavior) = OPTIONAL];
// Output only. Unique identifier of the `JobRun`.
string uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. ID of the `Rollout` phase this `JobRun` belongs in.
string phase_id = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. ID of the `Rollout` job this `JobRun` corresponds to.
string job_id = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time at which the `JobRun` was created.
google.protobuf.Timestamp create_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time at which the `JobRun` was started.
google.protobuf.Timestamp start_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Time at which the `JobRun` ended.
google.protobuf.Timestamp end_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The current state of the `JobRun`.
State state = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
// The `JobRun` type and the information for that type.
oneof job_run {
// Output only. Information specific to a deploy `JobRun`.
DeployJobRun deploy_job_run = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Information specific to a verify `JobRun`.
VerifyJobRun verify_job_run = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Output only. This checksum is computed by the server based on the value of other
// fields, and may be sent on update and delete requests to ensure the
// client has an up-to-date value before proceeding.
string etag = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// DeployJobRun contains information specific to a deploy `JobRun`.
message DeployJobRun {
// Well-known deploy failures.
enum FailureCause {
// No reason for failure is specified.
FAILURE_CAUSE_UNSPECIFIED = 0;
// Cloud Build is not available, either because it is not enabled or because
// Google Cloud Deploy has insufficient permissions. See [Required
// permission](/deploy/docs/cloud-deploy-service-account#required_permissions).
CLOUD_BUILD_UNAVAILABLE = 1;
// The deploy operation did not complete successfully; check Cloud Build
// logs.
EXECUTION_FAILED = 2;
// The deploy build did not complete within the alloted time.
DEADLINE_EXCEEDED = 3;
}
// Output only. The resource name of the Cloud Build `Build` object that is used to deploy.
// Format is projects/{project}/locations/{location}/builds/{build}.
string build = 1 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "cloudbuild.googleapis.com/Build"
}
];
// Output only. The reason the deploy failed. This will always be unspecified while the
// deploy is in progress or if it succeeded.
FailureCause failure_cause = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Additional information about the deploy failure, if available.
string failure_message = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Metadata containing information about the deploy job run.
DeployJobRunMetadata metadata = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// VerifyJobRun contains information specific to a verify `JobRun`.
message VerifyJobRun {
// Well-known verify failures.
enum FailureCause {
// No reason for failure is specified.
FAILURE_CAUSE_UNSPECIFIED = 0;
// Cloud Build is not available, either because it is not enabled or because
// Google Cloud Deploy has insufficient permissions. See [required
// permission](/deploy/docs/cloud-deploy-service-account#required_permissions).
CLOUD_BUILD_UNAVAILABLE = 1;
// The verify operation did not complete successfully; check Cloud Build
// logs.
EXECUTION_FAILED = 2;
// The verify build did not complete within the alloted time.
DEADLINE_EXCEEDED = 3;
// No Skaffold verify configuration was found.
VERIFICATION_CONFIG_NOT_FOUND = 4;
}
// Output only. The resource name of the Cloud Build `Build` object that is used to verify.
// Format is projects/{project}/locations/{location}/builds/{build}.
string build = 1 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "cloudbuild.googleapis.com/Build"
}
];
// Output only. URI of a directory containing the verify artifacts. This contains the
// Skaffold event log.
string artifact_uri = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. File path of the Skaffold event log relative to the artifact URI.
string event_log_path = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The reason the verify failed. This will always be unspecified while the
// verify is in progress or if it succeeded.
FailureCause failure_cause = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Additional information about the verify failure, if available.
string failure_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// ListJobRunsRequest is the request object used by `ListJobRuns`.
message ListJobRunsRequest {
// Required. The `Rollout` which owns this collection of `JobRun` objects.
string parent = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/Rollout"
}
];
// Optional. The maximum number of `JobRun` objects to return. The service may return
// fewer than this value. If unspecified, at most 50 `JobRun` objects will be
// returned. The maximum value is 1000; values above 1000 will be set to 1000.
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. A page token, received from a previous `ListJobRuns` call. Provide this
// to retrieve the subsequent page.
//
// When paginating, all other provided parameters match the call that provided
// the page token.
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Filter results to be returned. See https://google.aip.dev/160 for more
// details.
string filter = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Field to sort by. See https://google.aip.dev/132#ordering for more details.
string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
}
// ListJobRunsResponse is the response object returned by `ListJobRuns`.
message ListJobRunsResponse {
// The `JobRun` objects.
repeated JobRun job_runs = 1;
// A token, which can be sent as `page_token` to retrieve the next page. If
// this field is omitted, there are no subsequent pages.
string next_page_token = 2;
// Locations that could not be reached
repeated string unreachable = 3;
}
// GetJobRunRequest is the request object used by `GetJobRun`.
message GetJobRunRequest {
// Required. Name of the `JobRun`. Format must be
// projects/{project_id}/locations/{location_name}/deliveryPipelines/{pipeline_name}/releases/{release_name}/rollouts/{rollout_name}/jobRuns/{job_run_name}.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/JobRun"
}
];
}
// Service-wide configuration.
message Config {
option (google.api.resource) = {
type: "clouddeploy.googleapis.com/Config"
pattern: "projects/{project}/locations/{location}/config"
};
// Name of the configuration.
string name = 1;
// Output only. All supported versions of Skaffold.
repeated SkaffoldVersion supported_versions = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Default Skaffold version that is assigned when a Release is created without
// specifying a Skaffold version.
string default_skaffold_version = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Details of a supported Skaffold version.
message SkaffoldVersion {
// Release version number. For example, "1.20.3".
string version = 1;
// Date when this version is expected to no longer be supported.
google.type.Date support_end_date = 2;
}
// Request to get a configuration.
message GetConfigRequest {
// Required. Name of requested configuration.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference) = {
type: "clouddeploy.googleapis.com/Config"
}
];
}