name: CI on: push: branches: [main, develop] pull_request: branches: [main, develop] jobs: install-dependencies: runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v4 - name: Install node uses: actions/setup-node@v6 with: node-version: '22.x' - name: Install bun uses: oven-sh/setup-bun@v2 with: bun-version: 1.3.4 - name: Install dependencies run: bun ci - name: Upload node_modules artifact uses: actions/upload-artifact@v4 with: name: node_modules path: node_modules/ retention-days: 1 build: runs-on: ubuntu-latest needs: install-dependencies steps: - name: Checkout repo uses: actions/checkout@v4 - name: Install bun uses: oven-sh/setup-bun@v2 with: bun-version: 1.3.4 - name: Download node_modules artifact uses: actions/download-artifact@v6 with: name: node_modules path: node_modules - name: Build app run: bun --bun run build - name: Upload build artifacts uses: actions/upload-artifact@v6 with: name: build-output path: build/ retention-days: 7 type-check: runs-on: ubuntu-latest needs: install-dependencies steps: - name: Checkout repo uses: actions/checkout@v4 - name: Install bun uses: oven-sh/setup-bun@v2 with: bun-version: 1.3.4 - name: Download node_modules artifact uses: actions/download-artifact@v6 with: name: node_modules path: node_modules - name: Run type checking run: bun --bun run check lint: runs-on: ubuntu-latest needs: install-dependencies steps: - name: Checkout repo uses: actions/checkout@v6 - name: Install bun uses: oven-sh/setup-bun@v2 with: bun-version: 1.3.4 - name: Download node_modules artifact uses: actions/download-artifact@v6 with: name: node_modules path: node_modules - name: Run linting run: bun --bun run lint:check format-check: runs-on: ubuntu-latest needs: install-dependencies steps: - name: Checkout repo uses: actions/checkout@v4 - name: Install bun uses: oven-sh/setup-bun@v2 with: bun-version: 1.3.4 - name: Download node_modules artifact uses: actions/download-artifact@v6 with: name: node_modules path: node_modules - name: Check formatting run: bun --bun run format:check