From 592aa1298ea0a50d9916e92ff02c3b9af4be8aeb Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 10 Mar 2025 13:08:08 -0400 Subject: [PATCH 1/3] chore: add java 8 compatibility check --- .../workflows/java_compatibility_check.yaml | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .github/workflows/java_compatibility_check.yaml diff --git a/.github/workflows/java_compatibility_check.yaml b/.github/workflows/java_compatibility_check.yaml new file mode 100644 index 0000000000..261602d92c --- /dev/null +++ b/.github/workflows/java_compatibility_check.yaml @@ -0,0 +1,43 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# Github action job to test core java library features on +# downstream client libraries before they are released. +on: + pull_request: +name: Java 8 compatibility check +jobs: + java8-compatibility-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + java-version: 11 + distribution: temurin + cache: maven + - name: Install Maven modules to local Maven repository + run: | + mvn install -B -ntp -T 1C -DskipTests -Dclirr.skip -Dcheckstyle.skip -Denforcer.skip + - name: Check Java 8 compatibility for class files + shell: bash + run: | + find . -type f -name "*.class" -path "*/classes/*" -not -path "*/grpc-*" -not -path "*/proto-*/*" -print |\ + while IFS= read -r class_file; do + version=$(javap -v "${class_file}" | grep "major version" | cut -d ' ' -f 5) + if [[ "${version}" != "52" ]]; then + echo "${class_file} is not compatible with Java 8." + exit 1 + fi + done + echo "All class files are compatible with Java 8." \ No newline at end of file From 76f544fbf31cd189b49d61895f7e0961dfbdf5b4 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 10 Mar 2025 13:23:42 -0400 Subject: [PATCH 2/3] exclude gapic-generator-java --- .github/workflows/java_compatibility_check.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/java_compatibility_check.yaml b/.github/workflows/java_compatibility_check.yaml index 261602d92c..90c13d6841 100644 --- a/.github/workflows/java_compatibility_check.yaml +++ b/.github/workflows/java_compatibility_check.yaml @@ -32,7 +32,10 @@ jobs: - name: Check Java 8 compatibility for class files shell: bash run: | - find . -type f -name "*.class" -path "*/classes/*" -not -path "*/grpc-*" -not -path "*/proto-*/*" -print |\ + find . -type f -name "*.class" -path "*/classes/*" \ + -not -path "*/grpc-*" \ + -not -path "*/proto-*/*" \ + -not -path "*/gapic-generator-java/*" -print |\ while IFS= read -r class_file; do version=$(javap -v "${class_file}" | grep "major version" | cut -d ' ' -f 5) if [[ "${version}" != "52" ]]; then From 7e6358ec018df90e997e61b98f4e8e9feeeacc16 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 10 Mar 2025 13:24:23 -0400 Subject: [PATCH 3/3] fix typo --- .github/workflows/java_compatibility_check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java_compatibility_check.yaml b/.github/workflows/java_compatibility_check.yaml index 90c13d6841..a0ab4e83d5 100644 --- a/.github/workflows/java_compatibility_check.yaml +++ b/.github/workflows/java_compatibility_check.yaml @@ -33,7 +33,7 @@ jobs: shell: bash run: | find . -type f -name "*.class" -path "*/classes/*" \ - -not -path "*/grpc-*" \ + -not -path "*/grpc-*/*" \ -not -path "*/proto-*/*" \ -not -path "*/gapic-generator-java/*" -print |\ while IFS= read -r class_file; do