Skip to content

Commit b08365a

Browse files
authored
gcp-lts-bom July 2022 (GoogleCloudPlatform#2300)
* gcp-lts-bom layer 1 * Google HTTP Client and API Client update * Layer 2 libraries * Exclude provided dependencies from the check * trying google-cloud-pubsub 1.117.0 * added Beam 2.40.0 * increase xmx * adding comments for supporting artifacts
1 parent f286753 commit b08365a

3 files changed

Lines changed: 81 additions & 40 deletions

File tree

‎boms/cloud-lts-bom/pom.xml‎

Lines changed: 48 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -49,50 +49,54 @@
4949
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
5050

5151
<!-- Layer 1: Core -->
52-
<guava.version>31.0.1-jre</guava.version>
53-
<autovalue.version>1.8.2</autovalue.version>
54-
<protobuf.version>3.18.2</protobuf.version>
55-
<google-http-client.version>1.40.1</google-http-client.version>
56-
<api-common.version>2.0.5</api-common.version>
57-
<google-oauth-client.version>1.32.1</google-oauth-client.version>
58-
<google-auth-library.version>1.2.1</google-auth-library.version>
59-
<io.grpc.version>1.41.1</io.grpc.version>
60-
<google-api-client.version>1.32.2</google-api-client.version>
61-
<proto-google-common-protos.version>2.6.0</proto-google-common-protos.version>
52+
<guava.version>31.1-jre</guava.version>
53+
<autovalue.version>1.9</autovalue.version>
54+
<protobuf.version>3.19.4</protobuf.version>
55+
<google-http-client.version>1.41.8</google-http-client.version>
56+
<api-common.version>2.1.5</api-common.version>
57+
<google-oauth-client.version>1.33.3</google-oauth-client.version>
58+
<google-auth-library.version>1.6.0</google-auth-library.version>
59+
<io.grpc.version>1.45.1</io.grpc.version>
60+
<google-api-client.version>1.34.1</google-api-client.version>
61+
<proto-google-common-protos.version>2.8.3</proto-google-common-protos.version>
6262
<!-- We don't use gax-bom because it includes the artifacts with 'testlib' classifier.
6363
When updating gax.version, update gax.httpjson.version too. -->
64-
<gax.version>2.6.1</gax.version>
65-
<gax-httpjson.version>0.91.1</gax-httpjson.version>
66-
<google-cloud-core.version>2.2.0</google-cloud-core.version>
64+
<gax.version>2.16.0</gax.version>
65+
<!-- the gax-httpjson version in the gax-bom version above -->
66+
<gax-httpjson.version>0.101.0</gax-httpjson.version>
67+
<google-cloud-core.version>2.6.0</google-cloud-core.version>
6768

6869
<!-- Layer 2: Cloud -->
69-
<appengine-api-1.0-sdk.version>1.9.93</appengine-api-1.0-sdk.version>
70-
<google-iam-admin.version>1.0.0</google-iam-admin.version>
71-
<google-cloud-iamcredentials.version>2.0.6</google-cloud-iamcredentials.version>
70+
<appengine-api-1.0-sdk.version>1.9.96</appengine-api-1.0-sdk.version>
71+
<google-iam-admin.version>1.1.7</google-iam-admin.version>
72+
<google-cloud-iamcredentials.version>2.0.14</google-cloud-iamcredentials.version>
7273
<google-api-services-androidpublisher.version>v3-rev20211021-1.32.1</google-api-services-androidpublisher.version>
73-
<google-cloud-bigquery.version>2.3.3</google-cloud-bigquery.version>
74-
<google-api-services-bigquery.version>v2-rev20211017-1.32.1</google-api-services-bigquery.version>
75-
<google-cloud-bigquerystorage.version>2.4.2</google-cloud-bigquerystorage.version>
76-
<google-cloud-storage.version>2.1.9</google-cloud-storage.version>
77-
<google-cloud-trace.version>2.0.6</google-cloud-trace.version>
78-
<google-cloud-monitoring.version>3.1.0</google-cloud-monitoring.version>
79-
<google-cloud-spanner.version>6.14.1</google-cloud-spanner.version>
80-
<google-cloud-tasks.version>2.0.6</google-cloud-tasks.version>
81-
<bigtable-hbase-beam.version>1.25.2-sp.3</bigtable-hbase-beam.version>
82-
<google-cloud-bigtable.version>2.2.0</google-cloud-bigtable.version>
83-
<google-cloud-pubsub.version>1.114.7</google-cloud-pubsub.version>
84-
<proto-google-cloud-pubsub-v1.version>1.96.7</proto-google-cloud-pubsub-v1.version>
85-
<google-cloud-datastore.version>2.1.3</google-cloud-datastore.version>
86-
<google-cloud-service-usage.version>2.1.3</google-cloud-service-usage.version>
87-
<google-cloud-container.version>2.2.1</google-cloud-container.version>
88-
<google-cloud-orchestration-airflow.version>1.0.0</google-cloud-orchestration-airflow.version>
89-
<google-cloud-resourcemanager.version>1.1.4</google-cloud-resourcemanager.version>
90-
<google-cloud-redis.version>2.0.6</google-cloud-redis.version>
91-
<google-cloud-logging.version>3.4.0</google-cloud-logging.version>
92-
<gcs-connector.version>2.2.4</gcs-connector.version>
74+
<google-cloud-bigquery.version>2.10.9</google-cloud-bigquery.version>
75+
<!-- the google-api-services-bigquery version used by the google-cloud-bigquery version above -->
76+
<google-api-services-bigquery.version>v2-rev20220326-1.32.1</google-api-services-bigquery.version>
77+
<google-cloud-bigquerystorage.version>2.12.2</google-cloud-bigquerystorage.version>
78+
<google-cloud-storage.version>2.6.1</google-cloud-storage.version>
79+
<google-cloud-trace.version>2.1.11</google-cloud-trace.version>
80+
<google-cloud-monitoring.version>3.2.8</google-cloud-monitoring.version>
81+
<google-cloud-spanner.version>6.23.3</google-cloud-spanner.version>
82+
<google-cloud-tasks.version>2.1.11</google-cloud-tasks.version>
83+
<bigtable-hbase-beam.version>2.1.1</bigtable-hbase-beam.version>
84+
<google-cloud-bigtable.version>2.6.2</google-cloud-bigtable.version>
85+
<google-cloud-pubsub.version>1.117.0</google-cloud-pubsub.version>
86+
<!-- the proto-google-cloud-pubsub-v1 used by the google-cloud-pubsub version above -->
87+
<proto-google-cloud-pubsub-v1.version>1.99.0</proto-google-cloud-pubsub-v1.version>
88+
<google-cloud-datastore.version>2.2.10</google-cloud-datastore.version>
89+
<google-cloud-service-usage.version>2.2.7</google-cloud-service-usage.version>
90+
<google-cloud-container.version>2.3.7</google-cloud-container.version>
91+
<google-cloud-orchestration-airflow.version>1.1.7</google-cloud-orchestration-airflow.version>
92+
<google-cloud-resourcemanager.version>1.2.11</google-cloud-resourcemanager.version>
93+
<google-cloud-redis.version>2.4.1</google-cloud-redis.version>
94+
<google-cloud-logging.version>3.7.5</google-cloud-logging.version>
95+
<google-cloud-secretmanager.version>2.1.6</google-cloud-secretmanager.version>
96+
<gcs-connector.version>2.2.6</gcs-connector.version>
9397

9498
<!-- Layer 3: Beam -->
95-
<beam.version>2.35.0</beam.version>
99+
<beam.version>2.40.0</beam.version>
96100
</properties>
97101

98102
<distributionManagement>
@@ -256,7 +260,6 @@
256260
<version>${google-cloud-core.version}</version>
257261
</dependency>
258262

259-
<!-- Layer 2: Cloud -->
260263
<dependency>
261264
<groupId>com.google.appengine</groupId>
262265
<artifactId>appengine-api-1.0-sdk</artifactId>
@@ -424,6 +427,13 @@
424427
<type>pom</type>
425428
<scope>import</scope>
426429
</dependency>
430+
<dependency>
431+
<groupId>com.google.cloud</groupId>
432+
<artifactId>google-cloud-secretmanager-bom</artifactId>
433+
<version>${google-cloud-secretmanager.version}</version>
434+
<type>pom</type>
435+
<scope>import</scope>
436+
</dependency>
427437
<dependency>
428438
<groupId>com.google.cloud.bigdataoss</groupId>
429439
<artifactId>gcs-connector</artifactId>

‎boms/integration-tests/pom.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
<configuration>
3939
<!-- To avoid ForkedBooter loading issue -->
4040
<useSystemClassLoader>false</useSystemClassLoader>
41-
<argLine>-Xms128m -Xmx2048m</argLine>
41+
<argLine>-Xms128m -Xmx4g</argLine>
4242
<trimStackTrace>false</trimStackTrace>
4343
</configuration>
4444
</plugin>

‎boms/integration-tests/src/test/java/com/google/cloud/BomContentTest.java‎

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
import com.google.cloud.tools.opensource.classpath.DependencyMediation;
2323
import com.google.cloud.tools.opensource.dependencies.Artifacts;
2424
import com.google.cloud.tools.opensource.dependencies.Bom;
25+
import com.google.cloud.tools.opensource.dependencies.DependencyPath;
2526
import com.google.common.base.Joiner;
27+
import com.google.common.base.Verify;
2628
import com.google.common.collect.ImmutableList;
2729
import java.io.IOException;
2830
import java.net.HttpURLConnection;
@@ -34,6 +36,7 @@
3436
import java.util.List;
3537
import java.util.Map;
3638
import org.eclipse.aether.artifact.Artifact;
39+
import org.eclipse.aether.graph.Dependency;
3740
import org.eclipse.aether.util.version.GenericVersionScheme;
3841
import org.eclipse.aether.version.InvalidVersionSpecificationException;
3942
import org.eclipse.aether.version.Version;
@@ -44,6 +47,11 @@
4447
public class BomContentTest {
4548
private static VersionScheme versionScheme = new GenericVersionScheme();
4649

50+
// List of Maven dependency scopes that are visible to library users. For example "provided" scope
51+
// dependencies do not appear in users' class path.
52+
private static final ImmutableList<String> dependencyScopesVisibleToUsers =
53+
ImmutableList.of("compile", "runtime");
54+
4755
@Test
4856
public void testLtsBom() throws Exception {
4957
Path bomPath = Paths.get("..", "cloud-lts-bom", "pom.xml").toAbsolutePath();
@@ -207,14 +215,37 @@ private static ImmutableList<String> findNoDowngradeViolation(
207215
continue;
208216
}
209217

218+
// Filter by scopes that are invisible to library users
219+
ImmutableList<DependencyPath> dependencyPaths = result.getDependencyPaths(entry);
220+
Verify.verify(
221+
!dependencyPaths.isEmpty(),
222+
"The class path entry should have at least one dependency path from the root");
223+
boolean dependencyVisibleToUsers = false;
224+
for (DependencyPath dependencyPath : dependencyPaths) {
225+
int length = dependencyPath.size();
226+
// As the root element is an empty node, the last element is at "length - 2".
227+
Dependency dependency = dependencyPath.getDependency(length - 2);
228+
if (dependencyScopesVisibleToUsers.contains(dependency.getScope())) {
229+
dependencyVisibleToUsers = true;
230+
break;
231+
}
232+
}
233+
if (!dependencyVisibleToUsers) {
234+
// For provided-scope dependencies, we don't have to worry about them because they don't
235+
// appear in library users' class path. For example, appengine-api-1.0-sdk are used via
236+
// provided scope.
237+
continue;
238+
}
239+
210240
// A violation of the no-downgrade rule is found.
211241
violations.add(
212242
artifact
213243
+ " has a transitive dependency "
214244
+ transitiveDependency
215245
+ ". This is higher version than "
216246
+ bomArtifact
217-
+ " in the BOM");
247+
+ " in the BOM. Example dependency path: "
248+
+ dependencyPaths.get(0));
218249
}
219250
return violations.build();
220251
}

0 commit comments

Comments
 (0)