// Copyright 2021 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/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}" }; // 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" }; } // 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" }; } // 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. See // https://google.aip.dev/128#annotations for more details such as format and // size limitations. map 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: Each resource is limited to 64 labels. Keys must conform to // the regexp: [a-zA-Z][a-zA-Z0-9_-]{0,62} Values must conform to the regexp: // [a-zA-Z0-9_-]{0,63} Both keys and values are additionally constrained to be // <= 128 bytes in size. map 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; } // 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/deliveryPipelines/pipeline/targets/my-target`). The // parent `DeliveryPipeline` of the `Target` is inferred to be the parent // `DeliveryPipeline` of the `Release` in which this `Stage` lives. string target_id = 1; // Skaffold profiles to use when rendering the manifest for this stage's // `Target`. repeated string profiles = 2; } // 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 builds 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}/ // deliveryPipelines/{deliveryPipeline}/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 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: Each resource is limited to 64 labels. Keys must conform to // the regexp: [a-zA-Z][a-zA-Z0-9_-]{0,62} Values must conform to the regexp: // [a-zA-Z0-9_-]{0,63} Both keys and values are additionally constrained to be // <= 128 bytes in size. map 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; } // 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; } // 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]; } } // Execution using the default Cloud Build pool. message DefaultPool { // Optional. Google service account to use for execution. If unspecified, // the project execution service account // (-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 // (-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" }]; } // 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 builds 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}" }; // 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; } // 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]; } // 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; } // 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 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: Each resource is limited to 64 labels. Keys must conform to // the regexp: [a-zA-Z][a-zA-Z0-9_-]{0,62} Values must conform to the regexp: // [a-zA-Z0-9_-]{0,63} Both keys and values are additionally constrained to be // <= 128 bytes in size. map labels = 5; // 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 parent pipeline's 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 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 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 builds 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; } // 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 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: Each resource is limited to 64 labels. Keys must conform to // the regexp: [a-zA-Z][a-zA-Z0-9_-]{0,62} Values must conform to the regexp: // [a-zA-Z0-9_-]{0,63} Both keys and values are additionally constrained to be // <= 128 bytes in size. map 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. Reason the build failed. Empty if the build succeeded. 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; } // 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 builds 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 { } // 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" } ]; }