name: Push to Main CI on: push: branches: - main permissions: contents: write packages: write jobs: build-and-package: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: latest - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22 cache: pnpm cache-dependency-path: '**/pnpm-lock.yaml' - name: Setup Deno uses: denoland/setup-deno@v2 with: deno-version: v2.x - name: Cache Deno dependencies uses: actions/cache@v4 with: path: ~/.cache/deno key: ${{ runner.os }}-deno-${{ hashFiles('**/deno.lock', '**/package.json') }} restore-keys: | ${{ runner.os }}-deno- - name: Cache pnpm dependencies uses: actions/cache@v4 with: path: | ~/.pnpm-store packages/web/node_modules key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm- - name: Build All Packages run: | set -euo pipefail for pkg_dir in packages/*/; do pkg_dir=${pkg_dir%/} # Remove trailing slash echo "🔍 Inspecting $pkg_dir..." if [[ -f "$pkg_dir/package.json" ]] && [[ "$pkg_dir" != "packages/web" ]]; then echo "🔧 Building with pnpm: $pkg_dir" (cd "$pkg_dir" && pnpm install --frozen-lockfile && pnpm run build:npm) else echo "⚠️ Skipping $pkg_dir (web package or no package.json)" fi done