diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 1b5b979aaf..255466834a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -49,7 +49,13 @@ jobs: run: bazel --batch test $(bazel query "//src/test/..." | grep "Test$") --noshow_progress --test_output=errors - name: Integration Tests - 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 + # TODO(miraleung): Change this to //test/integration/... after the monolith rule removal. + 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 + + - uses: actions/upload-artifact@v2 + if: ${{ failure() }} + + run: bazel --batch test //test/integration/... - uses: actions/upload-artifact@v2 if: ${{ failure() }} diff --git a/WORKSPACE b/WORKSPACE index f5101f83fc..bce7a60448 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -18,8 +18,14 @@ http_archive( jvm_maven_import_external( name = "google_java_format_all_deps", artifact = "com.google.googlejavaformat:google-java-format:jar:all-deps:1.7", - server_urls = ["https://repo.maven.apache.org/maven2/", "http://repo1.maven.org/maven2/"], - licenses = ["notice", "reciprocal"] + licenses = [ + "notice", + "reciprocal", + ], + server_urls = [ + "https://repo.maven.apache.org/maven2/", + "http://repo1.maven.org/maven2/", + ], ) # gax-java and its transitive dependencies must be imported before @@ -62,8 +68,18 @@ load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") protobuf_deps() +# Bazel rules. +_rules_gapic_version = "0.5.4" + +http_archive( + name = "rules_gapic", + strip_prefix = "rules_gapic-%s" % _rules_gapic_version, + urls = ["https://github.com/googleapis/rules_gapic/archive/v%s.tar.gz" % _rules_gapic_version], +) + # Java dependencies. # Import the monolith so we can transitively use its gapic rules for googleapis. +# TODO: Remove this after this dep has been removed from googleapis' switched_rules_by_language. http_archive( name = "com_google_api_codegen", strip_prefix = "gapic-generator-2.11.1", diff --git a/rules_java_gapic/java_gapic.bzl b/rules_java_gapic/java_gapic.bzl index e8917b8f38..03b4467a3c 100644 --- a/rules_java_gapic/java_gapic.bzl +++ b/rules_java_gapic/java_gapic.bzl @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -load("@com_google_api_codegen//rules_gapic:gapic.bzl", "proto_custom_library", "unzipped_srcjar") +load("@rules_gapic//:gapic.bzl", "proto_custom_library", "unzipped_srcjar") SERVICE_YAML_ALLOWLIST = ["clouddms", "cloudkms", "datastream", "pubsub"] NO_GRPC_CONFIG_ALLOWLIST = ["library"] diff --git a/test/integration/BUILD.bazel b/test/integration/BUILD.bazel index db8a0bf839..93b90f2041 100644 --- a/test/integration/BUILD.bazel +++ b/test/integration/BUILD.bazel @@ -1,12 +1,14 @@ load( - "@com_google_googleapis_imports//:imports.bzl", - "java_gapic_assembly_gradle_pkg", + "@gapic_generator_java//rules_java_gapic:java_gapic.bzl", "java_gapic_library", "java_gapic_test", - "java_grpc_library", - "java_proto_library", - "proto_library_with_info", ) +load("@io_grpc_grpc_java//:java_grpc_library.bzl", "java_grpc_library") +load( + "@gapic_generator_java//rules_java_gapic:java_gapic_pkg.bzl", + "java_gapic_assembly_gradle_pkg", +) +load("@rules_gapic//:gapic.bzl", "proto_library_with_info") load( "//:rules_bazel/java/integration_test.bzl", "golden_update", @@ -29,20 +31,20 @@ INTEGRATION_TEST_LIBRARIES = [ "logging", # Java package remapping in gapic.yaml. "redis", # Has a gapic.yaml. "library", # No gRPC service config. - "compute", # REGAPIC test. + "compute", # REGAPIC test. ] # Keys must match the values in INTEGRATION_TEST_LIBRARIES above. API_GAPIC_TARGETS = { - "asset": "@com_google_googleapis//google/cloud/asset/v1:asset_java_gapic", - "credentials": "@com_google_googleapis//google/iam/credentials/v1:credentials_java_gapic", + "asset": ":asset_java_gapic", + "credentials": ":credentials_java_gapic", "iam": ":iam_java_gapic", # Googleapis' LRO does not have a Java Gapic. "kms": ":kms_java_gapic", # Local target because mixins are not rolled out yet. "pubsub": ":pubsub_java_gapic", - "logging": "@com_google_googleapis//google/logging/v2:logging_java_gapic", - "redis": "@com_google_googleapis//google/cloud/redis/v1beta1:redis_java_gapic", - "library": "@com_google_googleapis//google/example/library/v1:library_java_gapic", - "compute": "@com_google_googleapis_discovery//google/cloud/compute/v1:compute_small_java_gapic", + "logging": ":logging_java_gapic", + "redis": ":redis_java_gapic", + "library": ":library_java_gapic", + "compute": ":compute_small_java_gapic", } [integration_test( @@ -57,6 +59,155 @@ API_GAPIC_TARGETS = { target = API_GAPIC_TARGETS[lib_name], ) for lib_name in INTEGRATION_TEST_LIBRARIES] +################################################### +# Temporary proto_with_info definitions for +# monolith depdency removal. +# Remove this section when the monolith rule deps are +# out of googleapis. +################################################### +proto_library_with_info( + name = "asset_proto_with_info", + deps = [ + "@com_google_googleapis//google/cloud:common_resources_proto", + "@com_google_googleapis//google/cloud/asset/v1:asset_proto", + ], +) + +proto_library_with_info( + name = "credentials_proto_with_info", + deps = [ + "@com_google_googleapis//google/cloud:common_resources_proto", + "@com_google_googleapis//google/iam/credentials/v1:credentials_proto", + ], +) + +proto_library_with_info( + name = "logging_proto_with_info", + deps = [ + "@com_google_googleapis//google/cloud:common_resources_proto", + "@com_google_googleapis//google/logging/v2:logging_proto", + ], +) + +proto_library_with_info( + name = "pubsub_proto_with_info", + deps = [ + "@com_google_googleapis//google/cloud:common_resources_proto", + "@com_google_googleapis//google/iam/v1:iam_policy_proto", + "@com_google_googleapis//google/iam/v1:policy_proto", + "@com_google_googleapis//google/pubsub/v1:pubsub_proto", + ], +) + +proto_library_with_info( + name = "redis_proto_with_info", + deps = [ + "@com_google_googleapis//google/cloud:common_resources_proto", + "@com_google_googleapis//google/cloud/redis/v1beta1:redis_proto", + ], +) + +proto_library_with_info( + name = "iam_proto_with_info", + deps = [ + "@com_google_googleapis//google/iam/v1:iam_policy_proto", + "@com_google_googleapis//google/iam/v1:options_proto", + "@com_google_googleapis//google/iam/v1:policy_proto", + ], +) + +proto_library_with_info( + name = "library_proto_with_info", + deps = [ + "@com_google_googleapis//google/cloud:common_resources_proto", + "@com_google_googleapis//google/example/library/v1:library_proto", + ], +) + +proto_library_with_info( + name = "compute_small_proto_with_info", + deps = [ + "@com_google_googleapis//google/cloud:common_resources_proto", + "@com_google_googleapis_discovery//google/cloud/compute/v1:compute_small_proto", + ], +) + +java_gapic_library( + name = "compute_small_java_gapic", + srcs = [":compute_small_proto_with_info"], + test_deps = [], + transport = "rest", + deps = [ + "@com_google_googleapis_discovery//google/cloud/compute/v1:compute_small_java_proto", + ], +) + +java_gapic_library( + name = "asset_java_gapic", + srcs = [":asset_proto_with_info"], + grpc_service_config = "@com_google_googleapis//google/cloud/asset/v1:cloudasset_grpc_service_config.json", + test_deps = [ + "@com_google_googleapis//google/cloud/asset/v1:asset_java_grpc", + "@com_google_googleapis//google/iam/v1:iam_java_grpc", + ], + deps = [ + "@com_google_googleapis//google/cloud/asset/v1:asset_java_proto", + "@com_google_googleapis//google/iam/v1:iam_java_proto", + "@com_google_googleapis//google/identity/accesscontextmanager/v1:accesscontextmanager_proto", + ], +) + +java_gapic_library( + name = "credentials_java_gapic", + srcs = [":credentials_proto_with_info"], + grpc_service_config = "@com_google_googleapis//google/iam/credentials/v1:iamcredentials_grpc_service_config.json", + test_deps = [ + "@com_google_googleapis//google/iam/credentials/v1:credentials_java_grpc", + ], + deps = [ + "@com_google_googleapis//google/iam/credentials/v1:credentials_java_proto", + ], +) + +java_gapic_library( + name = "logging_java_gapic", + srcs = [":logging_proto_with_info"], + gapic_yaml = "@com_google_googleapis//google/logging/v2:logging_gapic.yaml", + grpc_service_config = "@com_google_googleapis//google/logging/v2:logging_grpc_service_config.json", + test_deps = [ + "@com_google_googleapis//google/logging/v2:logging_java_grpc", + ], + deps = [ + "@com_google_googleapis//google/api:api_java_proto", + "@com_google_googleapis//google/logging/v2:logging_java_proto", + ], +) + +java_gapic_library( + name = "redis_java_gapic", + srcs = [":redis_proto_with_info"], + gapic_yaml = "@com_google_googleapis//google/cloud/redis/v1beta1:redis_gapic.yaml", + grpc_service_config = "@com_google_googleapis//google/cloud/redis/v1beta1:redis_grpc_service_config.json", + test_deps = [ + "@com_google_googleapis//google/cloud/redis/v1beta1:redis_java_grpc", + ], + deps = [ + "@com_google_googleapis//google/cloud/redis/v1beta1:redis_java_proto", + ], +) + +java_gapic_library( + name = "library_java_gapic", + srcs = [":library_proto_with_info"], + gapic_yaml = "@com_google_googleapis//google/example/library/v1:library_example_gapic.yaml", + grpc_service_config = "@com_google_googleapis//google/example/library/v1:library_grpc_service_config.json", + test_deps = [ + "@com_google_googleapis//google/example/library/v1:library_java_grpc", + ], + deps = [ + "@com_google_googleapis//google/example/library/v1:library_java_proto", + ], +) #################################################### # API Library Rules #################################################### @@ -168,7 +319,7 @@ java_gapic_assembly_gradle_pkg( # IAM (for a standalone mixed-in API). java_gapic_library( name = "iam_java_gapic", - srcs = ["@com_google_googleapis//google/iam/v1:iam_proto_with_info"], + srcs = [":iam_proto_with_info"], grpc_service_config = "iam_grpc_service_config.json", test_deps = [ "@com_google_googleapis//google/iam/v1:iam_java_grpc", @@ -283,7 +434,7 @@ java_gapic_assembly_gradle_pkg( # TODO: Remove some of these targets when PubSub has been migrated in googleapis. java_gapic_library( name = "pubsub_java_gapic", - srcs = ["@com_google_googleapis//google/pubsub/v1:pubsub_proto_with_info"], + srcs = [":pubsub_proto_with_info"], gapic_yaml = "@com_google_googleapis//google/pubsub/v1:pubsub_gapic.yaml", grpc_service_config = "@com_google_googleapis//google/pubsub/v1:pubsub_grpc_service_config.json", # For the IAM mixin.