Refactor CI workflow to remove Deno and add exclusions (#893)
* Refactor CI workflow to remove Deno and add exclusions Removed Deno setup and caching from CI workflow. Added exclusion logic for specific package directories during the build process. * Update excluded directories in CI workflow Added 'packages/transport-deno' to the excluded directories. * Refactor CI workflow for pnpm and build process
This commit is contained in:
+42
-31
@@ -28,41 +28,52 @@ jobs:
|
|||||||
cache: pnpm
|
cache: pnpm
|
||||||
cache-dependency-path: '**/pnpm-lock.yaml'
|
cache-dependency-path: '**/pnpm-lock.yaml'
|
||||||
|
|
||||||
- name: Setup Deno
|
- name: Prewarm & Install (workspace)
|
||||||
uses: denoland/setup-deno@v2
|
run: |
|
||||||
with:
|
set -euo pipefail
|
||||||
deno-version: v2.x
|
pnpm fetch
|
||||||
|
pnpm install --frozen-lockfile --offline
|
||||||
|
|
||||||
- name: Cache Deno dependencies
|
- name: Build All Packages (with exclusions)
|
||||||
uses: actions/cache@v4
|
shell: bash
|
||||||
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: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
for pkg_dir in packages/*/; do
|
# List packages to exclude (full paths under repo root)
|
||||||
pkg_dir=${pkg_dir%/} # Remove trailing slash
|
EXCLUDED_DIRS=("packages/protobufs" "packages/transport-deno")
|
||||||
echo "🔍 Inspecting $pkg_dir..."
|
|
||||||
|
|
||||||
if [[ -f "$pkg_dir/package.json" ]] && [[ "$pkg_dir" != "packages/web" ]]; then
|
is_excluded() {
|
||||||
echo "🔧 Building with pnpm: $pkg_dir"
|
local dir="$1"
|
||||||
(cd "$pkg_dir" && pnpm install --frozen-lockfile && pnpm run build:npm)
|
for ex in "${EXCLUDED_DIRS[@]}"; do
|
||||||
else
|
if [[ "$dir" == "$ex" ]]; then
|
||||||
echo "⚠️ Skipping $pkg_dir (web package or no package.json)"
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
for pkg_dir in packages/*/; do
|
||||||
|
pkg_dir="${pkg_dir%/}" # trim trailing slash
|
||||||
|
|
||||||
|
# Must be a directory with a package.json
|
||||||
|
if [[ ! -f "$pkg_dir/package.json" ]]; then
|
||||||
|
echo "⚠️ Skipping $pkg_dir (no package.json)"
|
||||||
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Allow for exclusions
|
||||||
|
if is_excluded "$pkg_dir"; then
|
||||||
|
echo "🚫 Skipping $pkg_dir (excluded)"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Optionally skip Deno-first packages automatically
|
||||||
|
if [[ -f "$pkg_dir/deno.json" || -f "$pkg_dir/deno.jsonc" ]]; then
|
||||||
|
echo "🦕 Skipping $pkg_dir (deno project)"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "🔧 Building: $pkg_dir"
|
||||||
|
# No per-package install needed; workspace install already done
|
||||||
|
pnpm -C "$pkg_dir" run build:npm
|
||||||
done
|
done
|
||||||
|
|||||||
Reference in New Issue
Block a user