Skip to content

Pin to Node 22.4 in CI workflow (#293) #519

Pin to Node 22.4 in CI workflow (#293)

Pin to Node 22.4 in CI workflow (#293) #519

Workflow file for this run

name: CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
suite: [node]
# See supported Node.js release schedule at https://nodejs.org/en/about/previous-releases
node-version: [18.x, 20.x, 22.4] # TODO: unpin to 22.x once https://github.com/nodejs/node/issues/53902 is resolved
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
- run: npm ci
- run: npm run test
- run: npm run check
- run: npm run lint
# Build a production tarball and use it to run the integration
build:
runs-on: ubuntu-latest
strategy:
matrix:
# See supported Node.js release schedule at https://nodejs.org/en/about/previous-releases
node-version: [20.x]
outputs:
tarball-name: ${{ steps.pack.outputs.tarball-name }}
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
- name: Build tarball
id: pack
run: |
echo "tarball-name=$(npm --loglevel error pack)" >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v3
with:
name: package-tarball
path: ${{ steps.pack.outputs.tarball-name }}
integration-node:
needs: [test, build]
runs-on: ubuntu-latest
env:
REPLICATE_API_TOKEN: ${{ secrets.REPLICATE_API_TOKEN }}
strategy:
matrix:
suite: [commonjs, esm, typescript]
# See supported Node.js release schedule at https://nodejs.org/en/about/previous-releases
node-version: [18.x, 20.x]
fail-fast: false
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
with:
name: package-tarball
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
- run: |
npm --prefix integration/${{ matrix.suite }} install
npm --prefix integration/${{ matrix.suite }} install "./${{ needs.build.outputs.tarball-name }}"
npm --prefix integration/${{ matrix.suite }} test
integration-browser:
needs: [test, build]
runs-on: ubuntu-latest
env:
REPLICATE_API_TOKEN: ${{ secrets.REPLICATE_API_TOKEN }}
strategy:
matrix:
suite: ["browser"]
browser: ["chromium", "firefox", "webkit"]
node-version: [20.x]
fail-fast: false
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
with:
name: package-tarball
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
- run: |
cd integration/${{ matrix.suite }}
npm install
npm install "../../${{ needs.build.outputs.tarball-name }}"
npm exec -- playwright install ${{ matrix.browser }}
npm exec -- playwright install-deps ${{ matrix.browser }}
npm exec -- playwright test --browser ${{ matrix.browser }}
integration-edge:
needs: [test, build]
runs-on: ubuntu-latest
env:
REPLICATE_API_TOKEN: ${{ secrets.REPLICATE_API_TOKEN }}
strategy:
matrix:
suite: [cloudflare-worker]
node-version: [20.x]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
with:
name: package-tarball
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
- run: |
test "${{ matrix.suite }}" = "cloudflare-worker" && echo "REPLICATE_API_TOKEN=${{ secrets.REPLICATE_API_TOKEN }}" > integration/${{ matrix.suite }}/.dev.vars
npm --prefix integration/${{ matrix.suite }} install
npm --prefix integration/${{ matrix.suite }} install "./${{ needs.build.outputs.tarball-name }}"
npm --prefix integration/${{ matrix.suite }} test
integration-bun:
needs: [test, build]
runs-on: ubuntu-latest
env:
REPLICATE_API_TOKEN: ${{ secrets.REPLICATE_API_TOKEN }}
strategy:
matrix:
suite: [bun]
bun-version: [1.0.11]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
with:
name: package-tarball
- name: Use Bun ${{ matrix.bun-version }}
uses: oven-sh/setup-bun@v1
with:
bun-version: ${{ matrix.bun-version }}
- run: |
cd integration/${{ matrix.suite }}
bun uninstall replicate
bun install "file:../../${{ needs.build.outputs.tarball-name }}"
retries=3
for ((i=0; i<retries; i++)); do
bun test && break || echo "Test failed, retrying..."
done
integration-deno:
needs: [test, build]
runs-on: ubuntu-latest
env:
REPLICATE_API_TOKEN: ${{ secrets.REPLICATE_API_TOKEN }}
strategy:
matrix:
suite: [deno]
deno-version: [v1.x]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
with:
name: package-tarball
- name: Use Deno ${{ matrix.deno-version }}
uses: denoland/setup-deno@v1
with:
deno-version: ${{ matrix.deno-version }}
- run: |
cd integration/deno
deno cache --node-modules-dir index.ts
tar -xzf ../../${{ needs.build.outputs.tarball-name }} --strip-components=1 -C node_modules/replicate
deno test --allow-env --allow-net --node-modules-dir index.test.ts
integration-nextjs:
needs: [test, build]
runs-on: ubuntu-latest
strategy:
matrix:
suite: [nextjs]
node-version: [20.x]
env:
REPLICATE_API_TOKEN: ${{ secrets.REPLICATE_API_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
with:
name: package-tarball
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "npm"
- run: |
npm --prefix integration/next install
npm --prefix integration/next install "./${{ needs.build.outputs.tarball-name }}"
npm --prefix integration/next run build