Skip to content

update

update #455

Workflow file for this run

name: CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
# See supported Node.js release schedule at https://nodejs.org/en/about/previous-releases
node-version: [18.x, 20.x, 22.x]
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
outputs:
tarball-name: ${{ steps.pack.outputs.tarball-name }}
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
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:
# See supported Node.js release schedule at https://nodejs.org/en/about/previous-releases
node-version: [18.x, 20.x]
suite: [commonjs, esm, typescript]
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:
node-version: [20.x]
browser: ["chromium", "firefox", "webkit"]
suite: ["browser"]
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:
node-version: [20.x]
suite: [cloudflare-worker]
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:
bun-version: [1.0.11]
suite: [bun]
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-nextjs:
needs: [test, build]
runs-on: ubuntu-latest
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: 20.x
cache: "npm"
- run: |
npm --prefix integration/next install
npm --prefix integration/next install "./${{ needs.build.outputs.tarball-name }}"
npm --prefix integration/next run build