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: Debug workspace and files run: | echo "Current directory: $(pwd)" echo "Files in current directory:" ls -la echo "Checking for bun.lock:" find . -name "bun.lock" -type f echo "Hash of bun.lock:" find . -name "bun.lock" -exec sha256sum {} \; - name: Cache node_modules id: cache uses: actions/cache@v4 with: path: node_modules key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }} restore-keys: | ${{ runner.os }}-bun- - name: Debug cache result run: | echo "Cache hit: ${{ steps.cache.outputs.cache-hit }}" echo "Cache key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}" echo "Files after cache restore:" ls -la - name: Install Dependencies run: bun i --frozen-lockfile - name: Debug after install run: | echo "Files after bun install:" ls -la echo "node_modules exists:" test -d node_modules && echo "YES" || echo "NO" type-check: runs-on: ubuntu-latest container: image: oven/bun:alpine needs: install-dependencies steps: - name: Checkout code uses: actions/checkout@v4 - name: Debug workspace run: | echo "Current directory: $(pwd)" echo "Files in current directory:" ls -la echo "Cache key would be: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}" - name: Cache node_modules id: cache uses: actions/cache@v4 with: path: node_modules key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }} restore-keys: | ${{ runner.os }}-bun- - name: Debug cache result run: | echo "Cache hit: ${{ steps.cache.outputs.cache-hit }}" echo "Files after cache restore:" ls -la - name: Install dependencies run: bun install --frozen-lockfile - 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: Cache node_modules id: cache uses: actions/cache@v4 with: path: node_modules key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }} restore-keys: | ${{ runner.os }}-bun- - name: Install dependencies run: bun install --frozen-lockfile - 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: Cache node_modules id: cache uses: actions/cache@v4 with: path: node_modules key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }} restore-keys: | ${{ runner.os }}-bun- - name: Install dependencies run: bun install --frozen-lockfile - 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: Cache node_modules id: cache uses: actions/cache@v4 with: path: node_modules key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }} restore-keys: | ${{ runner.os }}-bun- - name: Install dependencies run: bun install --frozen-lockfile - 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