Test #1363
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # SPDX-License-Identifier: Apache-2.0 | |
| # Copyright 2022 Atlan Pte. Ltd. | |
| name: "Test" | |
| permissions: | |
| contents: read | |
| on: | |
| schedule: | |
| - cron: "0 4 * * *" | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| name: "Build" | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 | |
| with: | |
| java-version: 21 | |
| distribution: temurin | |
| - uses: gradle/actions/setup-gradle@v5 | |
| with: | |
| add-job-summary: on-failure | |
| - name: Compile | |
| run: ./gradlew assemble shadowJar testClasses | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 | |
| with: | |
| name: build-artifacts | |
| path: | | |
| **/build/libs/*.jar | |
| **/build/classes/ | |
| retention-days: 1 | |
| compression-level: 0 | |
| list-integration-tests: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| tests: ${{ steps.test-files.outputs.tests }} | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: List integration tests | |
| id: test-files | |
| run: | | |
| tests=$(ls integration-tests/src/test/java/com/atlan/java/sdk/*Test.java | sed -E 's|.*/src/test/java/com/atlan/java/sdk/||; s|/|.|g; s|\.java$||' | tr '\n' ' ') | |
| json_tests=$(echo "$tests[@]}" | jq -R -c 'split(" ")[:-1]') | |
| echo "tests=$json_tests" >> $GITHUB_OUTPUT | |
| integration-test: | |
| needs: | |
| - build | |
| - list-integration-tests | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| tests: ${{fromJson(needs.list-integration-tests.outputs.tests)}} | |
| concurrency: | |
| group: ${{ matrix.tests }} | |
| name: "Integration" | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Download artifacts | |
| uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 | |
| with: | |
| name: build-artifacts | |
| - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 | |
| with: | |
| java-version: 21 | |
| distribution: temurin | |
| - uses: gradle/actions/setup-gradle@v5 | |
| with: | |
| cache-read-only: true | |
| gradle-home-cache-cleanup: false | |
| add-job-summary: on-failure | |
| - name: Integration tests | |
| env: | |
| ATLAN_BASE_URL: ${{ secrets.ATLAN_BASE_URL }} | |
| ATLAN_API_KEY: ${{ secrets.ATLAN_API_KEY }} | |
| NVD_API_KEY: ${{ secrets.NVD_API_KEY }} | |
| JAVA_TOOL_OPTIONS: "-Djava.io.tmpdir=/home/runner" | |
| run: ./gradlew -PintegrationTests integration-tests:test --tests "com.atlan.java.sdk.${{ matrix.tests }}" -x assemble -x testClasses -x buildSrc:jar | |
| - if: success() || failure() | |
| uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 | |
| with: | |
| name: ${{ matrix.tests }} | |
| path: integration-tests/${{ matrix.tests }}.log | |
| list-packages: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| tests: ${{ steps.test-directories.outputs.tests }} | |
| asset-import-chunks: ${{ steps.asset-import-chunks.outputs.chunks }} | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: List package tests | |
| id: test-directories | |
| run: | | |
| pkgs=$(find samples/packages -type d -mindepth 1 -maxdepth 1 | sed -E 's|samples/packages/||' | grep -v '^build$' | grep -v '^asset-import$' | tr '\n' ' ') | |
| json_pkgs=$(echo "${pkgs[@]}" | jq -R -c 'split(" ")[:-1]') | |
| echo "tests=$json_pkgs" >> $GITHUB_OUTPUT | |
| - name: Create asset-import test chunks | |
| id: asset-import-chunks | |
| run: | | |
| # Find all test classes | |
| test_classes=$(find samples/packages/asset-import -name "*Test.kt" -type f | \ | |
| sed -E 's|samples/packages/asset-import/src/test/kotlin/||' | \ | |
| sed -E 's|/|.|g' | \ | |
| sed -E 's|.kt$||' | \ | |
| sort) | |
| # Split into chunks of 10 | |
| chunks=$(echo "$test_classes" | jq -R -s -c ' | |
| split("\n")[:-1] | | |
| [range(0; length; 10) as $i | .[$i:$i+10]] | | |
| to_entries | | |
| map({chunk: .key, tests: .value}) | |
| ') | |
| echo "chunks=$chunks" >> $GITHUB_OUTPUT | |
| asset-import-test: | |
| needs: | |
| - build | |
| - list-packages | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: ${{fromJson(needs.list-packages.outputs.asset-import-chunks)}} | |
| name: "asset-import: chunk ${{ matrix.chunk }}" | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Download artifacts | |
| uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 | |
| with: | |
| name: build-artifacts | |
| - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 | |
| with: | |
| java-version: 21 | |
| distribution: temurin | |
| - uses: gradle/actions/setup-gradle@v5 | |
| with: | |
| cache-read-only: true | |
| gradle-home-cache-cleanup: false | |
| add-job-summary: on-failure | |
| - name: Run test chunk | |
| env: | |
| ATLAN_BASE_URL: ${{ secrets.ATLAN_BASE_URL }} | |
| ATLAN_API_KEY: ${{ secrets.ATLAN_API_KEY }} | |
| NVD_API_KEY: ${{ secrets.NVD_API_KEY }} | |
| JAVA_TOOL_OPTIONS: "-Djava.io.tmpdir=/home/runner" | |
| run: | | |
| test_args=$(echo '${{ toJson(matrix.tests) }}' | jq -r '.[] | "--tests " + .') | |
| ./gradlew -PpackageTests :samples:packages:asset-import:test $test_args -x assemble -x testClasses -x buildSrc:jar | |
| - if: success() || failure() | |
| uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 | |
| with: | |
| name: asset-import-chunk-${{ matrix.chunk }} | |
| path: samples/packages/asset-import/**/debug.log | |
| package-test: | |
| needs: | |
| - build | |
| - list-packages | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| tests: ${{fromJson(needs.list-packages.outputs.tests)}} | |
| concurrency: | |
| group: ${{ matrix.tests }} | |
| name: "Packages" | |
| steps: | |
| # - name: Free disk space | |
| # if: matrix.tests == 'asset-import' | |
| # uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Download artifacts | |
| uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 | |
| with: | |
| name: build-artifacts | |
| - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0 | |
| with: | |
| java-version: 21 | |
| distribution: temurin | |
| - uses: gradle/actions/setup-gradle@v5 | |
| with: | |
| cache-read-only: true | |
| gradle-home-cache-cleanup: false | |
| add-job-summary: on-failure | |
| - name: Package tests | |
| env: | |
| ATLAN_BASE_URL: ${{ secrets.ATLAN_BASE_URL }} | |
| ATLAN_API_KEY: ${{ secrets.ATLAN_API_KEY }} | |
| NVD_API_KEY: ${{ secrets.NVD_API_KEY }} | |
| JAVA_TOOL_OPTIONS: "-Djava.io.tmpdir=/home/runner" | |
| run: ./gradlew -PpackageTests :samples:packages:${{ matrix.tests }}:test -x assemble -x testClasses -x buildSrc:jar | |
| - if: success() || failure() | |
| uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 | |
| with: | |
| name: ${{ matrix.tests }} | |
| path: samples/packages/${{ matrix.tests }}/**/debug.log |