1
+ ---
1
2
name : Coverage
2
3
3
- on : [pull_request, push]
4
+ on : # yamllint disable-line rule:truthy
5
+ push :
6
+ branches : ["main"]
7
+ pull_request :
8
+ # The branches below must be a subset of the branches above
9
+ branches : ["main"]
10
+ workflow_dispatch :
4
11
5
12
jobs :
6
13
coverage :
@@ -13,11 +20,70 @@ jobs:
13
20
run : rustup update stable
14
21
- name : Install cargo-llvm-cov
15
22
uses : taiki-e/install-action@cargo-llvm-cov
23
+ - name : Install Clippy
24
+ run : rustup component add clippy
25
+ - name : Install cargo-sonar and run Clippy
26
+ run : |
27
+ cargo install cargo-sonar
28
+ cargo clippy --message-format json > my-clippy-report.json
29
+ cargo sonar --clippy --clippy-path my-clippy-report.json
16
30
- name : Generate code coverage
17
- run : cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info
18
- - name : Upload coverage to Codecov
19
- uses : codecov/codecov-action@v3
31
+ run : >
32
+ cargo llvm-cov
33
+ --all-features
34
+ --workspace
35
+ --lcov
36
+ --output-path lcov.info
37
+ - name : Upload coverage artifact
38
+ uses : actions/upload-artifact@v4
20
39
with :
21
- token : ${{ secrets.CODECOV_TOKEN }} # not required for public repos
22
- files : lcov.info
23
- fail_ci_if_error : true
40
+ name : coverage-report
41
+ path : |
42
+ lcov.info
43
+ sonar-issues.json
44
+
45
+ codecov :
46
+ name : Upload to Codecov
47
+ runs-on : ubuntu-24.04
48
+ needs : coverage
49
+
50
+ steps :
51
+ - name : Checkout repository
52
+ uses : actions/checkout@v5
53
+ with :
54
+ fetch-depth : 0
55
+ - name : Download coverage artifact
56
+ uses : actions/download-artifact@v5
57
+ with :
58
+ name : coverage-report
59
+
60
+ - name : Upload coverage reports to Codecov with GitHub Action
61
+ uses : codecov/codecov-action@v5
62
+ with :
63
+ files : coverage.out
64
+ token : ${{ secrets.CODECOV_TOKEN }} # required
65
+ verbose : true # optional (default = false)
66
+
67
+ sonarqube :
68
+ name : SonarQube
69
+ runs-on : ubuntu-latest
70
+ needs : coverage
71
+
72
+ steps :
73
+ - name : Checkout repository
74
+ uses : actions/checkout@v5
75
+ with :
76
+ fetch-depth : 0
77
+ - name : Download coverage artifact
78
+ uses : actions/download-artifact@v5
79
+ with :
80
+ name : coverage-report
81
+ - name : SonarCloud Scan
82
+ uses : SonarSource/sonarqube-scan-action@master
83
+ env :
84
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
85
+ SONAR_TOKEN : ${{ secrets.SONAR_TOKEN }}
86
+ with :
87
+ args : >
88
+ -Dsonar.externalIssuesReportPaths=sonar-issues.json
89
+ -Dcommunity.rust.lcov.reportPaths=lcov.info
0 commit comments