Skip to content

Update CI/CD workflow #80

Update CI/CD workflow

Update CI/CD workflow #80

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches:
- main
pull_request:
branches:
- main
permissions:
issues: write
contents: read
jobs:
linting:
name: Linting
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js with node_modules cache
id: node-with-cache
uses: magnetikonline/action-node-modules-cache@v2
with:
node-version-file: .nvmrc
additional-cache-path: |
~/.cache/Cypress
- name: Install npm packages
if: steps.node-with-cache.outputs.cache-hit != 'true'
run: npm ci
- name: Run ESLint
run: npm run lint
e2e-testing:
name: E2E Testing
runs-on: ubuntu-latest
needs: linting
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js with node_modules cache
id: node-with-cache
uses: magnetikonline/action-node-modules-cache@v2
with:
node-version-file: .nvmrc
additional-cache-path: |
~/.cache/Cypress
- name: Install npm packages
if: steps.node-with-cache.outputs.cache-hit != 'true'
run: npm ci
- name: Build application
run: npm run build
- name: Start server
run: npm run start &
- name: Wait for server to start
run: npx wait-on http://localhost:3000
- name: Run tests
run: npx cypress run --e2e
- name: Generate testing report
run: |
npx mochawesome-merge "cypress/reports/*.json" > report.json
npx marge report.json --reportFilename "e2e_testing_report" --reportTitle "E2E Testing Report" --reportPageTitle "E2E Testing Report"
- name: Upload testing report
uses: actions/upload-artifact@v4
with:
name: e2e_testing_report
path: mochawesome-report
security-testing:
name: Security Testing
runs-on: ubuntu-latest
needs: e2e-testing
services:
app:
image: quiirex/nowted-app:latest
ports:
- 3000:3000
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js with node_modules cache
id: node-with-cache
uses: magnetikonline/action-node-modules-cache@v2
with:
node-version-file: .nvmrc
additional-cache-path: |
~/.cache/Cypress
- name: Install npm packages
if: steps.node-with-cache.outputs.cache-hit != 'true'
run: npm ci
- name: ZAP Full Scan
uses: zaproxy/action-full-scan@v0.10.0
with:
target: 'http://app:3000'
- name: Upload ZAP reports
uses: actions/upload-artifact@v4
with:
name: security-testing-reports
path: security-testing-reports
# performance-testing:
# name: Performance Testing
# runs-on: ubuntu-latest
# needs: security-testing
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Run k6 tests
# run: npm run performance
# - name: Upload k6 performance reports
# uses: actions/upload-artifact@v4
# with:
# name: performance-testing-reports
# path: performance-testing-reports