amend CD workflow for testing #25
This file contains 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: 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=80.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/[email protected] | |
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 ] |