-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (104 loc) · 3.26 KB
/
ci.yml
File metadata and controls
132 lines (104 loc) · 3.26 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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: CI
on:
pull_request:
branches:
- main
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
strategy:
matrix:
path: [client, server]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- name: Install dependencies
run: |
cd ${{ matrix.path }}
npm ci
- name: Run linter
run: |
cd ${{ matrix.path }}
npm run lint
prettier:
name: Prettier
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- name: Install dependencies
run: |
npm ci
- name: Run Prettier check
run: |
npm run format:check
test:
name: Test
runs-on: ubuntu-latest
strategy:
matrix:
path: [client, server]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- name: Install dependencies
run: |
cd ${{ matrix.path }}
npm ci
- name: Run tests with coverage
run: |
cd ${{ matrix.path }}
npm test
- name: List files in coverage directory
run: ls ./server
- name: Check Coverage
id: coverage
run: |
COVERAGE_FILE='${{ matrix.path }}/coverage/coverage-summary.json'
COVERAGE_PCT=$(jq '.total.lines.pct' $COVERAGE_FILE)
echo "Coverage Percentage: $COVERAGE_PCT"
THRESHOLD=75.0
if (( $(echo "$COVERAGE_PCT < $THRESHOLD" | bc -l) )); then
echo "Coverage percentage $COVERAGE_PCT is below the threshold of $THRESHOLD"
exit 1
fi
Sonarless-Scan:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Solarless Scan
uses: gitricko/sonarless@v1.2
with:
sonar-metrics-path: './sonar-metrics.json'
- name: Check Sonar Metrics - No Vulnerabilities
run: |
echo "Checking for any vulnerabilities in Sonar Metrics JSON"
VULN=$(cat ./sonar-metrics.json | jq -r '.component.measures[] | select(.metric == "vulnerabilities").value')
echo "# of vulnerabilities = ${VULN}"
[ ${VULN} -eq "0" ]
- name: Check Sonar Metrics - Code Smells
run: |
echo "Checking for code smells in Sonar Metrics JSON"
CODE_SMELLS=$(cat ./sonar-metrics.json | jq -r '.component.measures[] | select(.metric == "code_smells").value')
echo "# of code smells = ${CODE_SMELLS}"
[ ${CODE_SMELLS} -lt "10" ]
- name: Check Sonar Metrics - Duplications
run: |
echo "Checking for duplications in Sonar Metrics JSON"
DUPLICATIONS=$(cat ./sonar-metrics.json | jq -r '.component.measures[] | select(.metric == "duplicated_lines_density").value')
echo "Duplicated lines density = ${DUPLICATIONS}"
[ $(echo "${DUPLICATIONS} < 5.0" | bc) -eq 1 ]