Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 48 additions & 38 deletions boms/cloud-lts-bom/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,50 +49,54 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

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

<!-- Layer 2: Cloud -->
<appengine-api-1.0-sdk.version>1.9.93</appengine-api-1.0-sdk.version>
<google-iam-admin.version>1.0.0</google-iam-admin.version>
<google-cloud-iamcredentials.version>2.0.6</google-cloud-iamcredentials.version>
<appengine-api-1.0-sdk.version>1.9.96</appengine-api-1.0-sdk.version>
<google-iam-admin.version>1.1.7</google-iam-admin.version>
<google-cloud-iamcredentials.version>2.0.14</google-cloud-iamcredentials.version>
<google-api-services-androidpublisher.version>v3-rev20211021-1.32.1</google-api-services-androidpublisher.version>
<google-cloud-bigquery.version>2.3.3</google-cloud-bigquery.version>
<google-api-services-bigquery.version>v2-rev20211017-1.32.1</google-api-services-bigquery.version>
<google-cloud-bigquerystorage.version>2.4.2</google-cloud-bigquerystorage.version>
<google-cloud-storage.version>2.1.9</google-cloud-storage.version>
<google-cloud-trace.version>2.0.6</google-cloud-trace.version>
<google-cloud-monitoring.version>3.1.0</google-cloud-monitoring.version>
<google-cloud-spanner.version>6.14.1</google-cloud-spanner.version>
<google-cloud-tasks.version>2.0.6</google-cloud-tasks.version>
<bigtable-hbase-beam.version>1.25.2-sp.3</bigtable-hbase-beam.version>
<google-cloud-bigtable.version>2.2.0</google-cloud-bigtable.version>
<google-cloud-pubsub.version>1.114.7</google-cloud-pubsub.version>
<proto-google-cloud-pubsub-v1.version>1.96.7</proto-google-cloud-pubsub-v1.version>
<google-cloud-datastore.version>2.1.3</google-cloud-datastore.version>
<google-cloud-service-usage.version>2.1.3</google-cloud-service-usage.version>
<google-cloud-container.version>2.2.1</google-cloud-container.version>
<google-cloud-orchestration-airflow.version>1.0.0</google-cloud-orchestration-airflow.version>
<google-cloud-resourcemanager.version>1.1.4</google-cloud-resourcemanager.version>
<google-cloud-redis.version>2.0.6</google-cloud-redis.version>
<google-cloud-logging.version>3.4.0</google-cloud-logging.version>
<gcs-connector.version>2.2.4</gcs-connector.version>
<google-cloud-bigquery.version>2.10.9</google-cloud-bigquery.version>
<!-- the google-api-services-bigquery version used by the google-cloud-bigquery version above -->
<google-api-services-bigquery.version>v2-rev20220326-1.32.1</google-api-services-bigquery.version>
<google-cloud-bigquerystorage.version>2.12.2</google-cloud-bigquerystorage.version>
<google-cloud-storage.version>2.6.1</google-cloud-storage.version>
<google-cloud-trace.version>2.1.11</google-cloud-trace.version>
<google-cloud-monitoring.version>3.2.8</google-cloud-monitoring.version>
<google-cloud-spanner.version>6.23.3</google-cloud-spanner.version>
<google-cloud-tasks.version>2.1.11</google-cloud-tasks.version>
<bigtable-hbase-beam.version>2.1.1</bigtable-hbase-beam.version>
<google-cloud-bigtable.version>2.6.2</google-cloud-bigtable.version>
<google-cloud-pubsub.version>1.117.0</google-cloud-pubsub.version>

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As per discussion with Mike M.

<!-- the proto-google-cloud-pubsub-v1 used by the google-cloud-pubsub version above -->
<proto-google-cloud-pubsub-v1.version>1.99.0</proto-google-cloud-pubsub-v1.version>
<google-cloud-datastore.version>2.2.10</google-cloud-datastore.version>
<google-cloud-service-usage.version>2.2.7</google-cloud-service-usage.version>
<google-cloud-container.version>2.3.7</google-cloud-container.version>
<google-cloud-orchestration-airflow.version>1.1.7</google-cloud-orchestration-airflow.version>
<google-cloud-resourcemanager.version>1.2.11</google-cloud-resourcemanager.version>
<google-cloud-redis.version>2.4.1</google-cloud-redis.version>
<google-cloud-logging.version>3.7.5</google-cloud-logging.version>
<google-cloud-secretmanager.version>2.1.6</google-cloud-secretmanager.version>

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is new addition.

<gcs-connector.version>2.2.6</gcs-connector.version>

<!-- Layer 3: Beam -->
<beam.version>2.35.0</beam.version>
<beam.version>2.40.0</beam.version>
</properties>

<distributionManagement>
Expand Down Expand Up @@ -256,7 +260,6 @@
<version>${google-cloud-core.version}</version>
</dependency>

<!-- Layer 2: Cloud -->
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-1.0-sdk</artifactId>
Expand Down Expand Up @@ -424,6 +427,13 @@
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-secretmanager-bom</artifactId>
<version>${google-cloud-secretmanager.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.google.cloud.bigdataoss</groupId>
<artifactId>gcs-connector</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion boms/integration-tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
<configuration>
<!-- To avoid ForkedBooter loading issue -->
<useSystemClassLoader>false</useSystemClassLoader>
<argLine>-Xms128m -Xmx2048m</argLine>
<argLine>-Xms128m -Xmx4g</argLine>
<trimStackTrace>false</trimStackTrace>
</configuration>
</plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@
import com.google.cloud.tools.opensource.classpath.DependencyMediation;
import com.google.cloud.tools.opensource.dependencies.Artifacts;
import com.google.cloud.tools.opensource.dependencies.Bom;
import com.google.cloud.tools.opensource.dependencies.DependencyPath;
import com.google.common.base.Joiner;
import com.google.common.base.Verify;
import com.google.common.collect.ImmutableList;
import java.io.IOException;
import java.net.HttpURLConnection;
Expand All @@ -34,6 +36,7 @@
import java.util.List;
import java.util.Map;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.util.version.GenericVersionScheme;
import org.eclipse.aether.version.InvalidVersionSpecificationException;
import org.eclipse.aether.version.Version;
Expand All @@ -44,6 +47,11 @@
public class BomContentTest {
private static VersionScheme versionScheme = new GenericVersionScheme();

// List of Maven dependency scopes that are visible to library users. For example "provided" scope
// dependencies do not appear in users' class path.
private static final ImmutableList<String> dependencyScopesVisibleToUsers =
ImmutableList.of("compile", "runtime");

@Test
public void testLtsBom() throws Exception {
Path bomPath = Paths.get("..", "cloud-lts-bom", "pom.xml").toAbsolutePath();
Expand Down Expand Up @@ -207,14 +215,37 @@ private static ImmutableList<String> findNoDowngradeViolation(
continue;
}

// Filter by scopes that are invisible to library users
ImmutableList<DependencyPath> dependencyPaths = result.getDependencyPaths(entry);
Verify.verify(
!dependencyPaths.isEmpty(),
"The class path entry should have at least one dependency path from the root");
boolean dependencyVisibleToUsers = false;
for (DependencyPath dependencyPath : dependencyPaths) {
int length = dependencyPath.size();
// As the root element is an empty node, the last element is at "length - 2".
Dependency dependency = dependencyPath.getDependency(length - 2);
if (dependencyScopesVisibleToUsers.contains(dependency.getScope())) {
dependencyVisibleToUsers = true;
break;
}
}
if (!dependencyVisibleToUsers) {
// For provided-scope dependencies, we don't have to worry about them because they don't
// appear in library users' class path. For example, appengine-api-1.0-sdk are used via
// provided scope.
continue;
}

// A violation of the no-downgrade rule is found.
violations.add(
artifact
+ " has a transitive dependency "
+ transitiveDependency
+ ". This is higher version than "
+ bomArtifact
+ " in the BOM");
+ " in the BOM. Example dependency path: "
+ dependencyPaths.get(0));
}
return violations.build();
}
Expand Down