fix(hero): Remove SVG animate tags causing JSX parsing errors #17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| branches: [main, develop] | |
| push: | |
| branches: [main, develop] | |
| # Cancel in-progress runs for same PR/branch | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Run ESLint | |
| run: npm run lint | |
| - name: Run Prettier check | |
| run: npx prettier --check "**/*.{ts,tsx,js,jsx,json,md}" | |
| type-check: | |
| name: Type Check | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Run TypeScript compiler | |
| run: npm run type-check | |
| security: | |
| name: Security Audit | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| cache: 'npm' | |
| - name: Run npm audit | |
| run: npm audit --audit-level=high | |
| continue-on-error: true | |
| - name: Check for known vulnerabilities | |
| run: npm audit --production --audit-level=critical | |
| build: | |
| name: Build | |
| runs-on: ubuntu-latest | |
| needs: [lint, type-check] | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build all packages | |
| run: npm run build | |
| env: | |
| # Provide dummy env vars for build | |
| NEXTAUTH_SECRET: build-secret | |
| NEXTAUTH_URL: http://localhost:3000 | |
| - name: Check build artifacts | |
| run: | | |
| if [ -d "apps/web/.next" ]; then | |
| echo "✅ Web app built successfully" | |
| fi | |
| if [ -d "apps/api/dist" ] || [ -f "apps/api/build/index.js" ]; then | |
| echo "✅ API built successfully" | |
| fi | |
| test: | |
| name: Test | |
| runs-on: ubuntu-latest | |
| needs: [lint, type-check] | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| cache: 'npm' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Run tests | |
| run: npm test || echo "No tests configured yet" | |
| env: | |
| NODE_ENV: test | |
| docker-build: | |
| name: Docker Build Test | |
| runs-on: ubuntu-latest | |
| needs: [build] | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Build Docker images | |
| run: | | |
| docker-compose -f docker-compose.dev.yml build --parallel | |
| env: | |
| DOCKER_BUILDKIT: 1 | |
| - name: Test Docker Compose startup | |
| run: | | |
| docker-compose -f docker-compose.dev.yml up -d postgres redis | |
| sleep 10 | |
| docker-compose -f docker-compose.dev.yml ps | |
| docker-compose -f docker-compose.dev.yml down -v | |
| all-checks-passed: | |
| name: All Checks Passed | |
| runs-on: ubuntu-latest | |
| needs: [lint, type-check, security, build, test, docker-build] | |
| if: always() | |
| steps: | |
| - name: Check all job statuses | |
| run: | | |
| if [[ "${{ needs.lint.result }}" != "success" ]]; then | |
| echo "❌ Lint failed" | |
| exit 1 | |
| fi | |
| if [[ "${{ needs.type-check.result }}" != "success" ]]; then | |
| echo "❌ Type check failed" | |
| exit 1 | |
| fi | |
| if [[ "${{ needs.build.result }}" != "success" ]]; then | |
| echo "❌ Build failed" | |
| exit 1 | |
| fi | |
| if [[ "${{ needs.test.result }}" != "success" ]]; then | |
| echo "❌ Tests failed" | |
| exit 1 | |
| fi | |
| if [[ "${{ needs.docker-build.result }}" != "success" ]]; then | |
| echo "❌ Docker build failed" | |
| exit 1 | |
| fi | |
| echo "✅ All checks passed!" |