on: push: branches: [main] pull_request: branches: [main] workflow_dispatch: {} name: Test jobs: host_tests: strategy: matrix: os: [macos-latest, windows-2019, macos-13] node: [16.20.1, 18.x, 20.x, 22.x] fail-fast: false runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} cache: "npm" registry-url: "https://registry.npmjs.org" - name: Install zstd run: npm run install-zstd shell: bash - name: install dependencies and compile run: npm install --ignore-scripts --loglevel verbose && npm run prebuild shell: bash - name: Test ${{ matrix.os }} shell: bash run: npm test container_tests_glibc: runs-on: ubuntu-latest strategy: matrix: linux_arch: [s390x, arm64, amd64] node: [16.x, 18.x, 20.x, 22.x] fail-fast: false steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} - name: Get Full Node.js Version id: get_nodejs_version shell: bash run: | echo "version=$(node --print 'process.version.slice(1)')" >> "$GITHUB_OUTPUT" echo "ubuntu_version=$(node --print '(+process.version.slice(1).split(`.`).at(0)) > 16 ? `noble` : `bionic`')" >> "$GITHUB_OUTPUT" - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Run Buildx run: | docker buildx create --name builder --bootstrap --use docker buildx build \ --platform linux/${{ matrix.linux_arch }} \ --build-arg="NODE_ARCH=${{ matrix.linux_arch == 'amd64' && 'x64' || matrix.linux_arch }}" \ --build-arg="NODE_VERSION=${{ steps.get_nodejs_version.outputs.version }}" \ --build-arg="UBUNTU_VERSION=${{ steps.get_nodejs_version.outputs.ubuntu_version }}" \ --build-arg="RUN_TEST=true" \ --output type=local,dest=./prebuilds,platform-split=false \ -f ./.github/docker/Dockerfile.glibc \ . container_tests_musl: runs-on: ubuntu-latest strategy: matrix: linux_arch: [amd64, arm64] node: [16.20.1, 18.x, 20.x, 22.x] fail-fast: false steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} - name: Get Full Node.js Version id: get_nodejs_version shell: bash run: | echo "version=$(node --print 'process.version.slice(1)')" >> "$GITHUB_OUTPUT" - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Run Buildx run: | docker buildx create --name builder --bootstrap --use docker --debug buildx build --progress=plain --no-cache \ --platform linux/${{ matrix.linux_arch }} \ --build-arg="PLATFORM=${{ matrix.linux_arch == 'arm64' && 'arm64v8' || matrix.linux_arch }}" \ --build-arg="NODE_VERSION=${{ steps.get_nodejs_version.outputs.version }}" \ --build-arg="RUN_TEST=true" \ --output type=local,dest=./prebuilds,platform-split=false \ -f ./.github/docker/Dockerfile.musl \ .