From 6f4379d5eaca6f6c3b1d5602eb059c88ef17433f Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 10 Mar 2025 12:07:46 -0400 Subject: [PATCH 1/4] 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 3d1c1615e27508a0c40971bbcc9a84a61993023b Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 10 Mar 2025 12:52:35 -0400 Subject: [PATCH 2/4] remove excluded folders --- .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 261602d92c..8877d40caf 100644 --- a/.github/workflows/java_compatibility_check.yaml +++ b/.github/workflows/java_compatibility_check.yaml @@ -32,7 +32,7 @@ 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/*" -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 3ec607d424ce6183da5f8185ad7a0f937b554e65 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 10 Mar 2025 13:05:29 -0400 Subject: [PATCH 3/4] bring back excludes --- .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 8877d40caf..261602d92c 100644 --- a/.github/workflows/java_compatibility_check.yaml +++ b/.github/workflows/java_compatibility_check.yaml @@ -32,7 +32,7 @@ jobs: - name: Check Java 8 compatibility for class files shell: bash run: | - find . -type f -name "*.class" -path "*/classes/*" -print |\ + 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 From 91a322eb444924b01d3ff71da80fc4d247b543a8 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Mon, 10 Mar 2025 13:22:29 -0400 Subject: [PATCH 4/4] exclude generator path --- .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