feat: add complete CI pipeline with Gitea Actions runner configuration

This commit is contained in:
adilallo
2025-08-29 08:08:30 -06:00
parent c88e69de14
commit 787c6cfe6e
3 changed files with 282 additions and 0 deletions
+239
View File
@@ -0,0 +1,239 @@
name: CI Pipeline
run-name: ${{ gitea.actor }} triggered CI pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
jobs:
# Unit and Integration Tests
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20]
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 unit and integration tests
run: npm test
- name: Upload coverage reports
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage/lcov.info
flags: unittests
name: codecov-umbrella
# E2E Tests
e2e:
runs-on: ubuntu-latest
strategy:
matrix:
browser: [chromium, firefox, webkit]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Install Playwright browsers
run: npx playwright install --with-deps ${{ matrix.browser }}
- name: Build application
run: npm run build
- name: Start application
run: npm run preview &
env:
CI: true
- name: Wait for application to be ready
run: npx wait-on http://localhost:3000
- name: Run E2E tests
run: npx playwright test --project=${{ matrix.browser }}
env:
CI: true
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-results-${{ matrix.browser }}
path: |
test-results/
playwright-report/
retention-days: 30
# Visual Regression Tests
visual-regression:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Install Playwright browsers
run: npx playwright install --with-deps
- name: Build application
run: npm run build
- name: Start application
run: npm run preview &
env:
CI: true
- name: Wait for application to be ready
run: npx wait-on http://localhost:3000
- name: Run visual regression tests
run: npx playwright test tests/e2e/visual-regression.spec.ts
env:
CI: true
- name: Upload visual regression results
uses: actions/upload-artifact@v4
if: always()
with:
name: visual-regression-results
path: |
test-results/
tests/e2e/visual-regression.spec.ts-snapshots/
retention-days: 30
# Performance Tests
performance:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Build application
run: npm run build
- name: Start application
run: npm run preview &
env:
CI: true
- name: Wait for application to be ready
run: npx wait-on http://localhost:3000
- name: Run Lighthouse CI
run: npm run lhci
env:
CI: true
# Storybook Tests
storybook:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Build Storybook
run: npm run build-storybook
- name: Run Storybook tests
run: npm run test:sb
env:
CI: true
# Lint and Format
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Run ESLint
run: npm run lint
- name: Check formatting
run: npx prettier --check "**/*.{js,jsx,ts,tsx,json,css,md}"
# Build Verification
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Build application
run: npm run build
- name: Build Storybook
run: npm run build-storybook
+33
View File
@@ -0,0 +1,33 @@
log:
level: info
runner:
file: .runner
capacity: 2
timeout: 3h
insecure: false
fetch_timeout: 5s
fetch_interval: 2s
labels:
- "ubuntu-latest:docker://mcr.microsoft.com/playwright:v1.54.2-jammy"
- "macos-latest:host"
- "self-hosted:host"
cache:
enabled: true
dir: ""
host: ""
port: 0
external_server: ""
container:
network: ""
privileged: false
options:
workdir_parent:
valid_volumes: []
docker_host: ""
force_pull: false
host:
workdir_parent: ""
+10
View File
@@ -0,0 +1,10 @@
log:
level: info
runner:
capacity: 2
runners:
- name: community-rule-runner
labels:
- "ubuntu-latest:docker://mcr.microsoft.com/playwright:v1.54.2-jammy"