name: CI on: push: branches: [main, develop] pull_request: branches: [main, develop] jobs: install-dependencies: runs-on: ubuntu-latest container: image: oven/bun:alpine steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Dependencies run: bun install --frozen-lockfile - name: Upload node_modules artifact uses: actions/upload-artifact@v3 with: name: node_modules path: node_modules retention-days: 1 type-check: runs-on: ubuntu-latest container: image: oven/bun:alpine needs: install-dependencies steps: - name: Checkout code uses: actions/checkout@v4 - name: Download node_modules artifact uses: actions/download-artifact@v3 with: name: node_modules path: node_modules - name: Run type checking run: bun run check lint: runs-on: ubuntu-latest container: image: oven/bun:alpine needs: install-dependencies steps: - name: Checkout code uses: actions/checkout@v4 - name: Download node_modules artifact uses: actions/download-artifact@v3 with: name: node_modules path: node_modules - name: Run linting run: bun run lint:check format-check: runs-on: ubuntu-latest container: image: oven/bun:alpine needs: install-dependencies steps: - name: Checkout code uses: actions/checkout@v4 - name: Download node_modules artifact uses: actions/download-artifact@v3 with: name: node_modules path: node_modules - name: Check formatting run: bun run format:check build: runs-on: ubuntu-latest container: image: oven/bun:alpine needs: install-dependencies steps: - name: Checkout code uses: actions/checkout@v4 - name: Download node_modules artifact uses: actions/download-artifact@v3 with: name: node_modules path: node_modules - name: Build application run: bun run build - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: build-output path: build/ retention-days: 7