mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 13:54:57 +00:00
E2E fixes: - Exclude smoke/debug/screenshot specs from CI (require full Docker stack) - Remove smoke stack start/stop from Gate 2.2 (not needed for app tests) - Fix global.setup.ts to respect PLAYWRIGHT_BASE_URL instead of hardcoding localhost:3000, and make setup endpoint failure non-fatal Lint fixes: - Remove unnecessary boolean comparisons (=== true, !== true) in multi-tenant-context.ts flagged by @typescript-eslint/no-unnecessary-condition Action upgrades (Node.js 20 → 24 readiness before June 2026 deadline): - actions/checkout v4 → v6 - actions/upload-artifact v4 → v6 - actions/download-artifact v4 → v6 - actions/cache v4 → v6 - actions/setup-node v4 → v5 - docker/setup-qemu-action v3 → v4 - docker/setup-buildx-action v3 → v4 - docker/login-action v3 → v4 - actions/attest-build-provenance v2 → v4 - aquasecurity/trivy-action 0.28.0 → 0.35.0 - github/codeql-action/* v3 → v4 https://claude.ai/code/session_018rmhuicK7L7jV2YBJDXiQz
92 lines
2.9 KiB
YAML
92 lines
2.9 KiB
YAML
name: 'Setup npm with local registry'
|
|
description: 'Starts Verdaccio, publishes patched packages, then runs npm install'
|
|
|
|
inputs:
|
|
node-version:
|
|
description: 'Node.js version'
|
|
required: false
|
|
default: '20'
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v5
|
|
with:
|
|
node-version: ${{ inputs.node-version }}
|
|
|
|
- name: Start Verdaccio and publish patched packages
|
|
shell: bash
|
|
run: |
|
|
# Install and start Verdaccio (lightweight npm registry, ~2s startup)
|
|
npm install -g verdaccio@6 --silent
|
|
|
|
mkdir -p /tmp/verdaccio-storage
|
|
cat > /tmp/verdaccio.yaml << 'VERDACCIO_EOF'
|
|
storage: /tmp/verdaccio-storage
|
|
uplinks:
|
|
npmjs:
|
|
url: https://registry.npmjs.org/
|
|
timeout: 60s
|
|
max_fails: 3
|
|
packages:
|
|
'@esbuild-kit/*':
|
|
access: $all
|
|
publish: $all
|
|
proxy: npmjs
|
|
'**':
|
|
access: $all
|
|
publish: $all
|
|
proxy: npmjs
|
|
server:
|
|
keepAliveTimeout: 60
|
|
log:
|
|
type: stdout
|
|
format: pretty
|
|
level: warn
|
|
listen: 0.0.0.0:4873
|
|
VERDACCIO_EOF
|
|
|
|
verdaccio --config /tmp/verdaccio.yaml &
|
|
VERDACCIO_PID=$!
|
|
echo "Verdaccio PID: $VERDACCIO_PID"
|
|
|
|
# Wait for Verdaccio to be ready (usually <3s)
|
|
timeout 30 bash -c 'until curl -sf http://localhost:4873/-/ping >/dev/null 2>&1; do sleep 1; done'
|
|
echo "Verdaccio ready"
|
|
|
|
# Create a CI user on Verdaccio and get an auth token
|
|
RESPONSE=$(curl -s -XPUT http://localhost:4873/-/user/org.couchdb.user:ci \
|
|
-H "Content-Type: application/json" \
|
|
-H "Accept: application/json" \
|
|
-d '{"name":"ci","password":"ci","email":"ci@localhost","type":"user"}')
|
|
TOKEN=$(echo "$RESPONSE" | python3 -c "import json,sys; print(json.load(sys.stdin).get('token',''))" 2>/dev/null)
|
|
if [ -z "$TOKEN" ]; then
|
|
echo "Warning: could not get Verdaccio token, publish may fail"
|
|
else
|
|
npm set //localhost:4873/:_authToken="$TOKEN"
|
|
echo "Verdaccio auth configured"
|
|
fi
|
|
|
|
# Publish all patched tarballs
|
|
PATCHES_DIR="deployment/npm-patches"
|
|
for tarball in "$PATCHES_DIR"/*.tgz; do
|
|
[ -f "$tarball" ] || continue
|
|
echo "Publishing $tarball..."
|
|
npm publish "$tarball" \
|
|
--registry http://localhost:4873 \
|
|
--tag patched \
|
|
2>&1 | grep -v "^npm notice" || true
|
|
done
|
|
echo "Patched packages published to Verdaccio"
|
|
|
|
- name: Install npm dependencies
|
|
shell: bash
|
|
run: |
|
|
# Retry npm install up to 3 times for transient network failures
|
|
for attempt in 1 2 3; do
|
|
npm install && break
|
|
echo "npm install attempt $attempt failed, retrying in 15s..."
|
|
sleep 15
|
|
done
|