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: Cache pnpm dependencies uses: actions/cache@v4 with: path: | ~/.pnpm-store packages/*/node_modules key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm- - name: Build All Packages run: | set -euo pipefail # Add package folders you want to exclude here (space-separated) EXCLUDED_DIRS=("packages/protobufs") for pkg_dir in packages/*/; do pkg_dir=${pkg_dir%/} # Remove trailing slash echo "🔍 Inspecting $pkg_dir..." # Check if directory is excluded if [[ " ${EXCLUDED_DIRS[*]} " == *" $pkg_dir "* ]]; then echo "🚫 Skipping $pkg_dir (excluded)" continue fi # Build only if it has a package.json if [[ -f "$pkg_dir/package.json" ]]; then echo "🔧 Building with pnpm: $pkg_dir" (cd "$pkg_dir" && pnpm install --frozen-lockfile && pnpm run build:npm) else echo "⚠️ Skipping $pkg_dir (no package.json)" fi done