Skip to content
This repository was archived by the owner on May 14, 2026. It is now read-only.

Commit bff3efc

Browse files
authored
fix(bazel): Remove monolith rule deps from the Java µgen Bazel rules [ggj] (#764)
* fix(bazel): Remove monolith rule deps from the Java µgen Bazel rules * fix: update library rules, add bazel clean to CI * fix: remove Bazel clean from CI * fix: add compute * fix: update library goldens * fix: simplify integration test targets in CI * fix: CI build * fix: CI build
1 parent 1294c29 commit bff3efc

4 files changed

Lines changed: 191 additions & 18 deletions

File tree

.github/workflows/ci.yaml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,13 @@ jobs:
4949
run: bazel --batch test $(bazel query "//src/test/..." | grep "Test$") --noshow_progress --test_output=errors
5050

5151
- name: Integration Tests
52-
run: bazel --batch test //test/integration:asset //test/integration:credentials //test/integration:iam //test/integration:kms //test/integration:logging //test/integration:pubsub //test/integration:redis //test/integration:library --noshow_progress
52+
# TODO(miraleung): Change this to //test/integration/... after the monolith rule removal.
53+
run: bazel --batch test //test/integration:asset //test/integration:compute //test/integration:credentials //test/integration:iam //test/integration:kms //test/integration:logging //test/integration:pubsub //test/integration:redis //test/integration:library --noshow_progress
54+
55+
- uses: actions/upload-artifact@v2
56+
if: ${{ failure() }}
57+
58+
run: bazel --batch test //test/integration/...
5359

5460
- uses: actions/upload-artifact@v2
5561
if: ${{ failure() }}

WORKSPACE

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,14 @@ http_archive(
1818
jvm_maven_import_external(
1919
name = "google_java_format_all_deps",
2020
artifact = "com.google.googlejavaformat:google-java-format:jar:all-deps:1.7",
21-
server_urls = ["https://repo.maven.apache.org/maven2/", "http://repo1.maven.org/maven2/"],
22-
licenses = ["notice", "reciprocal"]
21+
licenses = [
22+
"notice",
23+
"reciprocal",
24+
],
25+
server_urls = [
26+
"https://repo.maven.apache.org/maven2/",
27+
"http://repo1.maven.org/maven2/",
28+
],
2329
)
2430

2531
# gax-java and its transitive dependencies must be imported before
@@ -62,8 +68,18 @@ load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
6268

6369
protobuf_deps()
6470

71+
# Bazel rules.
72+
_rules_gapic_version = "0.5.4"
73+
74+
http_archive(
75+
name = "rules_gapic",
76+
strip_prefix = "rules_gapic-%s" % _rules_gapic_version,
77+
urls = ["https://github.com/googleapis/rules_gapic/archive/v%s.tar.gz" % _rules_gapic_version],
78+
)
79+
6580
# Java dependencies.
6681
# Import the monolith so we can transitively use its gapic rules for googleapis.
82+
# TODO: Remove this after this dep has been removed from googleapis' switched_rules_by_language.
6783
http_archive(
6884
name = "com_google_api_codegen",
6985
strip_prefix = "gapic-generator-2.11.1",

rules_java_gapic/java_gapic.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
load("@com_google_api_codegen//rules_gapic:gapic.bzl", "proto_custom_library", "unzipped_srcjar")
15+
load("@rules_gapic//:gapic.bzl", "proto_custom_library", "unzipped_srcjar")
1616

1717
SERVICE_YAML_ALLOWLIST = ["clouddms", "cloudkms", "datastream", "pubsub"]
1818
NO_GRPC_CONFIG_ALLOWLIST = ["library"]

test/integration/BUILD.bazel

Lines changed: 165 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
load(
2-
"@com_google_googleapis_imports//:imports.bzl",
3-
"java_gapic_assembly_gradle_pkg",
2+
"@gapic_generator_java//rules_java_gapic:java_gapic.bzl",
43
"java_gapic_library",
54
"java_gapic_test",
6-
"java_grpc_library",
7-
"java_proto_library",
8-
"proto_library_with_info",
95
)
6+
load("@io_grpc_grpc_java//:java_grpc_library.bzl", "java_grpc_library")
7+
load(
8+
"@gapic_generator_java//rules_java_gapic:java_gapic_pkg.bzl",
9+
"java_gapic_assembly_gradle_pkg",
10+
)
11+
load("@rules_gapic//:gapic.bzl", "proto_library_with_info")
1012
load(
1113
"//:rules_bazel/java/integration_test.bzl",
1214
"golden_update",
@@ -29,20 +31,20 @@ INTEGRATION_TEST_LIBRARIES = [
2931
"logging", # Java package remapping in gapic.yaml.
3032
"redis", # Has a gapic.yaml.
3133
"library", # No gRPC service config.
32-
"compute", # REGAPIC test.
34+
"compute", # REGAPIC test.
3335
]
3436

3537
# Keys must match the values in INTEGRATION_TEST_LIBRARIES above.
3638
API_GAPIC_TARGETS = {
37-
"asset": "@com_google_googleapis//google/cloud/asset/v1:asset_java_gapic",
38-
"credentials": "@com_google_googleapis//google/iam/credentials/v1:credentials_java_gapic",
39+
"asset": ":asset_java_gapic",
40+
"credentials": ":credentials_java_gapic",
3941
"iam": ":iam_java_gapic", # Googleapis' LRO does not have a Java Gapic.
4042
"kms": ":kms_java_gapic", # Local target because mixins are not rolled out yet.
4143
"pubsub": ":pubsub_java_gapic",
42-
"logging": "@com_google_googleapis//google/logging/v2:logging_java_gapic",
43-
"redis": "@com_google_googleapis//google/cloud/redis/v1beta1:redis_java_gapic",
44-
"library": "@com_google_googleapis//google/example/library/v1:library_java_gapic",
45-
"compute": "@com_google_googleapis_discovery//google/cloud/compute/v1:compute_small_java_gapic",
44+
"logging": ":logging_java_gapic",
45+
"redis": ":redis_java_gapic",
46+
"library": ":library_java_gapic",
47+
"compute": ":compute_small_java_gapic",
4648
}
4749

4850
[integration_test(
@@ -57,6 +59,155 @@ API_GAPIC_TARGETS = {
5759
target = API_GAPIC_TARGETS[lib_name],
5860
) for lib_name in INTEGRATION_TEST_LIBRARIES]
5961

62+
###################################################
63+
# Temporary proto_with_info definitions for
64+
# monolith depdency removal.
65+
# Remove this section when the monolith rule deps are
66+
# out of googleapis.
67+
###################################################
68+
proto_library_with_info(
69+
name = "asset_proto_with_info",
70+
deps = [
71+
"@com_google_googleapis//google/cloud:common_resources_proto",
72+
"@com_google_googleapis//google/cloud/asset/v1:asset_proto",
73+
],
74+
)
75+
76+
proto_library_with_info(
77+
name = "credentials_proto_with_info",
78+
deps = [
79+
"@com_google_googleapis//google/cloud:common_resources_proto",
80+
"@com_google_googleapis//google/iam/credentials/v1:credentials_proto",
81+
],
82+
)
83+
84+
proto_library_with_info(
85+
name = "logging_proto_with_info",
86+
deps = [
87+
"@com_google_googleapis//google/cloud:common_resources_proto",
88+
"@com_google_googleapis//google/logging/v2:logging_proto",
89+
],
90+
)
91+
92+
proto_library_with_info(
93+
name = "pubsub_proto_with_info",
94+
deps = [
95+
"@com_google_googleapis//google/cloud:common_resources_proto",
96+
"@com_google_googleapis//google/iam/v1:iam_policy_proto",
97+
"@com_google_googleapis//google/iam/v1:policy_proto",
98+
"@com_google_googleapis//google/pubsub/v1:pubsub_proto",
99+
],
100+
)
101+
102+
proto_library_with_info(
103+
name = "redis_proto_with_info",
104+
deps = [
105+
"@com_google_googleapis//google/cloud:common_resources_proto",
106+
"@com_google_googleapis//google/cloud/redis/v1beta1:redis_proto",
107+
],
108+
)
109+
110+
proto_library_with_info(
111+
name = "iam_proto_with_info",
112+
deps = [
113+
"@com_google_googleapis//google/iam/v1:iam_policy_proto",
114+
"@com_google_googleapis//google/iam/v1:options_proto",
115+
"@com_google_googleapis//google/iam/v1:policy_proto",
116+
],
117+
)
118+
119+
proto_library_with_info(
120+
name = "library_proto_with_info",
121+
deps = [
122+
"@com_google_googleapis//google/cloud:common_resources_proto",
123+
"@com_google_googleapis//google/example/library/v1:library_proto",
124+
],
125+
)
126+
127+
proto_library_with_info(
128+
name = "compute_small_proto_with_info",
129+
deps = [
130+
"@com_google_googleapis//google/cloud:common_resources_proto",
131+
"@com_google_googleapis_discovery//google/cloud/compute/v1:compute_small_proto",
132+
],
133+
)
134+
135+
java_gapic_library(
136+
name = "compute_small_java_gapic",
137+
srcs = [":compute_small_proto_with_info"],
138+
test_deps = [],
139+
transport = "rest",
140+
deps = [
141+
"@com_google_googleapis_discovery//google/cloud/compute/v1:compute_small_java_proto",
142+
],
143+
)
144+
145+
java_gapic_library(
146+
name = "asset_java_gapic",
147+
srcs = [":asset_proto_with_info"],
148+
grpc_service_config = "@com_google_googleapis//google/cloud/asset/v1:cloudasset_grpc_service_config.json",
149+
test_deps = [
150+
"@com_google_googleapis//google/cloud/asset/v1:asset_java_grpc",
151+
"@com_google_googleapis//google/iam/v1:iam_java_grpc",
152+
],
153+
deps = [
154+
"@com_google_googleapis//google/cloud/asset/v1:asset_java_proto",
155+
"@com_google_googleapis//google/iam/v1:iam_java_proto",
156+
"@com_google_googleapis//google/identity/accesscontextmanager/v1:accesscontextmanager_proto",
157+
],
158+
)
159+
160+
java_gapic_library(
161+
name = "credentials_java_gapic",
162+
srcs = [":credentials_proto_with_info"],
163+
grpc_service_config = "@com_google_googleapis//google/iam/credentials/v1:iamcredentials_grpc_service_config.json",
164+
test_deps = [
165+
"@com_google_googleapis//google/iam/credentials/v1:credentials_java_grpc",
166+
],
167+
deps = [
168+
"@com_google_googleapis//google/iam/credentials/v1:credentials_java_proto",
169+
],
170+
)
171+
172+
java_gapic_library(
173+
name = "logging_java_gapic",
174+
srcs = [":logging_proto_with_info"],
175+
gapic_yaml = "@com_google_googleapis//google/logging/v2:logging_gapic.yaml",
176+
grpc_service_config = "@com_google_googleapis//google/logging/v2:logging_grpc_service_config.json",
177+
test_deps = [
178+
"@com_google_googleapis//google/logging/v2:logging_java_grpc",
179+
],
180+
deps = [
181+
"@com_google_googleapis//google/api:api_java_proto",
182+
"@com_google_googleapis//google/logging/v2:logging_java_proto",
183+
],
184+
)
185+
186+
java_gapic_library(
187+
name = "redis_java_gapic",
188+
srcs = [":redis_proto_with_info"],
189+
gapic_yaml = "@com_google_googleapis//google/cloud/redis/v1beta1:redis_gapic.yaml",
190+
grpc_service_config = "@com_google_googleapis//google/cloud/redis/v1beta1:redis_grpc_service_config.json",
191+
test_deps = [
192+
"@com_google_googleapis//google/cloud/redis/v1beta1:redis_java_grpc",
193+
],
194+
deps = [
195+
"@com_google_googleapis//google/cloud/redis/v1beta1:redis_java_proto",
196+
],
197+
)
198+
199+
java_gapic_library(
200+
name = "library_java_gapic",
201+
srcs = [":library_proto_with_info"],
202+
gapic_yaml = "@com_google_googleapis//google/example/library/v1:library_example_gapic.yaml",
203+
grpc_service_config = "@com_google_googleapis//google/example/library/v1:library_grpc_service_config.json",
204+
test_deps = [
205+
"@com_google_googleapis//google/example/library/v1:library_java_grpc",
206+
],
207+
deps = [
208+
"@com_google_googleapis//google/example/library/v1:library_java_proto",
209+
],
210+
)
60211
####################################################
61212
# API Library Rules
62213
####################################################
@@ -168,7 +319,7 @@ java_gapic_assembly_gradle_pkg(
168319
# IAM (for a standalone mixed-in API).
169320
java_gapic_library(
170321
name = "iam_java_gapic",
171-
srcs = ["@com_google_googleapis//google/iam/v1:iam_proto_with_info"],
322+
srcs = [":iam_proto_with_info"],
172323
grpc_service_config = "iam_grpc_service_config.json",
173324
test_deps = [
174325
"@com_google_googleapis//google/iam/v1:iam_java_grpc",
@@ -283,7 +434,7 @@ java_gapic_assembly_gradle_pkg(
283434
# TODO: Remove some of these targets when PubSub has been migrated in googleapis.
284435
java_gapic_library(
285436
name = "pubsub_java_gapic",
286-
srcs = ["@com_google_googleapis//google/pubsub/v1:pubsub_proto_with_info"],
437+
srcs = [":pubsub_proto_with_info"],
287438
gapic_yaml = "@com_google_googleapis//google/pubsub/v1:pubsub_gapic.yaml",
288439
grpc_service_config = "@com_google_googleapis//google/pubsub/v1:pubsub_grpc_service_config.json",
289440
# For the IAM mixin.

0 commit comments

Comments
 (0)