|  | 
| 4 | 4 |     workflows: [ "Tests" ] | 
| 5 | 5 |     types: | 
| 6 | 6 |       - completed | 
|  | 7 | +concurrency: | 
|  | 8 | +  group: ${{ github.workflow }}-${{ github.ref }} | 
|  | 9 | +  cancel-in-progress: true | 
| 7 | 10 | jobs: | 
| 8 |  | -  sonarqube: | 
| 9 |  | -    name: SonarQube | 
| 10 |  | -    runs-on: ubuntu-latest | 
| 11 |  | -    if: github.event.workflow_run.conclusion == 'success' | 
| 12 |  | -    steps: | 
| 13 |  | -      - uses: actions/checkout@v2 | 
| 14 |  | -        with: | 
| 15 |  | -          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis | 
| 16 |  | - | 
| 17 |  | -      # There's a 'download artifact' action, but it hasn't been updated for the workflow_run action | 
| 18 |  | -      # (https://github.com/actions/download-artifact/issues/60) so instead we get this mess: | 
| 19 |  | -      - name: Download Coverage Report | 
| 20 |  | - | 
| 21 |  | -        with: | 
| 22 |  | -          script: | | 
| 23 |  | -            const artifacts = await github.actions.listWorkflowRunArtifacts({ | 
| 24 |  | -                owner: context.repo.owner, | 
| 25 |  | -                repo: context.repo.repo, | 
| 26 |  | -                run_id: ${{ github.event.workflow_run.id }}, | 
| 27 |  | -            }); | 
| 28 |  | -            const matchArtifact = artifacts.data.artifacts.filter((artifact) => { | 
| 29 |  | -                return artifact.name == "coverage" | 
| 30 |  | -            })[0]; | 
| 31 |  | -            const download = await github.actions.downloadArtifact({ | 
| 32 |  | -                owner: context.repo.owner, | 
| 33 |  | -                repo: context.repo.repo, | 
| 34 |  | -                artifact_id: matchArtifact.id, | 
| 35 |  | -                archive_format: 'zip', | 
| 36 |  | -            }); | 
| 37 |  | -            const fs = require('fs'); | 
| 38 |  | -            fs.writeFileSync('${{github.workspace}}/coverage.zip', Buffer.from(download.data)); | 
|  | 11 | +  prdetails: | 
|  | 12 | +    name: ℹ️ PR Details | 
|  | 13 | +    if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request' | 
|  | 14 | +    uses: matrix-org/matrix-js-sdk/.github/workflows/pr_details.yml@develop | 
|  | 15 | +    with: | 
|  | 16 | +      owner: ${{ github.event.workflow_run.head_repository.owner.login }} | 
|  | 17 | +      branch: ${{ github.event.workflow_run.head_branch }} | 
| 39 | 18 | 
 | 
| 40 |  | -      - name: Extract Coverage Report | 
| 41 |  | -        run: unzip -d coverage coverage.zip && rm coverage.zip | 
| 42 |  | - | 
| 43 |  | -      - name: SonarCloud Scan | 
| 44 |  | -        uses: SonarSource/sonarcloud-github-action@master | 
| 45 |  | -        env: | 
| 46 |  | -          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  # Needed to get PR information, if any | 
| 47 |  | -          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | 
|  | 19 | +  sonarqube: | 
|  | 20 | +    name: 🩻 SonarQube | 
|  | 21 | +    needs: prdetails | 
|  | 22 | +    # Only wait for prdetails if it isn't skipped | 
|  | 23 | +    if: | | 
|  | 24 | +      always() && | 
|  | 25 | +      (needs.prdetails.result == 'success' || needs.prdetails.result == 'skipped') && | 
|  | 26 | +      github.event.workflow_run.conclusion == 'success' | 
|  | 27 | +    uses: matrix-org/matrix-js-sdk/.github/workflows/sonarcloud.yml@develop | 
|  | 28 | +    with: | 
|  | 29 | +      repo: ${{ github.event.workflow_run.head_repository.full_name }} | 
|  | 30 | +      pr_id: ${{ needs.prdetails.outputs.pr_id }} | 
|  | 31 | +      head_branch: ${{ needs.prdetails.outputs.head_branch || github.event.workflow_run.head_branch }} | 
|  | 32 | +      base_branch: ${{ needs.prdetails.outputs.base_branch }} | 
|  | 33 | +      revision: ${{ github.event.workflow_run.head_sha }} | 
|  | 34 | +      coverage_workflow_name: tests.yml | 
|  | 35 | +      coverage_run_id: ${{ github.event.workflow_run.id }} | 
|  | 36 | +    secrets: | 
|  | 37 | +      SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | 
0 commit comments