Skip to content

Move to pnpm workspaces #1014

Move to pnpm workspaces

Move to pnpm workspaces #1014

Workflow file for this run

name: PR checks
on:
pull_request:
workflow_dispatch:
workflow_call:
push:
branches:
- 'renovate/**'
- 'pnpm'
concurrency:
group: pr-${{ github.ref }}
cancel-in-progress: true
env:
NODE_AUTH_TOKEN: nothing
jobs:
test:
name: Runtime
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/inngest
strategy:
fail-fast: false
matrix:
nodeVersion:
- 14
- 16
- 18
- lts
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup-and-build
# Uses npm as pnpm doesn't support Node < 16
- run: volta run --node ${{ matrix.nodeVersion }} npm run test
types:
name: Types
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/inngest
strategy:
fail-fast: false
matrix:
tsVersion:
- 'latest'
- 'next'
- '~5.1.0'
- '~5.0.0'
- '~4.9.0'
- '~4.8.0'
- "~4.7.0"
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup-and-build
- run: pnpm add -D typescript@${{ matrix.tsVersion }}
- run: pnpm run test:types
api_diff:
name: Local API diff
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/inngest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup-and-build
- run: pnpm run api-extractor run
lint:
name: Lint
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/inngest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup-and-build
- run: pnpm run lint
package:
name: Package
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/inngest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup-and-build
- name: Package as tarball
run: pnpm run local:pack
- name: Archive package tarball
uses: actions/upload-artifact@v3
with:
name: inngestpkg
path: packages/inngest/inngest.tgz
examples-matrix:
name: Create examples test matrix
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v3
- id: matrix
run: |
echo "matrix=$(find examples/apps -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | jq -R -s -c 'split("\n")[:-1]')" >> $GITHUB_OUTPUT
examples:
name: Test examples
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/inngest
needs: [examples-matrix, package]
strategy:
fail-fast: false
matrix:
example: ${{ fromJson(needs.examples-matrix.outputs.matrix) }}
steps:
# Checkout the repo
- name: Checkout SDK
uses: actions/checkout@v3
- uses: ./.github/actions/setup-and-build
- name: Download pre-built SDK
uses: actions/download-artifact@v3
with:
name: inngestpkg
path: examples/apps/${{ matrix.example }}
# Install dependencies in the example repo
- name: Install example dependencies
run: nci
working-directory: examples/apps/${{ matrix.example }}
- name: Add local SDK to example
working-directory: examples/apps/${{ matrix.example }}
run: ni ./inngest.tgz
# Copy any SDK function examples to the example repo so that we're always
# testing many functions against many handlers.
- name: Find inngest functions path in example
id: inngest-functions-path
run: echo "dir=$(dirname $(echo \"$(git ls-files | grep inngest/index.ts)))\"" >> $GITHUB_OUTPUT
working-directory: examples/apps/${{ matrix.example }}
- name: Remove any existing inngest functions
run: rm -rf ${{ steps.inngest-functions-path.outputs.dir }}
working-directory: examples/apps/${{ matrix.example }}
- name: Copy functions to test to example
run: cp -Tr ../../../examples/functions/ ${{ steps.inngest-functions-path.outputs.dir }}
working-directory: examples/apps/${{ matrix.example }}
# Try to build the example
- name: Build the example
run: nr build
working-directory: examples/apps/${{ matrix.example }}
- name: Run the Inngest dev server
run: npx inngest-cli@latest dev > cli.log 2>&1 &
working-directory: examples/apps/${{ matrix.example }}
env:
DO_NOT_TRACK: 1
- name: Wait for the Inngest dev server to start
uses: mydea/action-wait-for-api@v1
with:
url: "http://localhost:8288"
timeout: "60"
# Run the example
- name: Run the example's dev server
run: (nr dev > dev.log 2>&1 &)
working-directory: examples/apps/${{ matrix.example }}
# Provide the example any env vars it might need
env:
PORT: 3000
DO_NOT_TRACK: 1
- name: Wait for the example to start
uses: mydea/action-wait-for-api@v1
with:
url: "http://localhost:3000/api/inngest"
timeout: "60"
# Give the dev server 5 seconds to register with the example
# TODO Check logs instead of sleeping
- name: Wait 5 seconds for dev server registration
run: sleep 5
# Run the examples test suite against the dev server
- name: Run integration test suite
run: pnpm run test:examples
- if: ${{ always() }}
run: cat dev.log
working-directory: examples/apps/${{ matrix.example }}
- if: ${{ always() }}
run: cat cli.log
working-directory: examples/apps/${{ matrix.example }}