-
Notifications
You must be signed in to change notification settings - Fork 68
ci: Test upper bound dependenices file in Github CI #3877
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
d5b2be5
to
6e96807
Compare
6e96807
to
e1575ba
Compare
@gemini-cli /review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📋 Review Summary
This PR introduces a new GitHub Actions workflow to test for dependency compatibility using an upper-bounds dependency file. This is a great addition to help ensure the stability of the project.
🔍 General Feedback
- The shell script and workflow are well-structured and easy to understand.
- The use of
workflow_dispatch
is a good feature for manual testing. - There are a few minor issues with duplicate keys in the dependencies file and missing newlines at the end of files.
Overall, this is a solid contribution. Once the minor issues are addressed, this will be ready to merge.
@gemini-cli /review |
|
|
See b/436286826 for more information Example workflow run: https://github.com/googleapis/sdk-platform-java/actions/runs/16759125283/job/47449497271?pr=3877 ## Sample run with upper-bounds file Running locally: `./.github/scripts/test_dependency_compatibility.sh` ``` mvn verify -Penable-integration-tests -Dclirr.skip -Dcheckstyle.skip -Dfmt.skip -Denforcer.skip -Djavax.annotation-api.version=1.3.2 -Dgrpc.version=1.74.0 -Dgoogle.auth.version=1.37.1 -Dgoogle.http-client.version=1.47.1 -Dgson.version=2.13.1 -Dguava.version=33.4.8-jre -Dprotobuf.version=4.31.1 -Dopentelemetry.version=1.52.0 -Derrorprone.version=4.15.1 -Dj2objc-annotations.version=3.0.0 -Dthreetenbp.version=1.7.1 -Dslf4j.version=2.0.17 -Dgrpc-gcp.version=1.6.1 -Dgoogle.oauth-client.version=1.39.0 -Dgoogle.api-client.version=2.8.0 -Dthreeten-extra.version=1.8.0 -Dopencensus.version=0.31.0 -Dfindbugs.version=3.0.2 -Derrorprone.version=2.41.0 -Dcodec.version=1.19.0 -Dhttpcomponents.httpcore.version=4.4.16 -Dhttpcomponents.httpclient.version=4.5.14 -Dapache-httpclient-5.version=5.5 -Dapache-httpcore-5.version=5.3.4 -Dperfmark-api.version=0.27.0 -Dj2objc-annotations.version=3.0.0 -Dgoogle.cloud.opentelemetry.version=0.36.0 -Dopentelemetry-semconv.version=1.34.0 -Dflogger.version=0.9 -Darrow.version=18.3.0 -Ddev.cel.version=0.10.1 -Dcom.google.crypto.tink.version=1.18.0 -Dio.opentelemetry.contrib.opentelemetry-gcp-resources.version=1.48.0-alpha ``` ## Expected error when using an incompatible Deps version Running locally with Protobuf 4.26.0: `./.github/scripts/test_dependency_compatibility.sh -l protobuf=4.26.0` Results: ``` [ERROR] /Users/lawrenceqiu/IdeaProjects/sdk-platform-java/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/OAuthRequirements.java:[65,42] cannot find symbol [ERROR] symbol: class UnusedPrivateParameter [ERROR] location: class com.google.api.OAuthRequirements [ERROR] /Users/lawrenceqiu/IdeaProjects/sdk-platform-java/java-common-protos/proto-google-common-protos/src/main/java/com/google/api/OAuthRequirements.java:[74,51] package com.google.protobuf.GeneratedMessageV3 does not exist ``` ## Future This does not cover binary or behavior compatibility issues. We plan on using downstream unit and integration tests to test those incompatibilities in a future date.
See b/436286826 for more information
Example workflow run: https://github.com/googleapis/sdk-platform-java/actions/runs/16759125283/job/47449497271?pr=3877
Sample run with upper-bounds file
Running locally:
./.github/scripts/test_dependency_compatibility.sh
Expected error when using an incompatible Deps version
Running locally with Protobuf 4.26.0:
./.github/scripts/test_dependency_compatibility.sh -l protobuf=4.26.0
Results:
Future
This does not cover binary or behavior compatibility issues. We plan on using downstream unit and integration tests to test those incompatibilities in a future date.