Redistributed tests #983
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
| # GitHub Actions workflow for running static analysis and unit tests | |
| name: AnalyseStatiqueEtTestsUnitaires | |
| on: [push, pull_request, workflow_dispatch] | |
| jobs: | |
| ValidateGradleWrapper: | |
| strategy: | |
| fail-fast: false | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Validate Gradle wrapper | |
| uses: gradle/actions/wrapper-validation@v3 | |
| StaticAnalysis: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| jdk: [17] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| id-token: write | |
| contents: read | |
| checks: write | |
| pull-requests: write | |
| issues: write | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up JDK | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: ${{ matrix.jdk }} | |
| distribution: 'temurin' | |
| cache: 'gradle' | |
| - shell: bash | |
| run: | | |
| git remote set-head origin --auto | |
| git remote add upstream https://github.com/linkedin/venice | |
| git fetch upstream | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| with: | |
| add-job-summary: never | |
| - name: Run Static Analysis | |
| run: ./gradlew --continue --no-daemon clean check --parallel -Pspotallbugs -x test -x integrationTest -x jacocoTestCoverageVerification -Pspotbugs.reports.all=true | |
| - name: Annotate PR with SpotBugs results | |
| if: failure() | |
| uses: jwgmeligmeyling/spotbugs-github-action@master | |
| with: | |
| path: | | |
| **/build/reports/spotbugs/main.xml | |
| **/build/reports/spotbugs/test.xml | |
| - name: Package Build Artifacts | |
| if: success() || failure() | |
| shell: bash | |
| run: | | |
| mkdir ${{ github.job }}-artifacts | |
| find . -path "**/build/reports/*" -or -path "**/build/test-results/*" > artifacts.list | |
| rsync -R --files-from=artifacts.list . ${{ github.job }}-artifacts | |
| tar -zcvf ${{ github.job }}-jdk${{ matrix.jdk }}-logs.tar.gz ${{ github.job }}-artifacts | |
| - name: Upload Build Artifacts | |
| if: success() || failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ github.job }} | |
| path: ${{ github.job }}-jdk${{ matrix.jdk }}-logs.tar.gz | |
| retention-days: 30 | |
| Clients: | |
| uses: ./.github/workflows/UnitTests-core.yml | |
| with: | |
| artifact_suffix: clients | |
| arg: | |
| # Cannot use :clients:recursiveDiffCoverage because that would include DVC, and we want this one to run in server... | |
| :clients:venice-admin-tool:diffCoverage | |
| :clients:venice-producer:diffCoverage | |
| :clients:venice-client:diffCoverage | |
| :clients:venice-push-job:diffCoverage | |
| :clients:venice-thin-client:diffCoverage | |
| --continue | |
| Integrations: | |
| uses: ./.github/workflows/UnitTests-core.yml | |
| with: | |
| artifact_suffix: integrations | |
| arg: | |
| :integrations:recursiveDiffCoverage | |
| --continue | |
| Internal: | |
| uses: ./.github/workflows/UnitTests-core.yml | |
| with: | |
| artifact_suffix: internal | |
| arg: | |
| # Cannot use :internal:recursiveDiffCoverage because that would include the avro compat test, and we want this one to run in the Compatibility group (TODO: move it out of internal?)... | |
| :internal:venice-client-common:diffCoverage | |
| :internal:venice-common:diffCoverage | |
| :internal:venice-jdk-compatibility-test:diffCoverage | |
| :internal:venice-test-common:diffCoverage | |
| --continue | |
| Controller: | |
| uses: ./.github/workflows/UnitTests-core.yml | |
| with: | |
| artifact_suffix: controller | |
| arg: | |
| :services:venice-controller:diffCoverage | |
| --continue | |
| Server: | |
| uses: ./.github/workflows/UnitTests-core.yml | |
| with: | |
| artifact_suffix: server | |
| arg: | |
| :clients:da-vinci-client:diffCoverage | |
| :services:venice-server:diffCoverage | |
| --continue | |
| Router: | |
| uses: ./.github/workflows/UnitTests-core.yml | |
| with: | |
| artifact_suffix: router | |
| arg: | |
| :services:venice-router:diffCoverage | |
| alpiniUnitTest | |
| --continue | |
| # This workflow gets skipped if all upstream jobs succeeded, but it runs (and fails) if any upstream failed. | |
| # This is what we want since GitHub required actions do not block merging when skipped, but can block it when failed. | |
| StaticAnalysisAndUnitTestsFailureAlert: | |
| strategy: | |
| fail-fast: false | |
| runs-on: ubuntu-latest | |
| needs: [ValidateGradleWrapper, StaticAnalysis, Clients, Integrations, Internal, Controller, Server, Router] | |
| timeout-minutes: 20 | |
| if: ${{ cancelled() || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'failure') }} | |
| steps: | |
| - name: NoGood | |
| shell: bash | |
| run: | | |
| echo "Some workflows have failed!" | |
| exit 1 |