Skip to content
This repository was archived by the owner on Sep 16, 2023. It is now read-only.

Commit 1e19e5a

Browse files
feat: Add ability to configure BuildTriggers to create Builds that require approval before executing and ApproveBuild API to approve or reject pending Builds (#574)
Comitter: @joonlim PiperOrigin-RevId: 391072303 Source-Link: googleapis/googleapis@7fec729 Source-Link: https://github.com/googleapis/googleapis-gen/commit/22f5dc30b16225014527e354cc2cf0f00ff5c120
1 parent 2d7bd7d commit 1e19e5a

File tree

21 files changed

+6474
-432
lines changed

21 files changed

+6474
-432
lines changed

google-cloud-build/src/main/java/com/google/cloud/devtools/cloudbuild/v1/CloudBuildClient.java

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import com.google.api.gax.rpc.UnaryCallable;
3030
import com.google.cloud.devtools.cloudbuild.v1.stub.CloudBuildStub;
3131
import com.google.cloud.devtools.cloudbuild.v1.stub.CloudBuildStubSettings;
32+
import com.google.cloudbuild.v1.ApprovalResult;
33+
import com.google.cloudbuild.v1.ApproveBuildRequest;
3234
import com.google.cloudbuild.v1.Build;
3335
import com.google.cloudbuild.v1.BuildOperationMetadata;
3436
import com.google.cloudbuild.v1.BuildTrigger;
@@ -818,6 +820,121 @@ public final UnaryCallable<RetryBuildRequest, Operation> retryBuildCallable() {
818820
return stub.retryBuildCallable();
819821
}
820822

823+
// AUTO-GENERATED DOCUMENTATION AND METHOD.
824+
/**
825+
* Approves or rejects a pending build.
826+
*
827+
* <p>If approved, the returned LRO will be analogous to the LRO returned from a CreateBuild call.
828+
*
829+
* <p>If rejected, the returned LRO will be immediately done.
830+
*
831+
* <p>Sample code:
832+
*
833+
* <pre>{@code
834+
* try (CloudBuildClient cloudBuildClient = CloudBuildClient.create()) {
835+
* String name = "name3373707";
836+
* ApprovalResult approvalResult = ApprovalResult.newBuilder().build();
837+
* Build response = cloudBuildClient.approveBuildAsync(name, approvalResult).get();
838+
* }
839+
* }</pre>
840+
*
841+
* @param name Required. Name of the target build. For example:
842+
* "projects/{$project_id}/builds/{$build_id}"
843+
* @param approvalResult Approval decision and metadata.
844+
* @throws com.google.api.gax.rpc.ApiException if the remote call fails
845+
*/
846+
public final OperationFuture<Build, BuildOperationMetadata> approveBuildAsync(
847+
String name, ApprovalResult approvalResult) {
848+
ApproveBuildRequest request =
849+
ApproveBuildRequest.newBuilder().setName(name).setApprovalResult(approvalResult).build();
850+
return approveBuildAsync(request);
851+
}
852+
853+
// AUTO-GENERATED DOCUMENTATION AND METHOD.
854+
/**
855+
* Approves or rejects a pending build.
856+
*
857+
* <p>If approved, the returned LRO will be analogous to the LRO returned from a CreateBuild call.
858+
*
859+
* <p>If rejected, the returned LRO will be immediately done.
860+
*
861+
* <p>Sample code:
862+
*
863+
* <pre>{@code
864+
* try (CloudBuildClient cloudBuildClient = CloudBuildClient.create()) {
865+
* ApproveBuildRequest request =
866+
* ApproveBuildRequest.newBuilder()
867+
* .setName("name3373707")
868+
* .setApprovalResult(ApprovalResult.newBuilder().build())
869+
* .build();
870+
* Build response = cloudBuildClient.approveBuildAsync(request).get();
871+
* }
872+
* }</pre>
873+
*
874+
* @param request The request object containing all of the parameters for the API call.
875+
* @throws com.google.api.gax.rpc.ApiException if the remote call fails
876+
*/
877+
public final OperationFuture<Build, BuildOperationMetadata> approveBuildAsync(
878+
ApproveBuildRequest request) {
879+
return approveBuildOperationCallable().futureCall(request);
880+
}
881+
882+
// AUTO-GENERATED DOCUMENTATION AND METHOD.
883+
/**
884+
* Approves or rejects a pending build.
885+
*
886+
* <p>If approved, the returned LRO will be analogous to the LRO returned from a CreateBuild call.
887+
*
888+
* <p>If rejected, the returned LRO will be immediately done.
889+
*
890+
* <p>Sample code:
891+
*
892+
* <pre>{@code
893+
* try (CloudBuildClient cloudBuildClient = CloudBuildClient.create()) {
894+
* ApproveBuildRequest request =
895+
* ApproveBuildRequest.newBuilder()
896+
* .setName("name3373707")
897+
* .setApprovalResult(ApprovalResult.newBuilder().build())
898+
* .build();
899+
* OperationFuture<Build, BuildOperationMetadata> future =
900+
* cloudBuildClient.approveBuildOperationCallable().futureCall(request);
901+
* // Do something.
902+
* Build response = future.get();
903+
* }
904+
* }</pre>
905+
*/
906+
public final OperationCallable<ApproveBuildRequest, Build, BuildOperationMetadata>
907+
approveBuildOperationCallable() {
908+
return stub.approveBuildOperationCallable();
909+
}
910+
911+
// AUTO-GENERATED DOCUMENTATION AND METHOD.
912+
/**
913+
* Approves or rejects a pending build.
914+
*
915+
* <p>If approved, the returned LRO will be analogous to the LRO returned from a CreateBuild call.
916+
*
917+
* <p>If rejected, the returned LRO will be immediately done.
918+
*
919+
* <p>Sample code:
920+
*
921+
* <pre>{@code
922+
* try (CloudBuildClient cloudBuildClient = CloudBuildClient.create()) {
923+
* ApproveBuildRequest request =
924+
* ApproveBuildRequest.newBuilder()
925+
* .setName("name3373707")
926+
* .setApprovalResult(ApprovalResult.newBuilder().build())
927+
* .build();
928+
* ApiFuture<Operation> future = cloudBuildClient.approveBuildCallable().futureCall(request);
929+
* // Do something.
930+
* Operation response = future.get();
931+
* }
932+
* }</pre>
933+
*/
934+
public final UnaryCallable<ApproveBuildRequest, Operation> approveBuildCallable() {
935+
return stub.approveBuildCallable();
936+
}
937+
821938
// AUTO-GENERATED DOCUMENTATION AND METHOD.
822939
/**
823940
* Creates a new `BuildTrigger`.

google-cloud-build/src/main/java/com/google/cloud/devtools/cloudbuild/v1/CloudBuildSettings.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.google.api.gax.rpc.TransportChannelProvider;
3434
import com.google.api.gax.rpc.UnaryCallSettings;
3535
import com.google.cloud.devtools.cloudbuild.v1.stub.CloudBuildStubSettings;
36+
import com.google.cloudbuild.v1.ApproveBuildRequest;
3637
import com.google.cloudbuild.v1.Build;
3738
import com.google.cloudbuild.v1.BuildOperationMetadata;
3839
import com.google.cloudbuild.v1.BuildTrigger;
@@ -139,6 +140,17 @@ public UnaryCallSettings<RetryBuildRequest, Operation> retryBuildSettings() {
139140
return ((CloudBuildStubSettings) getStubSettings()).retryBuildOperationSettings();
140141
}
141142

143+
/** Returns the object with the settings used for calls to approveBuild. */
144+
public UnaryCallSettings<ApproveBuildRequest, Operation> approveBuildSettings() {
145+
return ((CloudBuildStubSettings) getStubSettings()).approveBuildSettings();
146+
}
147+
148+
/** Returns the object with the settings used for calls to approveBuild. */
149+
public OperationCallSettings<ApproveBuildRequest, Build, BuildOperationMetadata>
150+
approveBuildOperationSettings() {
151+
return ((CloudBuildStubSettings) getStubSettings()).approveBuildOperationSettings();
152+
}
153+
142154
/** Returns the object with the settings used for calls to createBuildTrigger. */
143155
public UnaryCallSettings<CreateBuildTriggerRequest, BuildTrigger> createBuildTriggerSettings() {
144156
return ((CloudBuildStubSettings) getStubSettings()).createBuildTriggerSettings();
@@ -364,6 +376,17 @@ public UnaryCallSettings.Builder<RetryBuildRequest, Operation> retryBuildSetting
364376
return getStubSettingsBuilder().retryBuildOperationSettings();
365377
}
366378

379+
/** Returns the builder for the settings used for calls to approveBuild. */
380+
public UnaryCallSettings.Builder<ApproveBuildRequest, Operation> approveBuildSettings() {
381+
return getStubSettingsBuilder().approveBuildSettings();
382+
}
383+
384+
/** Returns the builder for the settings used for calls to approveBuild. */
385+
public OperationCallSettings.Builder<ApproveBuildRequest, Build, BuildOperationMetadata>
386+
approveBuildOperationSettings() {
387+
return getStubSettingsBuilder().approveBuildOperationSettings();
388+
}
389+
367390
/** Returns the builder for the settings used for calls to createBuildTrigger. */
368391
public UnaryCallSettings.Builder<CreateBuildTriggerRequest, BuildTrigger>
369392
createBuildTriggerSettings() {

google-cloud-build/src/main/java/com/google/cloud/devtools/cloudbuild/v1/gapic_metadata.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
"grpc": {
1111
"libraryClient": "CloudBuildClient",
1212
"rpcs": {
13+
"ApproveBuild": {
14+
"methods": ["approveBuildAsync", "approveBuildAsync", "approveBuildOperationCallable", "approveBuildCallable"]
15+
},
1316
"CancelBuild": {
1417
"methods": ["cancelBuild", "cancelBuild", "cancelBuildCallable"]
1518
},

google-cloud-build/src/main/java/com/google/cloud/devtools/cloudbuild/v1/stub/CloudBuildStub.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.google.api.gax.core.BackgroundResource;
2424
import com.google.api.gax.rpc.OperationCallable;
2525
import com.google.api.gax.rpc.UnaryCallable;
26+
import com.google.cloudbuild.v1.ApproveBuildRequest;
2627
import com.google.cloudbuild.v1.Build;
2728
import com.google.cloudbuild.v1.BuildOperationMetadata;
2829
import com.google.cloudbuild.v1.BuildTrigger;
@@ -103,6 +104,15 @@ public UnaryCallable<RetryBuildRequest, Operation> retryBuildCallable() {
103104
throw new UnsupportedOperationException("Not implemented: retryBuildCallable()");
104105
}
105106

107+
public OperationCallable<ApproveBuildRequest, Build, BuildOperationMetadata>
108+
approveBuildOperationCallable() {
109+
throw new UnsupportedOperationException("Not implemented: approveBuildOperationCallable()");
110+
}
111+
112+
public UnaryCallable<ApproveBuildRequest, Operation> approveBuildCallable() {
113+
throw new UnsupportedOperationException("Not implemented: approveBuildCallable()");
114+
}
115+
106116
public UnaryCallable<CreateBuildTriggerRequest, BuildTrigger> createBuildTriggerCallable() {
107117
throw new UnsupportedOperationException("Not implemented: createBuildTriggerCallable()");
108118
}

google-cloud-build/src/main/java/com/google/cloud/devtools/cloudbuild/v1/stub/CloudBuildStubSettings.java

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import com.google.api.gax.rpc.TransportChannelProvider;
4747
import com.google.api.gax.rpc.UnaryCallSettings;
4848
import com.google.api.gax.rpc.UnaryCallable;
49+
import com.google.cloudbuild.v1.ApproveBuildRequest;
4950
import com.google.cloudbuild.v1.Build;
5051
import com.google.cloudbuild.v1.BuildOperationMetadata;
5152
import com.google.cloudbuild.v1.BuildTrigger;
@@ -132,6 +133,9 @@ public class CloudBuildStubSettings extends StubSettings<CloudBuildStubSettings>
132133
private final UnaryCallSettings<RetryBuildRequest, Operation> retryBuildSettings;
133134
private final OperationCallSettings<RetryBuildRequest, Build, BuildOperationMetadata>
134135
retryBuildOperationSettings;
136+
private final UnaryCallSettings<ApproveBuildRequest, Operation> approveBuildSettings;
137+
private final OperationCallSettings<ApproveBuildRequest, Build, BuildOperationMetadata>
138+
approveBuildOperationSettings;
135139
private final UnaryCallSettings<CreateBuildTriggerRequest, BuildTrigger>
136140
createBuildTriggerSettings;
137141
private final UnaryCallSettings<GetBuildTriggerRequest, BuildTrigger> getBuildTriggerSettings;
@@ -371,6 +375,17 @@ public UnaryCallSettings<RetryBuildRequest, Operation> retryBuildSettings() {
371375
return retryBuildOperationSettings;
372376
}
373377

378+
/** Returns the object with the settings used for calls to approveBuild. */
379+
public UnaryCallSettings<ApproveBuildRequest, Operation> approveBuildSettings() {
380+
return approveBuildSettings;
381+
}
382+
383+
/** Returns the object with the settings used for calls to approveBuild. */
384+
public OperationCallSettings<ApproveBuildRequest, Build, BuildOperationMetadata>
385+
approveBuildOperationSettings() {
386+
return approveBuildOperationSettings;
387+
}
388+
374389
/** Returns the object with the settings used for calls to createBuildTrigger. */
375390
public UnaryCallSettings<CreateBuildTriggerRequest, BuildTrigger> createBuildTriggerSettings() {
376391
return createBuildTriggerSettings;
@@ -543,6 +558,8 @@ protected CloudBuildStubSettings(Builder settingsBuilder) throws IOException {
543558
cancelBuildSettings = settingsBuilder.cancelBuildSettings().build();
544559
retryBuildSettings = settingsBuilder.retryBuildSettings().build();
545560
retryBuildOperationSettings = settingsBuilder.retryBuildOperationSettings().build();
561+
approveBuildSettings = settingsBuilder.approveBuildSettings().build();
562+
approveBuildOperationSettings = settingsBuilder.approveBuildOperationSettings().build();
546563
createBuildTriggerSettings = settingsBuilder.createBuildTriggerSettings().build();
547564
getBuildTriggerSettings = settingsBuilder.getBuildTriggerSettings().build();
548565
listBuildTriggersSettings = settingsBuilder.listBuildTriggersSettings().build();
@@ -575,6 +592,9 @@ public static class Builder extends StubSettings.Builder<CloudBuildStubSettings,
575592
private final UnaryCallSettings.Builder<RetryBuildRequest, Operation> retryBuildSettings;
576593
private final OperationCallSettings.Builder<RetryBuildRequest, Build, BuildOperationMetadata>
577594
retryBuildOperationSettings;
595+
private final UnaryCallSettings.Builder<ApproveBuildRequest, Operation> approveBuildSettings;
596+
private final OperationCallSettings.Builder<ApproveBuildRequest, Build, BuildOperationMetadata>
597+
approveBuildOperationSettings;
578598
private final UnaryCallSettings.Builder<CreateBuildTriggerRequest, BuildTrigger>
579599
createBuildTriggerSettings;
580600
private final UnaryCallSettings.Builder<GetBuildTriggerRequest, BuildTrigger>
@@ -673,6 +693,8 @@ protected Builder(ClientContext clientContext) {
673693
cancelBuildSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
674694
retryBuildSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
675695
retryBuildOperationSettings = OperationCallSettings.newBuilder();
696+
approveBuildSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
697+
approveBuildOperationSettings = OperationCallSettings.newBuilder();
676698
createBuildTriggerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
677699
getBuildTriggerSettings = UnaryCallSettings.newUnaryCallSettingsBuilder();
678700
listBuildTriggersSettings = PagedCallSettings.newBuilder(LIST_BUILD_TRIGGERS_PAGE_STR_FACT);
@@ -697,6 +719,7 @@ protected Builder(ClientContext clientContext) {
697719
listBuildsSettings,
698720
cancelBuildSettings,
699721
retryBuildSettings,
722+
approveBuildSettings,
700723
createBuildTriggerSettings,
701724
getBuildTriggerSettings,
702725
listBuildTriggersSettings,
@@ -722,6 +745,8 @@ protected Builder(CloudBuildStubSettings settings) {
722745
cancelBuildSettings = settings.cancelBuildSettings.toBuilder();
723746
retryBuildSettings = settings.retryBuildSettings.toBuilder();
724747
retryBuildOperationSettings = settings.retryBuildOperationSettings.toBuilder();
748+
approveBuildSettings = settings.approveBuildSettings.toBuilder();
749+
approveBuildOperationSettings = settings.approveBuildOperationSettings.toBuilder();
725750
createBuildTriggerSettings = settings.createBuildTriggerSettings.toBuilder();
726751
getBuildTriggerSettings = settings.getBuildTriggerSettings.toBuilder();
727752
listBuildTriggersSettings = settings.listBuildTriggersSettings.toBuilder();
@@ -746,6 +771,7 @@ protected Builder(CloudBuildStubSettings settings) {
746771
listBuildsSettings,
747772
cancelBuildSettings,
748773
retryBuildSettings,
774+
approveBuildSettings,
749775
createBuildTriggerSettings,
750776
getBuildTriggerSettings,
751777
listBuildTriggersSettings,
@@ -799,6 +825,11 @@ private static Builder initDefaults(Builder builder) {
799825
.setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
800826
.setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_1_params"));
801827

828+
builder
829+
.approveBuildSettings()
830+
.setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_codes"))
831+
.setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_params"));
832+
802833
builder
803834
.createBuildTriggerSettings()
804835
.setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_1_codes"))
@@ -905,6 +936,30 @@ private static Builder initDefaults(Builder builder) {
905936
.setTotalTimeout(Duration.ofMillis(300000L))
906937
.build()));
907938

939+
builder
940+
.approveBuildOperationSettings()
941+
.setInitialCallSettings(
942+
UnaryCallSettings
943+
.<ApproveBuildRequest, OperationSnapshot>newUnaryCallSettingsBuilder()
944+
.setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_codes"))
945+
.setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_params"))
946+
.build())
947+
.setResponseTransformer(
948+
ProtoOperationTransformers.ResponseTransformer.create(Build.class))
949+
.setMetadataTransformer(
950+
ProtoOperationTransformers.MetadataTransformer.create(BuildOperationMetadata.class))
951+
.setPollingAlgorithm(
952+
OperationTimedPollAlgorithm.create(
953+
RetrySettings.newBuilder()
954+
.setInitialRetryDelay(Duration.ofMillis(5000L))
955+
.setRetryDelayMultiplier(1.5)
956+
.setMaxRetryDelay(Duration.ofMillis(45000L))
957+
.setInitialRpcTimeout(Duration.ZERO)
958+
.setRpcTimeoutMultiplier(1.0)
959+
.setMaxRpcTimeout(Duration.ZERO)
960+
.setTotalTimeout(Duration.ofMillis(300000L))
961+
.build()));
962+
908963
builder
909964
.runBuildTriggerOperationSettings()
910965
.setInitialCallSettings(
@@ -1064,6 +1119,19 @@ public UnaryCallSettings.Builder<RetryBuildRequest, Operation> retryBuildSetting
10641119
return retryBuildOperationSettings;
10651120
}
10661121

1122+
/** Returns the builder for the settings used for calls to approveBuild. */
1123+
public UnaryCallSettings.Builder<ApproveBuildRequest, Operation> approveBuildSettings() {
1124+
return approveBuildSettings;
1125+
}
1126+
1127+
/** Returns the builder for the settings used for calls to approveBuild. */
1128+
@BetaApi(
1129+
"The surface for use by generated code is not stable yet and may change in the future.")
1130+
public OperationCallSettings.Builder<ApproveBuildRequest, Build, BuildOperationMetadata>
1131+
approveBuildOperationSettings() {
1132+
return approveBuildOperationSettings;
1133+
}
1134+
10671135
/** Returns the builder for the settings used for calls to createBuildTrigger. */
10681136
public UnaryCallSettings.Builder<CreateBuildTriggerRequest, BuildTrigger>
10691137
createBuildTriggerSettings() {

0 commit comments

Comments
 (0)