chore: drop Node.js 16, TypeScript 4, migrate to newer versions #49268
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: test | |
on: | |
# Manual UI in GitHub https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/ | |
workflow_dispatch: | |
# Note about push & pull_request | |
# when creating a new branch for a PR, push will be triggered immediately before the PR gets created | |
# The GitHub API / GitHub context base commit is then 0000000000000000000000000000000000000000 | |
# | |
# The get-changed-files action used in the detect_jobs_to_run needs to have a non 0 base commit to ba able to diff | |
# Defining both push (and specify the branches) and pull_request solves the problem | |
push: | |
branches: | |
# Push events our default branch | |
- dev | |
# Push events on our special branches | |
- patch-dev | |
- latest | |
- integration | |
pull_request: | |
paths-ignore: | |
- '*.md' | |
- 'renovate.json' | |
env: | |
PRISMA_TELEMETRY_INFORMATION: 'ecosystem-tests test.yaml' | |
# To hide "Update available x.y.z -> x.y.z" | |
PRISMA_HIDE_UPDATE_MESSAGE: true | |
CI: 1 | |
SLACK_WEBHOOK_URL_WORKFLOWS: ${{ secrets.SLACK_WEBHOOK_URL_WORKFLOWS }} | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
SLACK_WEBHOOK_URL_FAILING: ${{ secrets.SLACK_WEBHOOK_URL_FAILING }} | |
DATABASE_URL_POSTGRES_TEMPLATE: ${{ secrets.DATABASE_URL_POSTGRES_TEMPLATE }} | |
NEXT_TELEMETRY_DISABLED: 1 | |
# To override the endpoint used by fetch-engine to download engines artifacts: | |
PRISMA_ENGINES_MIRROR: '' # 'https://pub-4c8d0335265c4484a8734643b596ecb2.r2.dev/' | |
# These logs will make it easy to verify that `PRISMA_ENGINES_MIRROR` is used | |
# DEBUG: 'prisma:fetch-engine*' | |
defaults: | |
run: | |
# this makes windows use bash as well, which makes `... >> $GITHUB_ENV` work there | |
shell: bash | |
jobs: | |
# # From https://github.com/marketplace/actions/skip-duplicate-actions | |
# # This action cleans up previously running instances of a workflow on the same branch. | |
# # This accomplishes the task of automatically cancelling CI runs on pushes to the same branch, | |
# # which is a common feature in most CI systems but currently not possible with GitHub actions. | |
# cleanup-runs: | |
# continue-on-error: true | |
# runs-on: ubuntu-20.04 | |
# contains(github.actor, 'renovate') | |
# if: (!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/dev' && github.ref != 'refs/heads/integration' && github.ref != 'refs/heads/patch-dev' && github.ref != 'refs/heads/latest') | |
# steps: | |
# - uses: fkirc/[email protected] | |
# Depending on the output we will run some or all tests as fallback | |
detect_jobs_to_run: | |
name: Detect jobs to run | |
runs-on: ubuntu-22.04 | |
outputs: | |
jobs: ${{ steps.detect.outputs.jobs }} | |
steps: | |
- id: checkout | |
uses: actions/checkout@v4 | |
- id: files | |
continue-on-error: true | |
uses: Ana06/[email protected] # it's a fork of jitterbit/get-changed-files@v1 which works better with pull requests | |
with: | |
format: 'json' | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
cache: 'pnpm' | |
- name: Install Dependencies | |
run: pnpm install | |
- id: detect | |
run: ./.github/workflows/scripts/detect-jobs-to-run.js <<<'${{ steps.files.outputs.all }}' | |
confirm_all_jobs_have_run: | |
name: Confirm all jobs have run | |
runs-on: ubuntu-22.04 | |
# One-liner to extract updated list to update this: | |
# python -c "import yaml; print('\n'.join([' - ' + job for job in yaml.safe_load(open('test.yaml'))['jobs'] if job not in ['confirm_all_jobs_have_run', 'report-to-slack-success', 'report-to-slack-failure', 'detect_jobs_to_run']]))" | |
needs: | |
- process-managers | |
- docker | |
- docker-unsupported | |
- core-features | |
- migrate | |
- engines | |
- os | |
- node | |
- binaries | |
- packagers | |
- frameworks | |
- platforms | |
- platforms-serverless | |
- platforms-serverless-vercel | |
- driver-adapters | |
- driver-adapters-wasm | |
- accelerate | |
- bundlers | |
- libraries | |
- databases | |
- databases-macos | |
- test-runners | |
- runtimes | |
if: always() | |
steps: | |
- run: echo "Ok" | |
report-to-slack-success: | |
runs-on: ubuntu-22.04 | |
# One-liner to extract updated list to update this: | |
# python -c "import yaml; print('\n'.join([' - ' + job for job in yaml.safe_load(open('test.yaml'))['jobs'] if job not in ['confirm_all_jobs_have_run', 'report-to-slack-success', 'report-to-slack-failure', 'detect_jobs_to_run']]))" | |
needs: | |
- process-managers | |
- docker | |
- docker-unsupported | |
- core-features | |
- migrate | |
- engines | |
- os | |
- node | |
- binaries | |
- packagers | |
- frameworks | |
- platforms | |
- platforms-serverless | |
- platforms-serverless-vercel | |
- driver-adapters | |
- driver-adapters-wasm | |
- accelerate | |
- bundlers | |
- libraries | |
- databases | |
- databases-macos | |
- test-runners | |
- runtimes | |
if: success() && (github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/integration' || github.ref == 'refs/heads/patch-dev' || github.ref == 'refs/heads/latest') | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
cache: 'pnpm' | |
- name: Install Dependencies | |
run: pnpm install | |
- name: report success to slack | |
run: bash .github/scripts/slack-workflow-status.sh ":white_check_mark:" | |
report-to-slack-failure: | |
runs-on: ubuntu-22.04 | |
# One-liner to extract updated list to update this: | |
# python -c "import yaml; print('\n'.join([' - ' + job for job in yaml.safe_load(open('test.yaml'))['jobs'] if job not in ['confirm_all_jobs_have_run', 'report-to-slack-success', 'report-to-slack-failure', 'detect_jobs_to_run']]))" | |
needs: | |
- process-managers | |
- docker | |
- docker-unsupported | |
- core-features | |
- migrate | |
- engines | |
- os | |
- node | |
- binaries | |
- packagers | |
- frameworks | |
- platforms | |
- platforms-serverless | |
- platforms-serverless-vercel | |
- driver-adapters | |
- driver-adapters-wasm | |
- accelerate | |
- bundlers | |
- libraries | |
- databases | |
- databases-macos | |
- test-runners | |
- runtimes | |
if: failure() && (github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/integration' || github.ref == 'refs/heads/patch-dev' || github.ref == 'refs/heads/latest') | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
cache: 'pnpm' | |
- name: Install Dependencies | |
run: pnpm install | |
- name: report failure to slack | |
run: bash .github/scripts/slack-workflow-status.sh ":x:" | |
#################################################### | |
### real jobs after this | |
### note that the order is somehow important because they are ordered by priority to start | |
driver-adapters: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'driver-adapters') | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
combo: | |
- neon-http-lambda-basic | |
- neon-http-node-basic | |
- neon-http-vercel-nextjs | |
- neon-lambda-basic | |
- neon-node-basic | |
- neon-node-basic-esm | |
- neon-vercel-nextjs | |
- planetscale-lambda-basic | |
- planetscale-node-basic | |
- planetscale-node-basic-esm | |
- planetscale-vercel-nextjs | |
- pg-lambda-basic | |
- pg-node-basic | |
- pg-node-basic-esm | |
- pg-vercel-nextjs | |
- turso-lambda-basic | |
- turso-node-basic | |
- turso-node-basic-esm | |
- turso-vercel-nextjs | |
- tidb-node-basic | |
- pglite-node-basic | |
clientEngine: ['library'] | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
# To avoid race conditions when running tests, we need to avoid concurrency | |
# The tests should not be run concurrently for a given "combo" | |
# Example: 2 concurrent runs of "turso-node-basic" will share the same database, | |
# which causes failures in the test expectation | |
# | |
# We cannot be too restricive though because if so, | |
# we get "Canceling since a higher priority waiting request for '<test>' exists" | |
# | |
# We restrict to the branch/combo here | |
# and below we also have a retry mechanism | |
concurrency: ${{ github.base_ref }}-${{ matrix.combo }} | |
env: | |
NODE_ENV: development | |
NODE_MODULES_CACHE: false | |
NODE_VERBOSE: true | |
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} | |
VERCEL_ORG_ID: ${{ vars.VERCEL_ORG_ID }} | |
AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }} | |
AWS_ACCESS_KEY_ID: ${{ vars.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_ROLE: ${{ vars.AWS_ROLE }} | |
CLOUDFLARE_ACCOUNT_ID: ${{ vars.CLOUDFLARE_ACCOUNT_ID }} | |
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
DEBUG: 'prisma:driver-adapter*' | |
PRISMA_DISABLE_QUAINT_EXECUTORS: true | |
# neon http | |
DRIVER_ADAPTERS_NEON_HTTP_LAMBDA_BASIC_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_HTTP_LAMBDA_BASIC_DATABASE_URL }} | |
DRIVER_ADAPTERS_NEON_HTTP_NODE_BASIC_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_HTTP_NODE_BASIC_DATABASE_URL }} | |
DRIVER_ADAPTERS_NEON_HTTP_VERCEL_NEXTJS_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_HTTP_VERCEL_NEXTJS_DATABASE_URL }} | |
DRIVER_ADAPTERS_NEON_HTTP_VERCEL_NEXTJS_PROJECT_ID: ${{ vars.DRIVER_ADAPTERS_NEON_HTTP_VERCEL_NEXTJS_PROJECT_ID }} | |
# neon | |
DRIVER_ADAPTERS_NEON_LAMBDA_BASIC_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_LAMBDA_BASIC_DATABASE_URL }} | |
DRIVER_ADAPTERS_NEON_NODE_BASIC_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_NODE_BASIC_DATABASE_URL }} | |
DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_DATABASE_URL }} | |
DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_PROJECT_ID: ${{ vars.DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_PROJECT_ID }} | |
# planetscale | |
DRIVER_ADAPTERS_PLANETSCALE_LAMBDA_BASIC_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_PLANETSCALE_LAMBDA_BASIC_DATABASE_URL }} | |
DRIVER_ADAPTERS_PLANETSCALE_NODE_BASIC_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_PLANETSCALE_NODE_BASIC_DATABASE_URL }} | |
DRIVER_ADAPTERS_PLANETSCALE_VERCEL_NEXTJS_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_PLANETSCALE_VERCEL_NEXTJS_DATABASE_URL }} | |
DRIVER_ADAPTERS_PLANETSCALE_VERCEL_NEXTJS_PROJECT_ID: ${{ vars.DRIVER_ADAPTERS_PLANETSCALE_VERCEL_NEXTJS_PROJECT_ID }} | |
# libsql (Turso) | |
DRIVER_ADAPTERS_TURSO_LAMBDA_BASIC_DATABASE_URL: ${{ vars.DRIVER_ADAPTERS_TURSO_LAMBDA_BASIC_DATABASE_URL }} | |
DRIVER_ADAPTERS_TURSO_LAMBDA_BASIC_TOKEN: ${{ secrets.DRIVER_ADAPTERS_TURSO_LAMBDA_BASIC_TOKEN }} | |
DRIVER_ADAPTERS_TURSO_NODE_BASIC_DATABASE_URL: ${{ vars.DRIVER_ADAPTERS_TURSO_NODE_BASIC_DATABASE_URL }} | |
DRIVER_ADAPTERS_TURSO_NODE_BASIC_TOKEN: ${{ secrets.DRIVER_ADAPTERS_TURSO_NODE_BASIC_TOKEN }} | |
DRIVER_ADAPTERS_TURSO_VERCEL_NEXTJS_DATABASE_URL: ${{ vars.DRIVER_ADAPTERS_TURSO_VERCEL_NEXTJS_DATABASE_URL }} | |
DRIVER_ADAPTERS_TURSO_VERCEL_NEXTJS_TOKEN: ${{ secrets.DRIVER_ADAPTERS_TURSO_VERCEL_NEXTJS_TOKEN }} | |
DRIVER_ADAPTERS_TURSO_VERCEL_NEXTJS_PROJECT_ID: ${{ vars.DRIVER_ADAPTERS_TURSO_VERCEL_NEXTJS_PROJECT_ID }} | |
# TiDB Cloud | |
DRIVER_ADAPTERS_TIDB_NODE_BASIC_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_TIDB_NODE_BASIC_DATABASE_URL }} | |
# pg | |
DRIVER_ADAPTERS_POSTGRESQL_VERCEL_NEXTJS_PROJECT_ID: ${{ vars.DRIVER_ADAPTERS_POSTGRESQL_VERCEL_NEXTJS_PROJECT_ID }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.combo }}/pnpm-lock.yaml | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.combo }}_${{ matrix.os }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test ${{ matrix.combo }} - ${{ matrix.clientEngine }} (default output) | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
retry_wait_seconds: 30 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.combo }} | |
- name: test ${{ matrix.combo }} - ${{ matrix.clientEngine }} (custom output) | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
retry_wait_seconds: 30 | |
command: | | |
export FORCE_PRISMA_CLIENT_CUSTOM_OUTPUT=1 | |
bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.combo }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.combo }} | |
driver-adapters-wasm: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'driver-adapters-wasm') | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
combo: | |
- pg-node-basic | |
- pg-node-basic-esm | |
- pg-cf-basic | |
- pg-cf-hyperdrive | |
- pg-worker-cf-basic | |
- pg-cfpages-basic | |
- pg-worker-cfpages-basic | |
- neon-http-cf-basic | |
- neon-http-vercel-nextjs-edgemw | |
- neon-cf-basic | |
- neon-cf-remix | |
- neon-cfpages-basic | |
- neon-cfpages-remix | |
- neon-node-nextjs-edgemw | |
- neon-vercel-nextjs-edgemw | |
- neon-vercel-nextjs-pages-edgefn | |
- neon-vercel-nextjs-app-edgefn | |
- planetscale-cf-basic | |
- planetscale-cfpages-basic | |
- planetscale-vercel-nextjs-edgemw | |
- turso-cf-basic | |
- turso-cfpages-basic | |
- turso-vercel-nextjs-edgemw | |
- d1-cf-basic | |
- d1-cfpages-basic | |
- d1-cfpages-nuxt | |
- d1-vitest | |
clientEngine: ['wasm'] | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
# To avoid race conditions when running tests, we need to avoid concurrency | |
# The tests should not be run concurrently for a given "combo" | |
# Example: 2 concurrent runs of "turso-vercel-nextjs-edgemw" will share the same database, | |
# which causes failures in the test expectation | |
# | |
# We cannot be too restricive though because if so, | |
# we get "Canceling since a higher priority waiting request for '<test>' exists" | |
# | |
# We restrict to the branch/combo here | |
# and below we also have a retry mechanism | |
concurrency: ${{ github.base_ref }}-${{ matrix.combo }} | |
env: | |
NODE_ENV: development | |
NODE_MODULES_CACHE: false | |
NODE_VERBOSE: true | |
CLOUDFLARE_ACCOUNT_ID: ${{ vars.CLOUDFLARE_ACCOUNT_ID }} | |
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} | |
VERCEL_ORG_ID: ${{ vars.VERCEL_ORG_ID }} | |
# neon http | |
DRIVER_ADAPTERS_NEON_HTTP_CF_BASIC_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_HTTP_CF_BASIC_DATABASE_URL }} | |
DRIVER_ADAPTERS_NEON_HTTP_VERCEL_NEXTJS_EDGEMW_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_HTTP_VERCEL_NEXTJS_EDGEMW_DATABASE_URL }} | |
DRIVER_ADAPTERS_NEON_HTTP_VERCEL_NEXTJS_EDGEMW_PROJECT_ID: ${{ vars.DRIVER_ADAPTERS_NEON_HTTP_VERCEL_NEXTJS_EDGEMW_PROJECT_ID }} | |
# neon | |
DRIVER_ADAPTERS_NEON_CF_BASIC_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_CF_BASIC_DATABASE_URL }} | |
DRIVER_ADAPTERS_NEON_CF_REMIX_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_CF_REMIX_DATABASE_URL }} | |
# DRIVER_ADAPTERS_NEON_CFPAGES_BASIC_DATABASE_URL: only configured via UI, as cloudflare pages can not upload env var values per deployment | |
DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_EDGEMW_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_EDGEMW_DATABASE_URL }} | |
DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_EDGEMW_PROJECT_ID: ${{ vars.DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_EDGEMW_PROJECT_ID }} | |
DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_PAGES_EDGEFN_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_PAGES_EDGEFN_DATABASE_URL }} | |
DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_PAGES_EDGEFN_PROJECT_ID: ${{ vars.DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_PAGES_EDGEFN_PROJECT_ID }} | |
DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_APP_EDGEFN_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_APP_EDGEFN_DATABASE_URL }} | |
DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_APP_EDGEFN_PROJECT_ID: ${{ vars.DRIVER_ADAPTERS_NEON_VERCEL_NEXTJS_APP_EDGEFN_PROJECT_ID }} | |
DRIVER_ADAPTERS_NEON_NODE_NEXTJS_EDGEMW_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_NEON_NODE_NEXTJS_EDGEMW_DATABASE_URL }} | |
# planetscale | |
DRIVER_ADAPTERS_PLANETSCALE_CF_BASIC_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_PLANETSCALE_CF_BASIC_DATABASE_URL }} | |
# DRIVER_ADAPTERS_PLANETSCALE_CFPAGES_BASIC_DATABASE_URL: only configured via UI, as cloudflare pages can not upload env var values per deployment | |
DRIVER_ADAPTERS_PLANETSCALE_VERCEL_NEXTJS_EDGEMW_DATABASE_URL: ${{ secrets.DRIVER_ADAPTERS_PLANETSCALE_VERCEL_NEXTJS_EDGEMW_DATABASE_URL }} | |
DRIVER_ADAPTERS_PLANETSCALE_VERCEL_NEXTJS_EDGEMW_PROJECT_ID: ${{ vars.DRIVER_ADAPTERS_PLANETSCALE_VERCEL_NEXTJS_EDGEMW_PROJECT_ID }} | |
# Turso | |
DRIVER_ADAPTERS_TURSO_CF_BASIC_DATABASE_URL: ${{ vars.DRIVER_ADAPTERS_TURSO_CF_BASIC_DATABASE_URL }} | |
DRIVER_ADAPTERS_TURSO_CF_BASIC_TOKEN: ${{ secrets.DRIVER_ADAPTERS_TURSO_CF_BASIC_TOKEN }} | |
# DRIVER_ADAPTERS_TURSO_CFPAGES_BASIC_DATABASE_URL: only configured via UI, as cloudflare pages can not upload env var values per deployment | |
# DRIVER_ADAPTERS_TURSO_CFPAGES_BASIC_TOKEN: only configured via UI, as cloudflare pages can not upload env var values per deployment | |
DRIVER_ADAPTERS_TURSO_VERCEL_NEXTJS_EDGEMW_DATABASE_URL: ${{ vars.DRIVER_ADAPTERS_TURSO_VERCEL_NEXTJS_EDGEMW_DATABASE_URL }} | |
DRIVER_ADAPTERS_TURSO_VERCEL_NEXTJS_EDGEMW_TOKEN: ${{ secrets.DRIVER_ADAPTERS_TURSO_VERCEL_NEXTJS_EDGEMW_TOKEN }} | |
DRIVER_ADAPTERS_TURSO_VERCEL_NEXTJS_EDGEMW_PROJECT_ID: ${{ vars.DRIVER_ADAPTERS_TURSO_VERCEL_NEXTJS_EDGEMW_PROJECT_ID }} | |
# settings | |
DEBUG: 'prisma:driver-adapter*' | |
PRISMA_DISABLE_QUAINT_EXECUTORS: true | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.combo }}/pnpm-lock.yaml | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.combo }}_${{ matrix.os }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test ${{ matrix.combo }} - ${{ matrix.clientEngine }} (default output) | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
retry_wait_seconds: 30 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.combo }} | |
- name: test ${{ matrix.combo }} - ${{ matrix.clientEngine }} (custom output) | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
retry_wait_seconds: 30 | |
command: | | |
export FORCE_PRISMA_CLIENT_CUSTOM_OUTPUT=1 | |
bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.combo }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.combo }} | |
packagers: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'packagers') | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-20.04] | |
packager: | |
- npm | |
- npm-global | |
- pnpm | |
- pnpm-workspaces-custom-output | |
- pnpm-workspaces-default-output | |
- yarn | |
- yarn-workspaces | |
- yarn3-without-pnp | |
- yarn3-workspaces-pnp | |
include: | |
- packager: yarn | |
node: 18 | |
- packager: yarn-workspaces | |
node: 18 | |
- packager: yarn3-without-pnp | |
node: 18 | |
- packager: yarn3-workspaces-pnp | |
node: 18 | |
clientEngine: [library] #['library', 'binary'] | |
runs-on: ${{ matrix.os }} | |
env: | |
# We set this env var to avoid the following error in `actions/setup-node` | |
# error This project's package.json defines "packageManager": "[email protected]". However the current global version of Yarn is 1.22.21. | |
# it was added in https://github.com/yarnpkg/yarn/releases/tag/v1.22.20 | |
# and the env var is available since https://github.com/yarnpkg/yarn/releases/tag/v1.22.21 | |
SKIP_YARN_COREPACK_CHECK: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node || 18 }} | |
cache: | | |
${{ | |
contains(matrix.packager, 'yarn') && 'yarn' || | |
contains(matrix.packager, 'pnpm') && 'pnpm' || | |
'npm' | |
}} | |
cache-dependency-path: | | |
${{ github.job }}/${{ matrix.packager }}/${{ | |
contains(matrix.packager, 'yarn') && 'yarn.lock' || | |
contains(matrix.packager, 'pnpm') && 'pnpm-lock.yaml' || | |
'package-lock.json' | |
}} | |
- name: Install Dependencies | |
run: ${{ contains(matrix.packager, 'yarn') && 'yarn' || contains(matrix.packager, 'npm') && 'npm install' || 'pnpm install' }} | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.packager }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: packager ${{ matrix.packager }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.packager }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.packager }} | |
frameworks: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'frameworks') | |
strategy: | |
fail-fast: false | |
matrix: | |
framework: | |
- nestjs | |
- nextjs | |
- sveltekit | |
clientEngine: [library] #['library', 'binary'] | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.framework }}/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.framework }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: framework ${{ matrix.framework }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.framework }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.framework }} | |
platforms: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'platforms') | |
timeout-minutes: 60 | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- heroku | |
- aws-graviton | |
clientEngine: ['library', 'binary'] | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
concurrency: ${{ matrix.platform }}-${{ matrix.clientEngine }} | |
env: | |
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} | |
SSH_KEY_GRAVITON: ${{ secrets.SSH_KEY_GRAVITON }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.platform }}/pnpm-lock.yaml | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.platform }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test ${{ matrix.platform }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 60 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.platform }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.platform }} | |
platforms-serverless: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'platforms-serverless') | |
timeout-minutes: 60 # can take longer if platforms are down, so better protect | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- lambda-node-18 | |
- lambda-node-20 | |
- netlify-cli | |
- netlify-github | |
- netlify-github-with-nextjs-caching | |
- gcp-functions | |
- firebase-functions | |
- azure-functions-linux | |
- azure-functions-windows | |
- serverless-framework-lambda | |
clientEngine: ['library', 'binary'] | |
os: [ubuntu-20.04] | |
include: | |
- platform: firebase-functions | |
node: '18' | |
exclude: | |
# Node-API w/ 32 bit Node by default, see https://github.com/prisma/prisma/issues/6905 | |
- clientEngine: library | |
platform: azure-functions-windows | |
runs-on: ${{ matrix.os }} | |
concurrency: ${{ github.job }}-${{ matrix.platform }}-${{ matrix.clientEngine }} | |
env: | |
NODE_ENV: development | |
NODE_MODULES_CACHE: false | |
NODE_VERBOSE: true | |
SSH_KEY_NETLIFY: ${{ secrets.SSH_KEY_NETLIFY }} | |
SSH_KEY_NETLIFY_GITHUB_NETXJS_CACHING: ${{ secrets.SSH_KEY_NETLIFY_GITHUB_NETXJS_CACHING }} | |
GCP_FUNCTIONS_PROJECT: ${{ vars.GCP_FUNCTIONS_PROJECT }} | |
GCP_FUNCTIONS_ACCOUNT: ${{ secrets.GCP_FUNCTIONS_ACCOUNT }} | |
GCP_FUNCTIONS_SECRET: ${{ secrets.GCP_FUNCTIONS_SECRET }} | |
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} | |
NETLIFY_SITE_ID: ${{ vars.NETLIFY_SITE_ID }} | |
AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }} | |
AWS_ACCESS_KEY_ID: ${{ vars.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
FIREBASE_PRIVATE_KEY: ${{ secrets.FIREBASE_PRIVATE_KEY }} | |
AWS_ROLE: ${{ vars.AWS_ROLE }} | |
AZURE_SP_TENANT: ${{ vars.AZURE_SP_TENANT }} | |
AZURE_SP_PASSWORD: ${{ secrets.AZURE_SP_PASSWORD }} | |
AZURE_SP_NAME: ${{ vars.AZURE_SP_NAME }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node || '18' }} | |
cache: | | |
${{ | |
contains(matrix.platform, 'azure') && 'npm' || | |
contains(matrix.platform, 'serverless-framework') && 'npm' || | |
contains(matrix.platform, 'gcp-functions') && 'npm' || | |
'pnpm' | |
}} | |
cache-dependency-path: | | |
${{ github.job }}/${{ matrix.platform }}/${{ | |
contains(matrix.platform, 'azure') && 'package-lock.json' || | |
contains(matrix.platform, 'serverless-framework') && 'package-lock.json' || | |
contains(matrix.platform, 'gcp-functions') && 'package-lock.json' || | |
'pnpm-lock.yaml' | |
}} | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.platform }}_${{ matrix.os }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test ${{ matrix.platform }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 60 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.platform }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.platform }} | |
platforms-serverless-vercel: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'platforms-serverless-vercel') | |
timeout-minutes: 60 # can take longer if platforms are down, so better protect | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- vercel-node-builder | |
- vercel-cli | |
- vercel-with-nextjs | |
- vercel-with-nextjs-caching | |
- vercel-with-redwood | |
clientEngine: ['library', 'binary'] | |
os: [ubuntu-20.04] | |
include: | |
- platform: vercel-with-redwood | |
node: 18 | |
runs-on: ${{ matrix.os }} | |
concurrency: ${{ github.job }}-${{ matrix.platform }}-${{ matrix.clientEngine }} | |
env: | |
NODE_ENV: development | |
NODE_MODULES_CACHE: false | |
NODE_VERBOSE: true | |
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} | |
VERCEL_ORG_ID: ${{ vars.VERCEL_ORG_ID }} | |
VERCEL_API_PROJECT_ID: ${{ vars.VERCEL_API_PROJECT_ID }} | |
VERCEL_API_BINARY_PROJECT_ID: ${{ vars.VERCEL_API_BINARY_PROJECT_ID }} | |
VERCEL_NODE_BUILDER_PROJECT_ID: ${{ vars.VERCEL_NODE_BUILDER_PROJECT_ID }} | |
VERCEL_NODE_BUILDER_BINARY_PROJECT_ID: ${{ vars.VERCEL_NODE_BUILDER_BINARY_PROJECT_ID }} | |
VERCEL_WITH_REDWOOD_PROJECT_ID: ${{ vars.VERCEL_WITH_REDWOOD_PROJECT_ID }} | |
VERCEL_WITH_REDWOOD_BINARY_PROJECT_ID: ${{ vars.VERCEL_WITH_REDWOOD_BINARY_PROJECT_ID }} | |
VERCEL_WITH_NEXTJS_PROJECT_ID: ${{ vars.VERCEL_WITH_NEXTJS_PROJECT_ID }} | |
VERCEL_WITH_NEXTJS_BINARY_PROJECT_ID: ${{ vars.VERCEL_WITH_NEXTJS_BINARY_PROJECT_ID }} | |
VERCEL_WITH_NEXTJS_CACHING_PROJECT_ID: ${{ vars.VERCEL_WITH_NEXTJS_CACHING_PROJECT_ID }} | |
VERCEL_WITH_NEXTJS_CACHING_BINARY_PROJECT_ID: ${{ vars.VERCEL_WITH_NEXTJS_CACHING_BINARY_PROJECT_ID }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node || 18 }} | |
cache: | | |
${{ | |
contains(matrix.platform, 'redwood') && 'yarn' || | |
'pnpm' | |
}} | |
cache-dependency-path: | | |
${{ github.job }}/${{ matrix.platform }}/${{ | |
contains(matrix.platform, 'redwood') && 'yarn.lock' || | |
'pnpm-lock.yaml' | |
}} | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- name: Install Dependencies | |
run: ${{ contains(matrix.platform, 'redwood') && 'yarn' || 'pnpm install' }} | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.platform }}_${{ matrix.os }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test ${{ matrix.platform }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 60 | |
max_attempts: 1 | |
# default is 10s | |
retry_wait_seconds: 30 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.platform }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.platform }} | |
core-features: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'core-features') | |
strategy: | |
fail-fast: false | |
matrix: | |
feature: | |
[ | |
auto-reconnect, | |
browser-build, | |
studio, | |
generate-client-and-cli-install-via-global-cli-no-lockfile-npm, | |
generate-client-and-cli-install-via-global-cli-npm-lockfile, | |
generate-client-and-cli-install-via-global-cli-yarn-lockfile, | |
generate-client-and-cli-install-via-global-cli-pnpm-lockfile, | |
generate-client-install-npm, | |
generate-client-install-yarn, | |
generate-client-install-pnpm, | |
generate-client-install-on-sub-project-npm, | |
generate-client-install-on-sub-project-pnpm, | |
generate-client-install-on-sub-project-yarn, | |
] | |
clientEngine: ['library', 'binary'] | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: | | |
${{ | |
contains(matrix.feature, '-yarn') && 'yarn' || | |
contains(matrix.feature, '-npm') && 'npm' || | |
'pnpm' | |
}} | |
cache-dependency-path: | | |
${{ github.job }}/${{ matrix.feature }}/${{ | |
contains(matrix.feature, '-yarn') && 'yarn.lock' || | |
contains(matrix.feature, '-npm') && 'package-lock.json' || | |
'pnpm-lock.yaml' | |
}} | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.feature }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test feature - ${{ matrix.feature }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.feature }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.feature }} | |
migrate: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'migrate') | |
strategy: | |
fail-fast: false | |
matrix: | |
feature: [db-seed-commonjs-pkg, db-seed-esm-pkg] | |
clientEngine: ['library'] | |
os: [ubuntu-20.04, windows-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.feature }}/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.feature }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test feature - ${{ matrix.feature }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.feature }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.feature }} | |
engines: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'engines') | |
strategy: | |
fail-fast: false | |
matrix: | |
feature: [engine-types, engine-native-deps] | |
# macos-13 is pinned because engine-types test | |
# need to be updated before running on macos-14 because the engines | |
# names are different because macos-latest is now arm64 / M1 CPU | |
os: [ubuntu-20.04, windows-latest, macos-13] | |
exclude: | |
- feature: engine-native-deps | |
os: windows-latest | |
- feature: engine-native-deps | |
# Note that this must match the value in "os" above | |
os: macos-13 | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.feature }}/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.feature }}_${{ matrix.os }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test engines - ${{ matrix.feature }} | |
run: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.feature }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.feature }} | |
os: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'os') | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-20.04, macos-latest, windows-latest] | |
clientEngine: ['library', 'binary'] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: generic/basic/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test on ${{ matrix.os }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh generic basic ${{ matrix.os }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh generic basic ${{ matrix.os }} | |
m1: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'm1') | |
strategy: | |
fail-fast: false | |
matrix: | |
clientEngine: ['library', 'binary'] | |
runs-on: [macos-14] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: generic/basic-m1/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test on ${{ matrix.os }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh generic basic-m1 | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh generic basic-m1 | |
node: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'node') | |
strategy: | |
fail-fast: false | |
matrix: | |
node: | |
- 18.18 # minimal node version as per https://github.com/prisma/prisma/blob/main/packages/client/package.json and https://www.prisma.io/docs/reference/system-requirements | |
- 18 | |
- 20 | |
- 22 | |
- 23 | |
clientEngine: ['library', 'binary'] | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- name: use node ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
cache: 'pnpm' | |
cache-dependency-path: generic/basic/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.node }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test on node ${{ matrix.node }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh generic basic "node ${{ matrix.node }}" | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh generic basic "node ${{ matrix.node }}" | |
binaries: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'binaries') | |
strategy: | |
fail-fast: false | |
matrix: | |
binary: [pkg] | |
clientEngine: ['library', 'binary'] | |
os: [ubuntu-20.04, macos-latest, windows-latest] | |
runs-on: ${{ matrix.os }} | |
env: | |
OS: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.binary }}/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
# no database used in existing binaries tests | |
# - name: Set test specific DATABASE_URL | |
# run: | | |
# string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
# search=database | |
# replace=${{ github.job }}_${{ matrix.binary }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
# replaced=${string/$search/$replace} | |
# echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test ${{ matrix.binary }} binary on ${{ matrix.os }} using ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.binary }} ${{ matrix.os }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.binary }} ${{ matrix.os }} | |
# TODO databases are shared between the steps (DP2, DP2+Accelerate), so we run them in sequence | |
# it would be great if we could run them in parallel by letting them use the db provided by E2E | |
accelerate: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'accelerate') | |
timeout-minutes: 60 # can take longer if platforms are down, so better protect | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- nodejs | |
- deno | |
- cloudflare-workers-service | |
- cloudflare-workers-module | |
- vercel-edge-functions | |
- vercel-cli-serverless-functions | |
- nodejs-postgresql-itx | |
- nodejs-mysql-itx | |
- nodejs-mongodb-itx | |
- nodejs-cockroachdb-itx | |
- nodejs-postgresql-logs | |
- nodejs-mongodb-logs | |
- nodejs-tracing | |
clientEngine: [<accelerate>] # value for script logic | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
concurrency: ${{ github.job }}-${{ matrix.platform }}-${{ matrix.clientEngine }} | |
env: | |
NODE_ENV: development | |
NODE_MODULES_CACHE: false | |
NODE_VERBOSE: true | |
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} | |
VERCEL_ORG_ID: ${{ vars.VERCEL_ORG_ID }} | |
# TODO change to vars below | |
CLOUDFLARE_ACCOUNT_ID: ${{ vars.CLOUDFLARE_ACCOUNT_ID }} | |
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} | |
DATAPROXY_VERCEL_EDGE_FUNCTIONS_PROJECT_ID: ${{ vars.DATAPROXY_VERCEL_EDGE_FUNCTIONS_PROJECT_ID }} | |
DATAPROXY_VERCEL_CLI_SERVERLESS_FUNCTIONS_PROJECT_ID: ${{ vars.DATAPROXY_VERCEL_CLI_SERVERLESS_FUNCTIONS_PROJECT_ID }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.platform }}/pnpm-lock.yaml | |
- name: use deno v1.x | |
uses: denoland/setup-deno@v1 | |
with: | |
deno-version: v1.x | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- name: Install Dependencies | |
run: pnpm install | |
# see above why this is not a matrix for each DP variant | |
- name: test Accelerate (DP2) with extension ${{ matrix.platform }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 15 | |
max_attempts: 3 | |
retry_wait_seconds: 30 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.platform }} | |
env: | |
DATAPROXY_FLAVOR: 'DP2+Extension' | |
PRISMA_GENERATE_FLAG: '--accelerate' | |
DATAPROXY_COMMON_URL: ${{ secrets.DP2_DATAPROXY_COMMON_URL }} | |
ITX_PDP_MONGODB_DATABASE_URL: ${{ secrets.DP2_ITX_PDP_MONGODB_DATABASE_URL }} | |
ITX_PDP_MONGODB: ${{ secrets.DP2_ITX_PDP_MONGODB }} | |
ITX_PDP_MYSQL_DATABASE_URL: ${{ secrets.ITX_PDP_MYSQL_DATABASE_URL }} | |
ITX_PDP_MYSQL: ${{ secrets.DP2_ITX_PDP_MYSQL }} | |
ITX_PDP_POSTGRESQL_DATABASE_URL: ${{ secrets.ITX_PDP_POSTGRESQL_DATABASE_URL }} | |
ITX_PDP_POSTGRESQL: ${{ secrets.DP2_ITX_PDP_POSTGRESQL }} | |
ITX_PDP_COCKROACHDB_DATABASE_URL: ${{ secrets.ITX_PDP_COCKROACHDB_DATABASE_URL }} | |
ITX_PDP_COCKROACHDB: ${{ secrets.DP2_ITX_PDP_COCKROACHDB }} | |
# see above why this is not a matrix for each DP variant | |
- name: test Accelerate (DP2) without extension ${{ matrix.platform }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 15 | |
max_attempts: 3 | |
retry_wait_seconds: 30 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.platform }} | |
env: | |
DATAPROXY_FLAVOR: 'DP2' | |
PRISMA_GENERATE_FLAG: '--accelerate' | |
DATAPROXY_COMMON_URL: ${{ secrets.DP2_DATAPROXY_COMMON_URL }} | |
ITX_PDP_MONGODB_DATABASE_URL: ${{ secrets.DP2_ITX_PDP_MONGODB_DATABASE_URL }} | |
ITX_PDP_MONGODB: ${{ secrets.DP2_ITX_PDP_MONGODB }} | |
ITX_PDP_MYSQL_DATABASE_URL: ${{ secrets.ITX_PDP_MYSQL_DATABASE_URL }} | |
ITX_PDP_MYSQL: ${{ secrets.DP2_ITX_PDP_MYSQL }} | |
ITX_PDP_POSTGRESQL_DATABASE_URL: ${{ secrets.ITX_PDP_POSTGRESQL_DATABASE_URL }} | |
ITX_PDP_POSTGRESQL: ${{ secrets.DP2_ITX_PDP_POSTGRESQL }} | |
ITX_PDP_COCKROACHDB_DATABASE_URL: ${{ secrets.ITX_PDP_COCKROACHDB_DATABASE_URL }} | |
ITX_PDP_COCKROACHDB: ${{ secrets.DP2_ITX_PDP_COCKROACHDB }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.platform }} | |
bundlers: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'bundlers') | |
strategy: | |
fail-fast: false | |
matrix: | |
bundler: | |
- webpack | |
- webpack-browser-custom-output | |
- parcel | |
- rollup | |
clientEngine: [library] #['library', 'binary'] | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.bundler }}/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.bundler }}_${{ matrix.os }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test ${{ matrix.bundler }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.bundler }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.bundler }} | |
libraries: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'libraries') | |
strategy: | |
fail-fast: false | |
matrix: | |
library: | |
- express | |
- apollo-server | |
- type-graphql | |
clientEngine: [library] #['library', 'binary'] | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.library }}/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.library }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test ${{ matrix.library }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.library }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.library }} | |
databases: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'databases') | |
strategy: | |
fail-fast: false | |
matrix: | |
database: | |
- digitalocean-pgbouncer | |
- docker-pgbouncer | |
- heroku-pgbouncer | |
- heroku-pgbouncer-buildpack | |
- sqlserver-aws-rds | |
- sqlserver-azure-sql | |
- gcp-postgresql-ssl | |
- gcp-mysql-ssl | |
- mongodb-atlas | |
- mongodb-atlas-sharded | |
- mongodb-atlas-serverless | |
- mongodb-digitalocean | |
# It fails, see https://github.com/prisma/prisma/issues/15083 | |
# It's tested in failing-weekly.yaml | |
#- mongodb-azure-cosmosdb | |
- supabase | |
- supabase-pool | |
- planetscale | |
- cockroach-cloud | |
clientEngine: ['library', 'binary'] | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
env: | |
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} | |
DATABASE_DO_PG_BOUNCER_URL: ${{ secrets.DATABASE_DO_PG_BOUNCER_URL }} | |
DATABASE_HEROKU_PGBOUNCER_URL: ${{ secrets.DATABASE_HEROKU_PGBOUNCER_URL }} | |
DATABASE_URL_DB_SQL_SERVER_AWS_RDS: ${{ secrets.DATABASE_URL_DB_SQL_SERVER_AWS_RDS }} | |
DATABASE_URL_DB_SQL_SERVER_AZURE_SQL: ${{ secrets.DATABASE_URL_DB_SQL_SERVER_AZURE_SQL }} | |
DATABASE_URL_PLANETSCALE: ${{ secrets.DATABASE_URL_PLANETSCALE }} | |
GCP_POSTGRESQL_SSL_CLIENT_CERT: ${{ secrets.GCP_POSTGRESQL_SSL_CLIENT_CERT }} | |
GCP_POSTGRESQL_SSL_CLIENT_KEY: ${{ secrets.GCP_POSTGRESQL_SSL_CLIENT_KEY }} | |
GCP_POSTGRESQL_SSL_DB_URL: ${{ secrets.GCP_POSTGRESQL_SSL_DB_URL }} | |
GCP_POSTGRESQL_SSL_SERVER_CA: ${{ secrets.GCP_POSTGRESQL_SSL_SERVER_CA }} | |
GCP_MYSQL_SSL_CLIENT_CERT: ${{ secrets.GCP_MYSQL_SSL_CLIENT_CERT }} | |
GCP_MYSQL_SSL_CLIENT_KEY: ${{ secrets.GCP_MYSQL_SSL_CLIENT_KEY }} | |
GCP_MYSQL_SSL_DB_URL: ${{ secrets.GCP_MYSQL_SSL_DB_URL }} | |
GCP_MYSQL_SSL_SERVER_CA: ${{ secrets.GCP_MYSQL_SSL_SERVER_CA }} | |
DATABASE_URL_DB_MONGODB_ATLAS: ${{ secrets.DATABASE_URL_DB_MONGODB_ATLAS }} | |
DATABASE_URL_DB_MONGODB_ATLAS_SHARDED: ${{ secrets.DATABASE_URL_DB_MONGODB_ATLAS_SHARDED }} | |
DATABASE_URL_DB_MONGODB_ATLAS_SERVERLESS: ${{ secrets.DATABASE_URL_DB_MONGODB_ATLAS_SERVERLESS }} | |
DATABASE_URL_DB_MONGODB_DIGITALOCEAN: ${{ secrets.DATABASE_URL_DB_MONGODB_DIGITALOCEAN }} | |
#DATABASE_URL_DB_MONGODB_AZURE_COSMOSDB: ${{ secrets.DATABASE_URL_DB_MONGODB_AZURE_COSMOSDB }} | |
MONGODB_DIGITALOCEAN_CERT: ${{ secrets.MONGODB_DIGITALOCEAN_CERT }} | |
DATABASE_URL_SUPABASE_CONNECTION_POOL: ${{ secrets.DATABASE_URL_SUPABASE_CONNECTION_POOL }} | |
DATABASE_URL_SUPABASE: ${{ secrets.DATABASE_URL_SUPABASE }} | |
DATABASE_URL_COACKROACH_CLOUD: ${{ secrets.DATABASE_URL_COACKROACH_CLOUD }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.database }}/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: test ${{ matrix.database }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.database }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.database }} | |
databases-macos: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'databases-macos') | |
strategy: | |
fail-fast: false | |
matrix: | |
clientEngine: [library] | |
database: | |
- sqlserver-azure-sql | |
os: [macos-latest] | |
runs-on: ${{ matrix.os }} | |
env: | |
DATABASE_URL_DB_SQL_SERVER_AZURE_SQL: ${{ secrets.DATABASE_URL_DB_SQL_SERVER_AZURE_SQL }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.database }}/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: test ${{ matrix.database }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.database }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.database }} | |
test-runners: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'test-runners') | |
strategy: | |
fail-fast: false | |
matrix: | |
test-runner: | |
- jest-with-multiple-generators | |
clientEngine: ['library', 'binary'] | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.test-runner }}/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.test-runner }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test ${{ matrix.test-runner }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.test-runner }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.test-runner }} | |
runtimes: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'runtimes') | |
timeout-minutes: 10 | |
strategy: | |
fail-fast: false | |
matrix: | |
runtime: | |
- deno | |
#- bun | |
clientEngine: ['library', 'binary'] | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
concurrency: ${{ github.job }}-${{ matrix.runtime }}-${{ matrix.clientEngine }} | |
env: | |
RUNTIMES_DENO_DATABASE_URL: ${{ secrets.DATAPROXY_COMMON_URL_SOURCE }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.runtime }}/pnpm-lock.yaml | |
- name: use deno v1.x | |
uses: denoland/setup-deno@v1 | |
with: | |
deno-version: v1.44.2 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- name: Install Dependencies | |
run: pnpm install | |
- name: test ${{ matrix.runtime }} | |
run: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.runtime }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.runtime }} | |
process-managers: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'process-managers') | |
strategy: | |
fail-fast: false | |
matrix: | |
feature: [pm2] | |
clientEngine: [library] | |
os: [ubuntu-20.04, windows-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.feature }}/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.feature }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test feature - ${{ matrix.feature }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.feature }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.feature }} | |
docker: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'docker') | |
strategy: | |
fail-fast: false | |
matrix: | |
feature: | |
- almalinux-8-amd64-openssl-1.1.x | |
- almalinux-8-arm64-openssl-1.1.x | |
- almalinux-latest-amd64-openssl-3.0.x | |
- almalinux-latest-arm64-openssl-3.0.x | |
- alpine-3.16-amd64-openssl-1.1.x | |
- alpine-3.16-arm64-openssl-1.1.x | |
- alpine-3.16-arm64-openssl-1.1.x-with-libc | |
- alpine-3.17-amd64-openssl-1.1.x | |
- alpine-3.17-amd64-openssl-3.0.x | |
- alpine-3.17-arm64-openssl-3.0.x | |
- alpine-3.17-arm64-openssl-3.0.x-with-libc | |
- alpine-latest-amd64-openssl-3.0.x | |
- amazonlinux-2-amd64-openssl-1.0.x | |
- amazonlinux-2-arm64-openssl-1.0.x | |
- amazonlinux-2022-amd64-openssl-3.0.x | |
- amazonlinux-2022-arm64-openssl-3.0.x | |
- archlinux-latest-amd64-openssl-3.0.x | |
- debian-bullseye-amd64-openssl-1.1.x | |
- debian-bullseye-amd64-openssl-1.1.x-tls | |
- debian-buster-amd64-openssl-1.1.x | |
- debian-latest-amd64-openssl-3.0.x | |
- debian-latest-arm64-openssl-3.0.x | |
- opensuse-tumbleweed-amd64-openssl-3.0.x | |
- redhat-ubi9-amd64-openssl-3.0.x | |
- ubuntu-20.04-amd64-openssl-1.1.x | |
- ubuntu-22.04-amd64-openssl-3.0.x | |
- ubuntu-22.04-amd64-openssl-1.1.x | |
- ubuntu-latest-amd64-openssl-3.0.x | |
- ubuntu-latest-arm64-openssl-3.0.x | |
clientEngine: [library, binary] | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
env: | |
GCP_POSTGRESQL_SSL_DB_URL: ${{ secrets.GCP_POSTGRESQL_SSL_DB_URL }} | |
GCP_POSTGRESQL_SSL_CLIENT_CERT: ${{ secrets.GCP_POSTGRESQL_SSL_CLIENT_CERT }} | |
GCP_POSTGRESQL_SSL_CLIENT_KEY: ${{ secrets.GCP_POSTGRESQL_SSL_CLIENT_KEY }} | |
GCP_POSTGRESQL_SSL_SERVER_CA: ${{ secrets.GCP_POSTGRESQL_SSL_SERVER_CA }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: 'arm64' | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.feature }}/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_${{ matrix.feature }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test feature - ${{ matrix.feature }} - ${{ matrix.clientEngine }} | |
uses: nick-invision/retry@v3 | |
with: | |
timeout_minutes: 20 | |
max_attempts: 3 | |
command: bash .github/scripts/test-project.sh ${{ github.job }} ${{ matrix.feature }} | |
- name: notify-slack | |
if: failure() | |
run: bash .github/slack/notify-failure.sh ${{ github.job }} ${{ matrix.feature }} | |
# These tests are expected to fail | |
# Meaning a successfull run actually shows a non zero exit code in the logs | |
docker-unsupported: | |
needs: [detect_jobs_to_run] | |
if: contains(fromJSON(needs.detect_jobs_to_run.outputs.jobs), 'docker-unsupported') | |
strategy: | |
fail-fast: false | |
matrix: | |
feature: | |
- debian-buster-amd64-openssl-1.1.x | |
- debian-latest-arm-openssl-1.1.x | |
clientEngine: [library, binary] | |
os: [ubuntu-20.04] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/[email protected] | |
with: | |
version: 8 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: 'pnpm' | |
cache-dependency-path: ${{ github.job }}/${{ matrix.feature }}/pnpm-lock.yaml | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: 'arm64,arm' | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Define Client Engine Type to test | |
run: echo "PRISMA_CLIENT_ENGINE_TYPE=${{ matrix.clientEngine }}" >> $GITHUB_ENV | |
- name: Set test specific DATABASE_URL | |
run: | | |
string=${{ env.DATABASE_URL_POSTGRES_TEMPLATE }} | |
search=database | |
replace=${{ github.job }}_fail_${{ matrix.feature }}_${{ matrix.os }}_${{ matrix.clientEngine }} | |
replaced=${string/$search/$replace} | |
echo "DATABASE_URL=$replaced" >> $GITHUB_ENV | |
- name: test feature - ${{ matrix.feature }} - ${{ matrix.clientEngine }} | |
run: | | |
bash .github/scripts/test-project.sh docker-unsupported ${{ matrix.feature }} |