ci: fix download reports on sonarqube #703
This file contains 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
name: PRs | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened] | |
env: | |
PR_NUMBER: ${{ github.event.pull_request.number }} | |
jobs: | |
pr-test: | |
uses: ./.github/workflows/basic-test.yml | |
pr-e2e-test: | |
uses: ./.github/workflows/e2e-test.yml | |
check-commit-lint: | |
name: Check commit message follows guidelines | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/setup | |
- name: Execute commitlint | |
run: npx commitlint --from="origin/$BASE_REF" | |
env: | |
BASE_REF: ${{ github.base_ref }} | |
check-file-format: | |
name: Check files changes follow guidelines | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/setup | |
- name: Check if Prettier was run | |
run: npx pretty-quick --check | |
backwards-compatibility-test: | |
name: Backwards compatibility test | |
needs: [pr-test] | |
uses: ./.github/workflows/backwards-compatibility-test.yml | |
# Test sonarcloud analysis | |
pr-analysis: | |
name: SonarCloud Pr Analysis | |
runs-on: ubuntu-latest | |
needs: pr-test | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis | |
# Download reports | |
- name: 'Download reports' | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
async function downloadArtifact(artifactName) { | |
console.log(`Looking for artifact: ${artifactName}`); | |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
run_id: context.payload.workflow_run.id, | |
}); | |
console.log('Available artifacts:', allArtifacts.data.artifacts.map(a => a.name)); | |
let matchArtifact = allArtifacts.data.artifacts.find((artifact) => { | |
return artifact.name === artifactName; | |
}); | |
if (!matchArtifact) { | |
throw new Error(`Artifact "${artifactName}" not found!`); | |
} | |
let download = await github.rest.actions.downloadArtifact({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
artifact_id: matchArtifact.id, | |
archive_format: 'zip', | |
}); | |
let fs = require('fs'); | |
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/${artifactName}.zip`, Buffer.from(download.data)); | |
return artifactName; | |
} | |
// Download both artifacts | |
await Promise.all([ | |
downloadArtifact('ngx-deploy-npm-coverage-report'), | |
downloadArtifact('lint-report') | |
]); | |
- name: 'Extract reports' | |
run: | | |
# Extract coverage report | |
mkdir -p coverage/packages/ngx-deploy-npm | |
unzip ngx-deploy-npm-coverage-report.zip -d coverage/packages/ngx-deploy-npm | |
# Extract lint report | |
mkdir -p reports | |
unzip lint-report.zip -d reports | |
- name: 'Verify reports' | |
run: | | |
pwd | |
echo 'Lint report' | |
ls -la ./coverage/packages/ngx-deploy-npm/lcov.info | |
echo 'Coverage report' | |
ls -la ./reports/ngx-deploy-npm/lint-report.info | |
- name: SonarCloud Scan | |
uses: SonarSource/[email protected] | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | |
SONAR_TOKEN: ${{ secrets.SONARQUBE_SCANNER }} | |
with: | |
args: > | |
-Dsonar.pullrequest.key=${{ github.env.PR_NUMBER }} |