Skip to content

ci: fix download reports on sonarqube #703

ci: fix download reports on sonarqube

ci: fix download reports on sonarqube #703

Workflow file for this run

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 }}