Add Next.js app dir examples and fix some typing #1600
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: PR checks | |
on: | |
pull_request: | |
workflow_dispatch: | |
workflow_call: | |
push: | |
branches: | |
- 'renovate/**' | |
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 | |
- 20 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/setup-and-build | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.nodeVersion }} | |
# Uses npm as pnpm doesn't support Node < 16 | |
- run: node --version && npm --version && npm run test | |
types: | |
name: Types | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: packages/inngest | |
strategy: | |
fail-fast: false | |
matrix: | |
tsVersion: | |
- 'latest' | |
- '~5.2.0' | |
- '~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 -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/${{ matrix.example }} | |
# Install dependencies in the example repo | |
# Don't use "npm ci", "--immutable" etc., as example repos won't be | |
# shipped with lock files. | |
- name: Add local SDK to example with dependencies | |
working-directory: examples/${{ matrix.example }} | |
run: npm install ./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/${{ matrix.example }} | |
- name: Remove any existing inngest functions | |
run: rm -rf ${{ steps.inngest-functions-path.outputs.dir }} | |
working-directory: examples/${{ matrix.example }} | |
- name: Copy functions to test to example | |
run: cp -Tr ../../packages/inngest/src/test/functions/ ${{ steps.inngest-functions-path.outputs.dir }} | |
working-directory: examples/${{ matrix.example }} | |
# Rules for every project can be different; ignore the example functions | |
# we've just added. | |
- name: Ignore ESLint in example functions | |
run: echo '**/inngest/**' >> .eslintignore | |
working-directory: examples/${{ matrix.example }} | |
# This also covers projects not using ESLint. | |
- name: Ignore TS checks in examples functions | |
run: find ${{ steps.inngest-functions-path.outputs.dir }} -type f -name "*.ts" -exec sed -i '1i // @ts-nocheck' {} \; | |
working-directory: examples/${{ matrix.example }} | |
# Try to build the example | |
- name: Build the example | |
run: npm run build | |
working-directory: examples/${{ matrix.example }} | |
- name: Run the Inngest dev server | |
run: npx inngest-cli@latest dev > cli.log 2>&1 & | |
working-directory: examples/${{ 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: (npm run dev > dev.log 2>&1 &) | |
working-directory: examples/${{ matrix.example }} | |
# Provide the example any env vars it might need | |
env: | |
HOST: "0.0.0.0" | |
PORT: 3000 | |
DO_NOT_TRACK: 1 | |
NODE_ENV: "development" | |
INNGEST_BASE_URL: "http://127.0.0.1:8288" | |
DEBUG: "inngest:*" | |
- 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/${{ matrix.example }} | |
- if: ${{ always() }} | |
run: cat cli.log | |
working-directory: examples/${{ matrix.example }} |