• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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