Skip to content

[All Platforms] - SonarQube Scan - Scheduled #627

[All Platforms] - SonarQube Scan - Scheduled

[All Platforms] - SonarQube Scan - Scheduled #627

Workflow file for this run

name: "[All Platforms] - SonarQube Scan - Scheduled"

Check warning on line 1 in .github/workflows/sonar.yml

View workflow run for this annotation

GitHub Actions / [All Platforms] - SonarQube Scan - Scheduled

Workflow execution policy warning (evaluate mode)

Actor is not allowed to trigger Actions workflows.
on:
schedule:
- cron: "0 2 * * 1-5" # every working day at 2am we will do a daily scan on develop
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
permissions:
id-token: write
contents: read
pull-requests: write
jobs:
scan:
name: Scan LLM && LLD & Libs
env:
NODE_OPTIONS: "--max-old-space-size=7168"
runs-on: [ledger-live-linux-16CPU-64RAM]
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0
- name: Setup git user
uses: LedgerHQ/ledger-live/tools/actions/composites/setup-git-user@develop
- name: Setup the caches
uses: LedgerHQ/ledger-live/tools/actions/composites/setup-caches@develop
id: caches
with:
use-mise: true
gh-token: ${{ secrets.GITHUB_TOKEN }}
cache-develop-role-arn: ${{ secrets.AWS_CACHE_OIDC_ROLE_ARN_DEVELOP }}
cache-branch-role-arn: ${{ secrets.AWS_CACHE_OIDC_ROLE_ARN_BRANCH }}
nx-key: ${{ secrets.NX_KEY }}
accountId: ${{ secrets.AWS_ACCOUNT_ID_PROD }}
roleName: ${{ secrets.AWS_CACHE_ROLE_NAME }}
region: ${{ secrets.AWS_CACHE_REGION }}
- name: Install dependencies
env:
LANG: en_US.UTF-8
run: |
pnpm i --filter="./libs/**" --filter="./features/**" --filter="./shared/**" --filter="./domain/**" --filter="./devtools/**" --filter="live-mobile..." --filter="ledger-live-desktop..." --no-frozen-lockfile --unsafe-perm
- name: Build dependencies
run: |
pnpm exec nx run-many -t build --projects=tag:scope:libs
pnpm exec nx run ledger-live-desktop:build
pnpm exec nx run live-mobile:build
- name: Generate Unit test coverage for LLD & LLM
run: |
pnpm desktop test:jest:coverage
pnpm mobile test:jest:coverage
- name: Generate Unit test coverage for libs
run: |
mkdir -p libs/coverage
touch libs/coverage/lcov.info
touch libs/coverage/sonar-executionTests-report.xml
pnpm exec nx run-many -t coverage --projects=tag:scope:libs --parallel=4 -- --runInBand=1
for package_json in $(find ./libs -name "package.json"); do
lib=$(dirname "$package_json")
echo "Processing library at path: $lib"
if [ -f "$package_json" ] && jq -e '.scripts.coverage' "$package_json"; then
if [ -f "$lib/coverage/lcov.info" ] && [ -f "$lib/coverage/sonar-executionTests-report.xml" ]; then
echo "Appending coverage files for $lib"
cat "$lib/coverage/lcov.info" >> libs/coverage/lcov.info
cat "$lib/coverage/sonar-executionTests-report.xml" >> libs/coverage/sonar-executionTests-report.xml
fi
elif [ -f "$package_json" ] && ! jq -e '.scripts.coverage' "$package_json" && jq -e '.scripts.test' "$package_json"; then
echo "Coverage script not defined for $lib"
else
echo "No coverage or test script found for $lib, skipping."
fi
done
- name: Generate Unit test coverage for features
run: |
mkdir -p features/coverage
touch features/coverage/lcov.info
touch features/coverage/sonar-executionTests-report.xml
pnpm exec nx run-many -t coverage --projects=tag:scope:features --parallel=4 -- --runInBand=1
for package_json in $(find ./features -name "package.json" -not -path "*/node_modules/*"); do
pkg=$(dirname "$package_json")
echo "Processing feature at path: $pkg"
if [ -f "$package_json" ] && jq -e '.scripts.coverage' "$package_json" > /dev/null 2>&1; then
if [ -f "$pkg/coverage/lcov.info" ] && [ -f "$pkg/coverage/sonar-executionTests-report.xml" ]; then
echo "Appending coverage files for $pkg"
cat "$pkg/coverage/lcov.info" >> features/coverage/lcov.info
cat "$pkg/coverage/sonar-executionTests-report.xml" >> features/coverage/sonar-executionTests-report.xml
fi
else
echo "No coverage script found for $pkg, skipping."
fi
done
- name: Generate Unit test coverage for shared
run: |
mkdir -p shared/coverage
touch shared/coverage/lcov.info
touch shared/coverage/sonar-executionTests-report.xml
pnpm exec nx run-many -t coverage --projects=tag:scope:shared --parallel=4 -- --runInBand=1
for package_json in $(find ./shared -name "package.json" -not -path "*/node_modules/*" -not -path "*/coverage/*"); do
pkg=$(dirname "$package_json")
echo "Processing package at path: $pkg"
if [ -f "$package_json" ] && jq -e '.scripts.coverage' "$package_json" > /dev/null 2>&1; then
if [ -f "$pkg/coverage/lcov.info" ] && [ -f "$pkg/coverage/sonar-executionTests-report.xml" ]; then
echo "Appending coverage files for $pkg"
cat "$pkg/coverage/lcov.info" >> shared/coverage/lcov.info
cat "$pkg/coverage/sonar-executionTests-report.xml" >> shared/coverage/sonar-executionTests-report.xml
fi
else
echo "No coverage script found for $pkg, skipping."
fi
done
- name: Generate Unit test coverage for domain
run: |
mkdir -p domain/coverage
touch domain/coverage/lcov.info
touch domain/coverage/sonar-executionTests-report.xml
pnpm exec nx run-many -t coverage --projects=tag:scope:domain --parallel=4 -- --runInBand=1
for package_json in $(find ./domain -name "package.json" -not -path "*/node_modules/*" -not -path "*/coverage/*"); do
pkg=$(dirname "$package_json")
echo "Processing package at path: $pkg"
if [ -f "$package_json" ] && jq -e '.scripts.coverage' "$package_json" > /dev/null 2>&1; then
if [ -f "$pkg/coverage/lcov.info" ] && [ -f "$pkg/coverage/sonar-executionTests-report.xml" ]; then
echo "Appending coverage files for $pkg"
cat "$pkg/coverage/lcov.info" >> domain/coverage/lcov.info
cat "$pkg/coverage/sonar-executionTests-report.xml" >> domain/coverage/sonar-executionTests-report.xml
fi
else
echo "No coverage script found for $pkg, skipping."
fi
done
- name: Generate Unit test coverage for devtools
run: |
mkdir -p devtools/coverage
touch devtools/coverage/lcov.info
touch devtools/coverage/sonar-executionTests-report.xml
pnpm exec nx run-many -t coverage --projects=tag:scope:devtools --parallel=4 -- --runInBand=1
for package_json in $(find ./devtools -name "package.json" -not -path "*/node_modules/*" -not -path "*/coverage/*"); do
pkg=$(dirname "$package_json")
echo "Processing package at path: $pkg"
if [ -f "$package_json" ] && jq -e '.scripts.coverage' "$package_json" > /dev/null 2>&1; then
if [ -f "$pkg/coverage/lcov.info" ] && [ -f "$pkg/coverage/sonar-executionTests-report.xml" ]; then
echo "Appending coverage files for $pkg"
cat "$pkg/coverage/lcov.info" >> devtools/coverage/lcov.info
cat "$pkg/coverage/sonar-executionTests-report.xml" >> devtools/coverage/sonar-executionTests-report.xml
fi
else
echo "No coverage script found for $pkg, skipping."
fi
done
- name: Generate Unit test coverage for wallet-cli
run: |
pnpm i --filter="@ledgerhq/wallet-cli..." --no-frozen-lockfile --unsafe-perm
pnpm exec nx run @ledgerhq/wallet-cli:build
mkdir -p apps/wallet-cli/coverage
touch apps/wallet-cli/coverage/lcov.info
pnpm --filter="@ledgerhq/wallet-cli" coverage
- name: Merge coverage files
run: |
cat libs/coverage/lcov.info features/coverage/lcov.info shared/coverage/lcov.info domain/coverage/lcov.info devtools/coverage/lcov.info apps/ledger-live-desktop/coverage/lcov.info apps/ledger-live-mobile/coverage/lcov.info apps/wallet-cli/coverage/lcov.info > ./lcov.info
cat libs/coverage/sonar-executionTests-report.xml features/coverage/sonar-executionTests-report.xml shared/coverage/sonar-executionTests-report.xml domain/coverage/sonar-executionTests-report.xml devtools/coverage/sonar-executionTests-report.xml apps/ledger-live-desktop/coverage/sonar-executionTests-report.xml apps/ledger-live-mobile/coverage/sonar-executionTests-report.xml > ./sonar-executionTests-report.xml
- name: Sonarqube Scan
uses: SonarSource/sonarqube-scan-action@fd88b7d7ccbaefd23d8f36f73b59db7a3d246602 # v6
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}