CI: merge all jobs that use GitHub runners

This commit is contained in:
Lovell Fuller 2023-09-24 16:08:56 +01:00
parent efee9f1779
commit 0f8bb9196e
2 changed files with 62 additions and 59 deletions

View File

@ -1,42 +0,0 @@
name: CI (MacStadium)
on:
- push
- pull_request
permissions: {}
jobs:
CI:
permissions:
contents: write # for npx prebuild to make release
name: Node.js ${{ matrix.nodejs_version }} ${{ matrix.platform }} ${{ matrix.prebuild && '- prebuild' }}
runs-on: macos-m1
strategy:
fail-fast: false
matrix:
include:
- nodejs_version: "^18.17.0"
nodejs_arch: x64
platform: darwin-x64
- nodejs_version: "^18.17.0"
nodejs_arch: arm64
platform: darwin-arm64
prebuild: true
defaults:
run:
shell: /usr/bin/arch -arch arm64e /bin/bash -l {0}
steps:
- name: Dependencies (Node.js)
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.nodejs_version }}
architecture: ${{ matrix.nodejs_arch }}
- name: Checkout
uses: actions/checkout@v3
- name: Install
run: npm install --build-from-source
- name: Test
run: npm test
- name: Prebuild
if: matrix.prebuild && startsWith(github.ref, 'refs/tags/')
env:
prebuild_upload: ${{ secrets.GITHUB_TOKEN }}
run: npx prebuild

View File

@ -1,13 +1,13 @@
name: CI (GitHub) name: CI
on: on:
- push - push
- pull_request - pull_request
permissions: {} permissions: {}
jobs: jobs:
CI: github-runner:
permissions: permissions:
contents: write # for npx prebuild to make release contents: write
name: ${{ matrix.container || matrix.os }} - Node.js ${{ matrix.platform }} ${{ matrix.nodejs_arch }} ${{ matrix.prebuild && '- prebuild' }} name: ${{ matrix.platform }} - Node.js ${{ matrix.nodejs_version_major }} ${{ matrix.prebuild && '- prebuild' }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
container: ${{ matrix.container }} container: ${{ matrix.container }}
strategy: strategy:
@ -17,52 +17,60 @@ jobs:
- os: ubuntu-22.04 - os: ubuntu-22.04
container: rockylinux:8 container: rockylinux:8
nodejs_version: "^18.17.0" nodejs_version: "^18.17.0"
nodejs_version_major: 18
platform: linux-x64 platform: linux-x64
prebuild: true prebuild: true
- os: ubuntu-22.04 - os: ubuntu-22.04
container: rockylinux:8 container: rockylinux:8
nodejs_version: "^20.3.0" nodejs_version: "^20.3.0"
nodejs_version_major: 20
platform: linux-x64 platform: linux-x64
- os: ubuntu-22.04 - os: ubuntu-22.04
container: node:18-alpine3.17 container: node:18-alpine3.17
nodejs_version_major: 18
platform: linuxmusl-x64 platform: linuxmusl-x64
prebuild: true prebuild: true
- os: ubuntu-22.04 - os: ubuntu-22.04
container: node:20-alpine3.18 container: node:20-alpine3.18
nodejs_version_major: 20
platform: linuxmusl-x64 platform: linuxmusl-x64
- os: macos-11 - os: macos-11
nodejs_version: "^18.17.0"
nodejs_arch: x64 nodejs_arch: x64
nodejs_version: "^18.17.0"
platform: darwin-x64 platform: darwin-x64
prebuild: true prebuild: true
- os: macos-11 - os: macos-11
nodejs_version: "^20.3.0"
nodejs_arch: x64 nodejs_arch: x64
nodejs_version: "^20.3.0"
nodejs_version_major: 20
platform: darwin-x64 platform: darwin-x64
- os: windows-2019 - os: windows-2019
nodejs_version: "^18.17.0"
nodejs_arch: x86 nodejs_arch: x86
nodejs_version: "^18.17.0"
nodejs_version_major: 18
platform: win32-ia32 platform: win32-ia32
prebuild: true prebuild: true
- os: windows-2019 - os: windows-2019
nodejs_version: "^20.3.0"
nodejs_arch: x86 nodejs_arch: x86
nodejs_version: "^20.3.0"
nodejs_version_major: 20
platform: win32-ia32 platform: win32-ia32
- os: windows-2019 - os: windows-2019
nodejs_version: "^18.17.0"
nodejs_arch: x64 nodejs_arch: x64
nodejs_version: "^18.17.0"
nodejs_version_major: 18
platform: win32-x64 platform: win32-x64
prebuild: true prebuild: true
- os: windows-2019 - os: windows-2019
nodejs_version: "^20.3.0"
nodejs_arch: x64 nodejs_arch: x64
nodejs_version: "^20.3.0"
nodejs_version_major: 20
platform: win32-x64 platform: win32-x64
steps: steps:
- name: Dependencies (Linux glibc) - name: Dependencies (Linux glibc)
if: contains(matrix.container, 'centos') if: contains(matrix.container, 'centos')
run: | run: |
NODE_MAJOR="${{ contains(matrix.nodejs_version, '^18.') && '18' || '20' }}" yum install -y https://rpm.nodesource.com/pub_${{ matrix.nodejs_version_major }}.x/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm
yum install -y https://rpm.nodesource.com/pub_${NODE_MAJOR}.x/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm
yum install -y https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm yum install -y https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
yum install -y centos-release-scl yum install -y centos-release-scl
yum install -y devtoolset-11-gcc-c++ make git python3 nodejs fontconfig google-noto-sans-fonts yum install -y devtoolset-11-gcc-c++ make git python3 nodejs fontconfig google-noto-sans-fonts
@ -70,8 +78,7 @@ jobs:
- name: Dependencies (Rocky Linux glibc) - name: Dependencies (Rocky Linux glibc)
if: contains(matrix.container, 'rockylinux') if: contains(matrix.container, 'rockylinux')
run: | run: |
NODE_MAJOR="${{ contains(matrix.nodejs_version, '^18.') && '18' || '20' }}" dnf install -y https://rpm.nodesource.com/pub_${{ matrix.nodejs_version_major }}.x/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm
dnf install -y https://rpm.nodesource.com/pub_${NODE_MAJOR}.x/nodistro/repo/nodesource-release-nodistro-1.noarch.rpm
dnf install -y --setopt=nodesource-nodejs.module_hotfixes=1 nodejs dnf install -y --setopt=nodesource-nodejs.module_hotfixes=1 nodejs
dnf install -y gcc-toolset-11-gcc-c++ make git python3 fontconfig google-noto-sans-fonts dnf install -y gcc-toolset-11-gcc-c++ make git python3 fontconfig google-noto-sans-fonts
echo "/opt/rh/gcc-toolset-11/root/usr/bin" >> $GITHUB_PATH echo "/opt/rh/gcc-toolset-11/root/usr/bin" >> $GITHUB_PATH
@ -90,7 +97,7 @@ jobs:
node-version: ${{ matrix.nodejs_version }} node-version: ${{ matrix.nodejs_version }}
architecture: ${{ matrix.nodejs_arch }} architecture: ${{ matrix.nodejs_arch }}
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Fix working directory ownership - name: Fix working directory ownership
if: matrix.container if: matrix.container
run: chown root.root . run: chown root.root .
@ -103,13 +110,13 @@ jobs:
env: env:
prebuild_upload: ${{ secrets.GITHUB_TOKEN }} prebuild_upload: ${{ secrets.GITHUB_TOKEN }}
run: npx prebuild run: npx prebuild
linux-arm: github-runner-qemu:
permissions: permissions:
contents: write contents: write
name: linux-arm - Node.js 18 - prebuild name: linux-arm - Node.js 18 - prebuild
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: uraimo/run-on-arch-action@v2 - uses: uraimo/run-on-arch-action@v2
with: with:
arch: armv6 arch: armv6
@ -127,3 +134,41 @@ jobs:
npm install --build-from-source npm install --build-from-source
npx mocha --no-config --spec=test/unit/io.js npx mocha --no-config --spec=test/unit/io.js
[[ -n $prebuild_upload ]] && npx prebuild || true [[ -n $prebuild_upload ]] && npx prebuild || true
macstadium-runner:
permissions:
contents: write
name: ${{ matrix.platform }} - Node.js ${{ matrix.nodejs_version_major }} ${{ matrix.prebuild && '- prebuild' }}
runs-on: macos-m1
strategy:
fail-fast: false
matrix:
include:
- nodejs_arch: x64
nodejs_version: "^18.17.0"
nodejs_version_major: 18
platform: darwin-x64
- nodejs_arch: arm64
nodejs_version: "^18.17.0"
nodejs_version_major: 18
platform: darwin-arm64
prebuild: true
defaults:
run:
shell: /usr/bin/arch -arch arm64e /bin/bash -l {0}
steps:
- name: Dependencies (Node.js)
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.nodejs_version }}
architecture: ${{ matrix.nodejs_arch }}
- name: Checkout
uses: actions/checkout@v4
- name: Install
run: npm install --build-from-source
- name: Test
run: npm test
- name: Prebuild
if: matrix.prebuild && startsWith(github.ref, 'refs/tags/')
env:
prebuild_upload: ${{ secrets.GITHUB_TOKEN }}
run: npx prebuild