[All Platforms] - SonarQube Scan - Scheduled #627
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
| name: "[All Platforms] - SonarQube Scan - Scheduled" | ||
| 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 }} | ||