Skip to content

Merge pull request #123 from GlobalHive/development #88

Merge pull request #123 from GlobalHive/development

Merge pull request #123 from GlobalHive/development #88

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
test:
name: Test & Build
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [24]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run type checking
run: npm run type-check
- name: Run tests
run: npm run test:run
- name: Run tests with coverage
run: npm run test:coverage
- name: Upload coverage to Codecov
if: matrix.node-version == 24
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
with:
file: ./coverage/lcov.info
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
- name: Build library
run: npm run build-only
- name: Build styles
run: npm run build::sass
- name: Build documentation
run: npm run docs:build
continue-on-error: true
- name: Check for build artifacts
run: |
ls -la dist/
test -f dist/vuejs-tour.js
test -f dist/vuejs-tour.umd.cjs
test -f dist/vuejs-tour.d.ts
test -f dist/style.css
lint:
name: Lint & Format Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run linting
run: npm run lint
- name: Check code formatting
run: |
npm run format
git diff --exit-code -- ':!*.tsbuildinfo' || (echo "Code is not formatted. Run 'npm run format' to fix." && exit 1)
security:
name: Security Audit
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run security audit
run: npm audit --audit-level=high
publish-coverage:
name: Publish Test Coverage
runs-on: ubuntu-latest
needs: [test]
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Generate coverage report
run: npm run test:coverage
- name: Generate coverage badge
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
const fs = require('fs');
const path = 'coverage/coverage-summary.json';
if (fs.existsSync(path)) {
const coverage = JSON.parse(fs.readFileSync(path, 'utf8'));
const pct = coverage.total.lines.pct;
console.log(`Coverage: ${pct}%`);
}
- name: Upload coverage reports
uses: actions/upload-artifact@v4
with:
name: coverage-reports
path: |
coverage/
!coverage/tmp/
retention-days: 30