GoogleCloudPlatform / GoogleCloudPlatform/cloud-opensource-java

Idea: checking the behavioral compatibility in the libraries in the LTS BOM

オープン
#1,974 コメント 12 件 リアクション 0 件 担当者 1 名 @suztomo が担当を希望しています GitHub で見る
enhancement p3
主要言語
Java
スター
163
フォーク
80
PR マージ指標
30日以内にマージされた PR はありません

説明

# Problem

We'd like to see the libraries in LTS BOM are compatible with each other. This is not just for Java class file signature but also for behavioral change.

# Idea: run the tests with LTS BOM

To capture behavioral change, we can leverage the tests in the repository of the each library in LTS BOM.

For example, if I want to check the compatibility of protobuf-java in LTS BOM and grpc-protobuf, then I can modify build.gradle to include `api enforcedPlatform('com.google.cloud:gcp-lts-bom:0.1.0-SNAPSHOT')` to see the compatibility.

I checkout grpc-java Git repository and insert the `enforcedPlatform` to one of build.gradle:

```
suztomo@suztomo:~/grpc-java$ git diff
diff --git a/protobuf/build.gradle b/protobuf/build.gradle
index af7f51c83..1c00e0a63 100644
--- a/protobuf/build.gradle
+++ b/protobuf/build.gradle
@@ -10,6 +10,8 @@ plugins {
description = 'gRPC: Protobuf'

dependencies {
+ api enforcedPlatform('com.google.cloud:gcp-lts-bom:0.1.0-SNAPSHOT')
+
api project(':grpc-api'),
libraries.jsr305,
libraries.protobuf
```

If the tests pass, then the LTS BOM is compatible with the grpc-protobuf.

```
suztomo@suztomo:~/grpc-java$ ./gradlew :grpc-protobuf:check
*** Skipping the build of codegen and compilation of proto files because skipCodegen=true
* Skipping the build of Android projects because skipAndroid=true

BUILD SUCCESSFUL in 3s
19 actionable tasks: 1 executed, 18 up-to-date
```

## Implementation Design

### Repositories

Checkout the following repositories with a release tag.

- Beam
- org.apache.beam:beam-sdks-java-core
- org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core
- org.apache.beam:beam-runners-google-cloud-dataflow-java
- org.apache.beam:beam-sdks-java-io-google-cloud-platform
- grpc-java
- java-spanner
- google-cloud-spanner

#### Checking out a specific revision

For example, to checkout java-spannner repository with a specific release tag, run the following command:

```
git clone -b v4.0.1 --depth=1 https://github.com/googleapis/java-spanner
```

### For Gradle project

For the target modules, insert the BOM after keyword "dependencies":

```
dependencies {
```

so that it would look like:

```
dependencies {
+ api enforcedPlatform('com.google.cloud:gcp-lts-bom:0.1.0-SNAPSHOT')
+
```

### For Maven project

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。