Skip to content

Extract CI tarball generation into separate build job #374

Extract CI tarball generation into separate build job

Extract CI tarball generation into separate build job #374

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]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
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@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 20.x
cache: "npm"
- name: Build tarball
id: pack
run: |
echo "::set-output name=tarball-name::$(npm --loglevel error pack)"
- 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]
exclude:
- suite: cloudflare-worker
node-version: 18.x # Only test Cloudflare suite with the latest Node version
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: package-tarball
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
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-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@v3
- uses: actions/download-artifact@v3
with:
name: package-tarball
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
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@v3
- 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 }}"
bun test