1+ # Copyright 2022 Google LLC
2+ #
3+ # Licensed under the Apache License, Version 2.0 (the "License");
4+ # you may not use this file except in compliance with the License.
5+ # You may obtain a copy of the License at
6+ #
7+ # http://www.apache.org/licenses/LICENSE-2.0
8+ #
9+ # Unless required by applicable law or agreed to in writing, software
10+ # distributed under the License is distributed on an "AS IS" BASIS,
11+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+ # See the License for the specific language governing permissions and
13+ # limitations under the License.
14+ # Github action job to test core java library features on
15+ # downstream client libraries before they are released.
16+ on :
17+ pull_request :
18+ name : Java 8 compatibility check
19+ jobs :
20+ java8-compatibility-check :
21+ runs-on : ubuntu-latest
22+ steps :
23+ - uses : actions/checkout@v4
24+ - uses : actions/setup-java@v4
25+ with :
26+ java-version : 11
27+ distribution : temurin
28+ cache : maven
29+ - name : Install Maven modules to local Maven repository
30+ run : |
31+ mvn install -B -ntp -T 1C -DskipTests -Dclirr.skip -Dcheckstyle.skip -Denforcer.skip
32+ - name : Check Java 8 compatibility for class files
33+ shell : bash
34+ run : |
35+ find . -type f -name "*.class" -path "*/classes/*" \
36+ -not -path "*/grpc-*/*" \
37+ -not -path "*/proto-*/*" \
38+ -not -path "*/gapic-generator-java/*" -print |\
39+ while IFS= read -r class_file; do
40+ version=$(javap -v "${class_file}" | grep "major version" | cut -d ' ' -f 5)
41+ if [[ "${version}" != "52" ]]; then
42+ echo "${class_file} is not compatible with Java 8."
43+ exit 1
44+ fi
45+ done
46+ echo "All class files are compatible with Java 8."
0 commit comments