1on: 2 push: 3 branches: 4 - main 5 pull_request: 6name: ci 7env: 8 SHOWCASE_VERSION: 0.27.0 9jobs: 10 build: 11 runs-on: ubuntu-22.04 12 strategy: 13 matrix: 14 java: [ 11, 17 ] 15 steps: 16 - uses: actions/checkout@v3 17 - uses: actions/setup-java@v3 18 with: 19 java-version: ${{ matrix.java }} 20 distribution: temurin 21 cache: maven 22 - run: java -version 23 - name: Unit Tests 24 run: | 25 mvn test --batch-mode --no-transfer-progress -Dcheckstyle.skip \ 26 -Dfmt.skip -DenableTestCoverage 27 - run: bazelisk version 28 - name: Install Maven modules 29 run: | 30 mvn install -B -ntp -DskipTests -Dclirr.skip -Dcheckstyle.skip 31 - name: Integration Tests 32 run: | 33 bazelisk --batch test //test/integration/... 34 - name: Gradle Build Generated Storage Client Library 35 run: | 36 echo "Building Storage lib from generated source..." 37 mkdir /tmp/java-storage 38 bazelisk --batch build @com_google_googleapis//google/storage/v2:google-cloud-storage-v2-java 39 tar zxvf bazel-bin/external/com_google_googleapis/google/storage/v2/google-cloud-storage-v2-java.tar.gz -C /tmp/java-storage 40 pushd /tmp/java-storage/google-cloud-storage-v2-java 41 ./gradlew clean build publishToMavenLocal sourcesJar allJars 42 popd 43 44 - name: Gradle Build Generated Compute Client Library 45 run: | 46 echo "Building Compute lib from generated source..." 47 mkdir /tmp/java-compute 48 bazelisk --batch build @com_google_googleapis//google/cloud/compute/v1small:google-cloud-compute-small-v1-java 49 tar zxvf bazel-bin/external/com_google_googleapis/google/cloud/compute/v1small/google-cloud-compute-small-v1-java.tar.gz -C /tmp/java-compute 50 pushd /tmp/java-compute/google-cloud-compute-small-v1-java 51 ./gradlew clean build publishToMavenLocal sourcesJar allJars 52 popd 53 54 build-java8-except-gapic-generator-java: 55 name: "build(8) except for gapic-generator-java" 56 runs-on: ubuntu-22.04 57 steps: 58 - uses: actions/checkout@v3 59 # Java 8 tests uses JDK 11 to compile and JDK 8 to run tests. 60 - uses: actions/setup-java@v3 61 with: 62 java-version: 8 63 distribution: temurin 64 cache: maven 65 - run: echo "JAVA8_HOME=${JAVA_HOME}" >> $GITHUB_ENV 66 - uses: actions/setup-java@v3 67 with: 68 java-version: 11 69 distribution: temurin 70 - run: echo "JAVA11_HOME=${JAVA_HOME}" >> $GITHUB_ENV 71 - name: Compile with Java 11 72 shell: bash 73 run: | 74 set -x 75 export JAVA_HOME=$JAVA11_HOME 76 export PATH=${JAVA_HOME}/bin:$PATH 77 # Why not compile? It's because the process needs to package jar so 78 # that gapic-generator-java module can use testlib modules of gax. 79 mvn verify --batch-mode --no-transfer-progress -Dcheckstyle.skip \ 80 -DskipTests -Dfmt.skip 81 - name: Run test with Java 8 for all modules except gapic-generator-java 82 shell: bash 83 run: | 84 set -x 85 export JAVA_HOME=$JAVA8_HOME 86 export PATH=${JAVA_HOME}/bin:$PATH 87 # useIncrementalCompilation=false to avoid recompiling classes 88 # generated by Java 11 compiler above. 89 mvn -B -ntp test --projects '!gapic-generator-java' \ 90 -Dcheckstyle.skip -Dmaven.compiler.useIncrementalCompilation=false \ 91 -Dfmt.skip 92 93 build-java8-gapic-generator-java: 94 name: "build(8) for gapic-generator-java" 95 runs-on: ubuntu-22.04 96 steps: 97 - uses: actions/checkout@v3 98 - uses: actions/setup-java@v3 99 with: 100 java-version: 11 101 distribution: temurin 102 cache: maven 103 - name: Install all modules using Java 11 104 shell: bash 105 run: | 106 mvn -V -B -ntp clean install -DskipTests 107 - uses: actions/setup-java@v3 108 with: 109 java-version: 8 110 distribution: temurin 111 - run: java -version 112 - name: Run tests in Java 8 with the source compiled in Java 11 for gapic-generator-java 113 shell: bash 114 run: | 115 mvn -V -B -ntp surefire:test --projects 'gapic-generator-java' 116 - run: bazelisk version 117 - name: Integration Tests 118 run: | 119 bazelisk --batch test //test/integration/... 120 - name: Gradle Build Generated Storage Client Library 121 run: | 122 echo "Building Storage lib from generated source..." 123 mkdir /tmp/java-storage 124 bazelisk --batch build @com_google_googleapis//google/storage/v2:google-cloud-storage-v2-java 125 tar zxvf bazel-bin/external/com_google_googleapis/google/storage/v2/google-cloud-storage-v2-java.tar.gz -C /tmp/java-storage 126 pushd /tmp/java-storage/google-cloud-storage-v2-java 127 ./gradlew clean build publishToMavenLocal sourcesJar allJars 128 popd 129 130 - name: Gradle Build Generated Compute Client Library 131 run: | 132 echo "Building Compute lib from generated source..." 133 mkdir /tmp/java-compute 134 bazelisk --batch build @com_google_googleapis//google/cloud/compute/v1small:google-cloud-compute-small-v1-java 135 tar zxvf bazel-bin/external/com_google_googleapis/google/cloud/compute/v1small/google-cloud-compute-small-v1-java.tar.gz -C /tmp/java-compute 136 pushd /tmp/java-compute/google-cloud-compute-small-v1-java 137 ./gradlew clean build publishToMavenLocal sourcesJar allJars 138 popd 139 140 lint: 141 runs-on: ubuntu-22.04 142 steps: 143 - uses: actions/checkout@v3 144 - uses: actions/setup-java@v3 145 with: 146 java-version: 11 147 distribution: temurin 148 cache: maven 149 - run: java -version 150 - name: Java Linter 151 # Exclude the root project 152 run: mvn -B -ntp fmt:check 153 154 compatibility: 155 runs-on: ubuntu-22.04 156 steps: 157 - uses: actions/checkout@v3 158 - uses: actions/setup-java@v3 159 with: 160 java-version: 11 161 distribution: temurin 162 cache: maven 163 - run: java -version 164 - name: Compatibility check 165 # package jar so that gapic-generator-java module can use 166 # testlib modules of gax 167 run: mvn package clirr:check -DskipTests 168 169 requirements-kokoro: 170 runs-on: ubuntu-latest 171 container: gcr.io/cloud-devrel-public-resources/java11 172 steps: 173 - uses: actions/checkout@v3 174 - run: python3 --version 175 - run: python3 -m pip install --require-hashes -r .kokoro/requirements.txt 176 - run: python3 -m releasetool publish-reporter-script > /dev/null 177 178 showcase: 179 runs-on: ubuntu-22.04 180 strategy: 181 matrix: 182 java: [ 11, 17 ] 183 steps: 184 - uses: actions/checkout@v3 185 - uses: actions/setup-java@v3 186 with: 187 java-version: ${{ matrix.java }} 188 distribution: temurin 189 - run: mvn -version 190 - name: Install Maven modules 191 run: | 192 mvn install -B -ntp -DskipTests -Dclirr.skip -Dcheckstyle.skip 193 - name: Java Linter 194 working-directory: showcase 195 run: | 196 mvn -B -ntp fmt:check 197 - name: Showcase golden tests 198 working-directory: showcase 199 run: | 200 mvn test \ 201 -P enable-golden-tests \ 202 --batch-mode \ 203 --no-transfer-progress 204 205 - name: Install showcase server 206 run: | 207 sudo mkdir -p /usr/src/showcase 208 sudo chown -R ${USER} /usr/src/ 209 curl --location https://github.com/googleapis/gapic-showcase/releases/download/v${SHOWCASE_VERSION}/gapic-showcase-${SHOWCASE_VERSION}-linux-amd64.tar.gz --output /usr/src/showcase/showcase-${SHOWCASE_VERSION}-linux-amd64.tar.gz 210 cd /usr/src/showcase/ 211 tar -xf showcase-* 212 ./gapic-showcase run & 213 cd - 214 - name: Showcase integration tests 215 working-directory: showcase 216 run: | 217 mvn verify \ 218 -P enable-integration-tests \ 219 --batch-mode \ 220 --no-transfer-progress 221 gapic-generator-java-bom: 222 runs-on: ubuntu-latest 223 steps: 224 - uses: actions/checkout@v3 225 - uses: actions/setup-java@v3 226 with: 227 java-version: 11 228 distribution: temurin 229 cache: maven 230 - name: Install Maven modules to local Maven repository 231 run: | 232 mvn install -B -ntp -DskipTests -Dclirr.skip -Dcheckstyle.skip 233 - name: Validate gapic-generator-java-bom 234 uses: googleapis/java-cloud-bom/tests/validate-bom@v26.13.0 235 with: 236 bom-path: gapic-generator-java-bom/pom.xml 237