Skip to content

Use the same context object in the entire pipeline #7608

Use the same context object in the entire pipeline

Use the same context object in the entire pipeline #7608

Workflow file for this run

name: test
env:
NODE_NO_WARNINGS: true
on:
push:
branches:
- 'main'
pull_request:
paths-ignore:
- 'website/**'
jobs:
unit:
name: unit / nodejs v${{ matrix.node-version }} / graphql v${{ matrix.graphql-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: [16, 18, 20]
graphql-version: ['15.8.0', '16.6.0']
steps:
- name: Checkout Repository
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install pnpm
uses: pnpm/action-setup@v2.2.4
- name: Get pnpm store path
id: pnpm-store
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Cache pnpm
uses: actions/cache@v3
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 Tests
uses: nick-fields/retry@v2
with:
timeout_minutes: 10
max_attempts: 3
command: pnpm run test --ci
integration:
name: integration / nodejs v${{ matrix.node-version }} / graphql v${{ matrix.graphql-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: [16, 18]
graphql-version: ['15.8.0', '16.6.0']
steps:
- name: Checkout Repository
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install pnpm
uses: pnpm/action-setup@v2.2.4
- name: Get pnpm store path
id: pnpm-store
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Cache pnpm
uses: actions/cache@v3
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 Tests
uses: nick-fields/retry@v2
with:
timeout_minutes: 10
max_attempts: 3
command: pnpm test:integration --ci
leaks:
name: leaks / nodejs v${{ matrix.node-version }} / graphql v${{ matrix.graphql-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: [16, 18]
graphql-version: ['15.8.0', '16.6.0']
steps:
- name: Checkout Repository
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install pnpm
uses: pnpm/action-setup@v2.2.4
- name: Get pnpm store path
id: pnpm-store
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Cache pnpm
uses: actions/cache@v3
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 Tests
uses: nick-fields/retry@v2
with:
timeout_minutes: 10
max_attempts: 3
command: pnpm test:leaks --ci
esm:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
- name: Setup env
uses: the-guild-org/shared-config/setup@main
with:
nodeVersion: 18
packageManager: pnpm
- name: Build Packages
run: pnpm build
- name: Run Tests
run: pnpm --filter example-node-esm run test
typecheck:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
- name: Setup env
uses: the-guild-org/shared-config/setup@main
with:
nodeVersion: 18
packageManager: pnpm
- 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: Build Packages
run: pnpm build
- name: Typecheck
run: pnpm run check
- name: Test ESM & CJS exports integrity
run: pnpm bob check
- name: Prettier
run: pnpm prettier:check
apollo-federation-compatibility:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4
- name: Install Node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install pnpm
uses: pnpm/action-setup@v2.2.4
- name: Get pnpm store path
id: pnpm-store
run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Cache pnpm
uses: actions/cache@v3
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: 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
# TODO: have the example and packages use singleton nestjs dependencies
# but without using .pnpmfile.cjs because it causes issues with renovate: https://github.com/dotansimha/graphql-yoga/pull/2622
# nestjs-apollo-federation-compatibility:
# runs-on: ubuntu-latest
# steps:
# - name: Checkout Repository
# uses: actions/checkout@v3
# - name: Install Node
# uses: actions/setup-node@v3
# with:
# node-version: ${{ matrix.node-version }}
# - name: Install pnpm
# uses: pnpm/action-setup@v2.2.4
# - name: Get pnpm store path
# id: pnpm-store
# run: echo "PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
# - name: Cache pnpm
# uses: actions/cache@v3
# 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: Install Dependencies
# run: pnpm i
# - name: Build Packages
# run: pnpm build
# - name: Bundle NestJS Apollo Federation Subgraph Example
# run: pnpm --filter=example-nestjs-apollo-federation-compatibility build
# - name: Install Rover
# run: curl -sSL https://rover.apollo.dev/nix/v0.11.1 | sh
# - name: Add Rover to PATH
# run: echo "$HOME/.rover/bin" >> $GITHUB_PATH
# - name: Apollo Federation Subgraph Compatibility
# uses: apollographql/federation-subgraph-compatibility@v1
# with:
# workingDirectory: examples/nestjs-apollo-federation-compatibility
# compose: docker-compose.yaml
# schema: schema.graphql
# path: /graphql
# # no token = no comment
# # token: ${{ secrets.GITHUB_TOKEN }}
# failOnWarning: true
# failOnRequired: true
# debug: true