name: CI on: push: branches: [ main, develop ] pull_request: branches: [ main, develop ] jobs: contracts: runs-on: ubuntu-latest defaults: run: working-directory: ./contracts steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 - name: Install dependencies run: | forge install - name: Build contracts run: forge build - name: Run tests run: forge test backend: runs-on: ubuntu-latest defaults: run: working-directory: ./backend services: postgres: image: postgres:15-alpine env: POSTGRES_USER: asle POSTGRES_PASSWORD: asle_password POSTGRES_DB: asle_test ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' cache-dependency-path: ./backend/package-lock.json - name: Install dependencies run: npm ci - name: Generate Prisma Client run: npx prisma generate - name: Run migrations run: npx prisma migrate deploy env: DATABASE_URL: postgresql://asle:asle_password@localhost:5432/asle_test?schema=public - name: Run linter run: npm run lint || true - name: Run tests run: npm test || true env: DATABASE_URL: postgresql://asle:asle_password@localhost:5432/asle_test?schema=public frontend: runs-on: ubuntu-latest defaults: run: working-directory: ./frontend steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' cache-dependency-path: ./frontend/package-lock.json - name: Install dependencies run: npm ci - name: Run linter run: npm run lint || true - name: Type check run: npm run type-check || true - name: Build run: npm run build security: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Run security audit run: | cd contracts && npm audit --production || true cd ../backend && npm audit --production || true cd ../frontend && npm audit --production || true