name: CI (GitHub) on: - push - pull_request permissions: {} jobs: CI: permissions: contents: write # for npx prebuild to make release name: ${{ matrix.container || matrix.os }} - Node.js ${{ matrix.nodejs_version }} ${{ matrix.nodejs_arch }} ${{ matrix.prebuild && '- prebuild' }} runs-on: ${{ matrix.os }} container: ${{ matrix.container }} strategy: fail-fast: false matrix: include: - os: ubuntu-22.04 container: centos:7 nodejs_version: 14 prebuild: true - os: ubuntu-22.04 container: centos:7 nodejs_version: 16 - os: ubuntu-22.04 container: rockylinux:8 nodejs_version: 18 - os: ubuntu-22.04 container: node:14-alpine3.12 prebuild: true - os: ubuntu-22.04 container: node:16-alpine3.12 - os: ubuntu-22.04 container: node:18-alpine3.14 - os: macos-11 nodejs_version: 14 prebuild: true nodejs_arch: x64 - os: macos-11 nodejs_version: 16 nodejs_arch: x64 - os: macos-11 nodejs_version: 18 nodejs_arch: x64 - os: windows-2019 nodejs_version: 14 nodejs_arch: x86 prebuild: true - os: windows-2019 nodejs_version: 16 nodejs_arch: x86 - os: windows-2019 nodejs_version: 18 nodejs_arch: x86 - os: windows-2019 nodejs_version: 14 nodejs_arch: x64 prebuild: true - os: windows-2019 nodejs_version: 16 nodejs_arch: x64 - os: windows-2019 nodejs_version: 18 nodejs_arch: x64 steps: - name: Dependencies (Linux glibc) if: contains(matrix.container, 'centos') run: | curl -sL https://rpm.nodesource.com/setup_${{ matrix.nodejs_version }}.x | bash - yum install -y centos-release-scl yum install -y devtoolset-11-gcc-c++ make git python3 nodejs fontconfig google-noto-sans-fonts echo "/opt/rh/devtoolset-11/root/usr/bin" >> $GITHUB_PATH - name: Dependencies (Rocky Linux glibc) if: contains(matrix.container, 'rockylinux') run: | curl -sL https://rpm.nodesource.com/setup_${{ matrix.nodejs_version }}.x | bash - dnf install -y gcc-toolset-11-gcc-c++ make git python3 nodejs fontconfig google-noto-sans-fonts echo "/opt/rh/gcc-toolset-11/root/usr/bin" >> $GITHUB_PATH - name: Dependencies (Linux musl) if: contains(matrix.container, 'alpine') run: apk add build-base git python3 font-noto --update-cache - name: Dependencies (Python 3.10 - macOS, Windows) if: contains(matrix.os, 'macos') || contains(matrix.os, 'windows') uses: actions/setup-python@v4 with: python-version: '3.10' - name: Dependencies (Node.js - macOS, Windows) if: contains(matrix.os, 'macos') || contains(matrix.os, 'windows') uses: actions/setup-node@v3 with: node-version: ${{ matrix.nodejs_version }} architecture: ${{ matrix.nodejs_arch }} - name: Checkout uses: actions/checkout@v3 - name: Fix working directory ownership if: matrix.container run: chown root.root . - name: Install run: npm install --build-from-source --unsafe-perm - name: Test run: npm test - name: Prebuild if: matrix.prebuild && startsWith(github.ref, 'refs/tags/') env: prebuild_upload: ${{ secrets.GITHUB_TOKEN }} run: npx prebuild --runtime napi --target 7