-
Notifications
You must be signed in to change notification settings - Fork 454
117 lines (98 loc) · 5.15 KB
/
sonar.yml
File metadata and controls
117 lines (98 loc) · 5.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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-4xlarge]
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:
skip-turbo-cache: "false"
install-proto: false
accountId: ${{ secrets.AWS_ACCOUNT_ID_PROD }}
roleName: ${{ secrets.AWS_CACHE_ROLE_NAME }}
region: ${{ secrets.AWS_CACHE_REGION }}
turbo-server-token: ${{ secrets.TURBOREPO_SERVER_TOKEN }}
- name: Install dependencies
env:
LANG: en_US.UTF-8
run: |
pnpm i --filter="./libs/**" --no-frozen-lockfile --unsafe-perm
pnpm i --filter="./features/**" --no-frozen-lockfile --unsafe-perm
pnpm i --filter="live-mobile..." --filter="ledger-live" --no-frozen-lockfile --unsafe-perm
pnpm i --filter="ledger-live-desktop..." --filter="ledger-live" --no-frozen-lockfile --unsafe-perm
- name: Build dependencies
run: |
pnpm build:libs --api="http://127.0.0.1:${{ steps.caches.outputs.port }}" --token="${{ secrets.TURBOREPO_SERVER_TOKEN }}" --team="foo"
pnpm build:lld:deps --api="http://127.0.0.1:${{ steps.caches.outputs.port }}" --token="${{ secrets.TURBOREPO_SERVER_TOKEN }}" --team="foo"
pnpm build:llm:deps --api="http://127.0.0.1:${{ steps.caches.outputs.port }}" --token="${{ secrets.TURBOREPO_SERVER_TOKEN }}" --team="foo"
- 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 turbo run coverage --filter="./libs/**" --concurrency=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 turbo run coverage --filter="./features/**" --concurrency=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: Merge coverage files
run: |
cat libs/coverage/lcov.info features/coverage/lcov.info apps/ledger-live-desktop/coverage/lcov.info apps/ledger-live-mobile/coverage/lcov.info > ./lcov.info
cat libs/coverage/sonar-executionTests-report.xml features/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 }}