Browse Source

Refactor CI workflow for pnpm and build process

pull/893/head
Dan Ditomaso 8 months ago
committed by GitHub
parent
commit
a77f2dca46
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 59
      .github/workflows/ci.yml

59
.github/workflows/ci.yml

@ -15,7 +15,7 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Setup pnpm - name: Setup pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4
with: with:
@ -28,39 +28,52 @@ jobs:
cache: pnpm cache: pnpm
cache-dependency-path: '**/pnpm-lock.yaml' cache-dependency-path: '**/pnpm-lock.yaml'
- name: Cache pnpm dependencies - name: Prewarm & Install (workspace)
uses: actions/cache@v4 run: |
with: set -euo pipefail
path: | pnpm fetch
~/.pnpm-store pnpm install --frozen-lockfile --offline
packages/*/node_modules
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-
- name: Build All Packages - name: Build All Packages (with exclusions)
shell: bash
run: | run: |
set -euo pipefail set -euo pipefail
# Add package folders you want to exclude here (space-separated) # List packages to exclude (full paths under repo root)
EXCLUDED_DIRS=("packages/protobufs" "packages/transport-deno") EXCLUDED_DIRS=("packages/protobufs" "packages/transport-deno")
is_excluded() {
local dir="$1"
for ex in "${EXCLUDED_DIRS[@]}"; do
if [[ "$dir" == "$ex" ]]; then
return 0
fi
done
return 1
}
for pkg_dir in packages/*/; do for pkg_dir in packages/*/; do
pkg_dir=${pkg_dir%/} # Remove trailing slash pkg_dir="${pkg_dir%/}" # trim trailing slash
echo "🔍 Inspecting $pkg_dir..."
# Check if directory is excluded # Must be a directory with a package.json
if [[ " ${EXCLUDED_DIRS[*]} " == *" $pkg_dir "* ]]; then if [[ ! -f "$pkg_dir/package.json" ]]; then
echo "⚠️ Skipping $pkg_dir (no package.json)"
continue
fi
# Allow for exclusions
if is_excluded "$pkg_dir"; then
echo "🚫 Skipping $pkg_dir (excluded)" echo "🚫 Skipping $pkg_dir (excluded)"
continue continue
fi fi
# Build only if it has a package.json # Optionally skip Deno-first packages automatically
if [[ -f "$pkg_dir/package.json" ]]; then if [[ -f "$pkg_dir/deno.json" || -f "$pkg_dir/deno.jsonc" ]]; then
echo "🔧 Building with pnpm: $pkg_dir" echo "🦕 Skipping $pkg_dir (deno project)"
(cd "$pkg_dir" && pnpm install --frozen-lockfile && pnpm run build:npm) continue
else
echo "⚠️ Skipping $pkg_dir (no package.json)"
fi fi
done
echo "🔧 Building: $pkg_dir"
# No per-package install needed; workspace install already done
pnpm -C "$pkg_dir" run build:npm
done

Loading…
Cancel
Save