Properly use process spawn and simplify in nextjs-app integration test #9224
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests and Checks | |
env: | |
NODE_NO_WARNINGS: true | |
on: | |
push: | |
branches: | |
- 'main' | |
pull_request: | |
paths-ignore: | |
- 'website/**' | |
jobs: | |
typecheck: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- name: Setup env | |
uses: the-guild-org/shared-config/setup@v1 | |
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: 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 | |
- name: eslint | |
run: pnpm lint | |
unit: | |
needs: [typecheck] | |
name: unit / nodejs v${{ matrix.node-version }} / graphql v${{ matrix.graphql-version }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
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/[email protected] | |
- 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 Tests | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: pnpm run test --ci | |
integration: | |
needs: [typecheck, unit] | |
name: integration / nodejs v${{ matrix.node-version }} / graphql v${{ matrix.graphql-version }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
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/[email protected] | |
- 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 Tests | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: pnpm test:integration --ci | |
leaks: | |
needs: [typecheck, unit, integration] | |
name: leaks / nodejs v${{ matrix.node-version }} / graphql v${{ matrix.graphql-version }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
node-version: [18, 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/[email protected] | |
- 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 Tests | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: pnpm test:leaks --ci | |
esm: | |
needs: [typecheck] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- name: Setup env | |
uses: the-guild-org/shared-config/setup@v1 | |
with: | |
node-version-file: .node-version | |
- name: Build Packages | |
run: pnpm build | |
- name: Run Tests | |
run: pnpm --filter example-node-esm run test | |
apollo-federation-compatibility: | |
needs: [typecheck] | |
strategy: | |
fail-fast: false | |
matrix: | |
node-version: [18, 20, 22] | |
graphql-version: ['15.8.0', '16.6.0'] | |
runs-on: ubuntu-latest | |
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/[email protected] | |
- 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: 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/[email protected] | |
# - 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 | |
e2e: | |
needs: [unit, integration, leaks, esm] | |
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: Setup env | |
uses: the-guild-org/shared-config/setup@v1 | |
with: | |
node-version-file: .node-version | |
- 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 | |
run: pnpm start | |
working-directory: e2e | |
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 }} |