Skip to content

Feature: Add per-request gRPC metadata (custom headers) #50

Feature: Add per-request gRPC metadata (custom headers)

Feature: Add per-request gRPC metadata (custom headers) #50

Workflow file for this run

# Copyright (c) 2026 Electronic Arts Inc. All rights reserved.
name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
env:
NODE_VERSION: '22'
jobs:
install:
name: Install Dependencies
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm run install:all
copyright-check:
name: Copyright Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Check copyright headers
run: |
echo "Checking copyright headers..."
MISSING=""
for f in $(find frontend/src backend/src -type f \( -name '*.ts' -o -name '*.tsx' -o -name '*.js' -o -name '*.jsx' \)); do
if ! head -3 "$f" | grep -q "Copyright.*Electronic Arts"; then
MISSING="$MISSING\n $f"
fi
done
if [ -n "$MISSING" ]; then
echo "Missing copyright header in:$MISSING"
exit 1
fi
echo "All source files have copyright headers."
typecheck:
name: TypeScript Type Check
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm run install:all
- name: Type check frontend
run: |
npm run build:shared
cd frontend && npx tsc --noEmit
- name: Type check backend (source + tests)
run: |
cd backend
npm run typecheck
npm run typecheck:test
lint-frontend:
name: Lint Frontend
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm run install:all
- name: Lint frontend
run: cd frontend && npm run lint
lint-backend:
name: Lint Backend
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm run install:all
- name: Lint backend
run: cd backend && npm run lint
build-frontend:
name: Build Frontend
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm run install:all
- name: Build frontend
run: npm run build:frontend
build-backend:
name: Build Backend
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm run install:all
- name: Build backend
run: |
npm run build:shared
cd backend && npm run build
- name: Verify backend build
run: |
cd backend
node --check dist/server/httpServer.js
node -e "import('./dist/app.js')" --input-type=module
test-backend:
name: Test Backend
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm run install:all
- name: Run backend tests
run: |
npm run build:shared
cd backend && npm test
test-frontend:
name: Test Frontend
runs-on: ubuntu-latest
needs: install
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
- name: Install dependencies
run: npm run install:all
- name: Run frontend tests
run: cd frontend && npm run test:run