0.33.0 #539
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: 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.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 | |
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 |