aios-core
Version:
Synkra AIOS: AI-Orchestrated System for Full Stack Development - Core Framework
173 lines (148 loc) • 4.49 kB
YAML
# GitHub Actions CI Template
# Purpose: Continuous Integration workflow for testing and validation
# Generated by: AIOS-FullStack @github-devops agent
#
# Usage: Copy to .github/workflows/ci.yml and customize
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
NODE_VERSION: '20.x'
# Add other environment variables here
# DATABASE_URL: ${{ secrets.DATABASE_URL }}
jobs:
# ============================================================================
# LINT & TYPE CHECK
# ============================================================================
lint:
name: Lint & Type 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: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run linting
run: npm run lint
- name: Run type check
run: npm run typecheck
continue-on-error: false
# ============================================================================
# UNIT TESTS
# ============================================================================
test:
name: Unit Tests
runs-on: ubuntu-latest
needs: lint
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
env:
CI: true
- name: Upload coverage report
uses: codecov/codecov-action@v4
if: always()
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
# ============================================================================
# BUILD
# ============================================================================
build:
name: Build
runs-on: ubuntu-latest
needs: [lint, test]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build project
run: npm run build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build
path: dist/
retention-days: 7
# ============================================================================
# SECURITY AUDIT
# ============================================================================
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: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run security audit
run: npm audit --audit-level=high
continue-on-error: true
# ============================================================================
# INTEGRATION TESTS (Optional)
# ============================================================================
# integration:
# name: Integration Tests
# runs-on: ubuntu-latest
# needs: build
# services:
# postgres:
# image: postgres:15
# env:
# POSTGRES_PASSWORD: postgres
# POSTGRES_DB: test
# ports:
# - 5432:5432
# options: >-
# --health-cmd pg_isready
# --health-interval 10s
# --health-timeout 5s
# --health-retries 5
# steps:
# - name: Checkout code
# uses: actions/checkout@v4
#
# - name: Setup Node.js
# uses: actions/setup-node@v4
# with:
# node-version: ${{ env.NODE_VERSION }}
# cache: 'npm'
#
# - name: Install dependencies
# run: npm ci
#
# - name: Run integration tests
# run: npm run test:integration
# env:
# DATABASE_URL: postgresql://postgres:postgres@localhost:5432/test