Skip to content

amend CD workflow for testing #25

amend CD workflow for testing

amend CD workflow for testing #25

Workflow file for this run

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 ]