Skip to content

refactor: use stricter typescript #9503

refactor: use stricter typescript

refactor: use stricter typescript #9503

Workflow file for this run

name: Tests and Checks
env:
NODE_NO_WARNINGS: true
on:
push:
branches:
- 'main'
pull_request:
paths-ignore:
- 'website/**'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Install Node
uses: actions/setup-node@v4
with:
node-version-file: '.node-version'
- name: Setup Bun Runtime
uses: antongolub/action-setup-bun@v1
- name: Setup Deno Runtime
uses: denoland/setup-deno@v1
with:
deno-version: v1.x
- name: Install pnpm
uses: pnpm/action-setup@v4.0.0
- name: Get pnpm store path
id: pnpm-store
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Cache pnpm
uses: actions/cache@v4
with:
path: |
${{ steps.pnpm-store.outputs.PATH }}
key: ${{ runner.os }}-pnpm-store-graphql-v16-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-graphql-v16-
- name: Install Dependencies
run: pnpm i --no-frozen-lockfile # no frozen-lockfile because we change the resolutions
- name: Prettier
run: pnpm prettier:check
- name: Lint
run: pnpm lint
env:
NODE_OPTIONS: '--max-old-space-size=8192'
NODE_NO_WARNINGS: true
- name: Build Packages
run: pnpm build
- name: Typecheck
run: pnpm run check
- name: Test ESM & CJS exports integrity
run: pnpm bob check
- name: ESM Integration test
run: pnpm --filter example-node-esm run test
unit:
name: unit / nodejs v${{ matrix.node-version }} / graphql v${{ matrix.graphql-version }}
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
graphql-version: ['15.8.0', '16.9.0']
steps:
- name: Checkout Repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Install Node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install pnpm
uses: pnpm/action-setup@v4.0.0
- name: Get pnpm store path
id: pnpm-store
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Cache pnpm
uses: actions/cache@v4
with:
path: |
${{ steps.pnpm-store.outputs.PATH }}
key:
${{ runner.os }}-pnpm-store-graphql-v${{ matrix.graphql-version }}-${{
hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-graphql-v${{ matrix.graphql-version }}-
- name: Set GraphQL Version
run: node scripts/override-graphql-version.js ${{ matrix.graphql-version }}
- name: Install Dependencies
run: pnpm i --no-frozen-lockfile # no frozen-lockfile because we change the resolutions
- name: Build Packages
run: pnpm build
- name: Run Unit Tests
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: pnpm run test --ci
- name: Run Leak Tests
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: pnpm run test:unit:leaks --ci
integration:
name: integration / nodejs v${{ matrix.node-version }} / graphql v${{ matrix.graphql-version }}
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
graphql-version: ['15.8.0', '16.6.0']
steps:
- name: Checkout Repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Install Node
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install pnpm
uses: pnpm/action-setup@v4.0.0
- name: Get pnpm store path
id: pnpm-store
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Cache pnpm
uses: actions/cache@v4
with:
path: |
${{ steps.pnpm-store.outputs.PATH }}
key:
${{ runner.os }}-pnpm-store-graphql-v${{ matrix.graphql-version }}-${{
hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-graphql-v${{ matrix.graphql-version }}-
- name: Set GraphQL Version
run: node scripts/override-graphql-version.js ${{ matrix.graphql-version }}
- name: Install Dependencies
run: pnpm i --no-frozen-lockfile # no frozen-lockfile because we change the resolutions
- name: Build Packages
run: pnpm build
- name: Run Integration Tests
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: pnpm test:integration --ci
- name: Run Leak Tests
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 3
command: pnpm test:integration:leaks --ci
apollo-federation-compatibility:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Install Node
uses: actions/setup-node@v4
with:
node-version-file: '.node-version'
- name: Install pnpm
uses: pnpm/action-setup@v4.0.0
- name: Get pnpm store path
id: pnpm-store
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Cache pnpm
uses: actions/cache@v4
with:
path: |
${{ steps.pnpm-store.outputs.PATH }}
key: ${{ runner.os }}-pnpm-store-graphql-v16-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-graphql-v16-
- name: Install Dependencies
run: pnpm i --no-frozen-lockfile
- name: Build Packages
run: pnpm build
- name: Bundle Apollo Federation Subgraph Example
run: pnpm --filter=example-apollo-federation-compatibility build
- name: Install Rover
run: curl -sSL https://rover.apollo.dev/nix/latest | sh
- name: Add Rover to PATH
run: echo "$HOME/.rover/bin" >> $GITHUB_PATH
- name: Apollo Federation Subgraph Compatibility
uses: apollographql/federation-subgraph-compatibility@v2
with:
workingDirectory: examples/apollo-federation-compatibility
compose: docker-compose.yaml
schema: schema.graphql
path: /graphql
token: ${{ secrets.GITHUB_TOKEN }}
failOnWarning: true
failOnRequired: true
debug: true
e2e:
strategy:
fail-fast: false
matrix:
plan:
- 'cf-worker'
- 'cf-modules'
- 'azure-function'
- 'aws-lambda'
# - 'vercel-function' # Disabled because vercel API is not actually documented
- 'docker-node'
name: e2e / ${{ matrix.plan }}
runs-on: ubuntu-latest
if: github.event.pull_request.head.repo.full_name == github.repository
steps:
- name: Checkout Repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Install Node
uses: actions/setup-node@v4
with:
node-version-file: '.node-version'
- name: Install pnpm
uses: pnpm/action-setup@v4.0.0
- name: Get pnpm store path
id: pnpm-store
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Cache pnpm
uses: actions/cache@v4
with:
path: |
${{ steps.pnpm-store.outputs.PATH }}
key: ${{ runner.os }}-pnpm-store-graphql-v16-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-graphql-v16-
- name: Install Dependencies
run: pnpm i --no-frozen-lockfile # no frozen-lockfile because we change the resolutions
- name: Build Packages
run: pnpm build
- name: Install pulumi
uses: pulumi/setup-pulumi@v2
- name: Set outputs
id: vars
run: |
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
echo "docker_host=$(docker context inspect --format '{{.Endpoints.docker.Host}}')" >> $GITHUB_OUTPUT
- name: Provision & Test
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 10
command: cd e2e && pnpm start
retry_wait_seconds: 30
env:
# General
TEST_PLAN_NAME: ${{ matrix.plan }}
COMMIT_ID: ${{ steps.vars.outputs.sha_short }}
# CloudFlare
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_ZONE_ID: ${{ secrets.CLOUDFLARE_ZONE_ID }}
# Azure
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
# AWS
AWS_ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_KEY: ${{ secrets.AWS_SECRET_KEY }}
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
AWS_REGION: ${{ secrets.AWS_REGION }}
# Vercel
VERCEL_AUTH_TOKEN: ${{ secrets.VERCEL_AUTH_TOKEN }}