From 3a55d9dbf4cb8aba4bfa7b58ce13b973d2739984 Mon Sep 17 00:00:00 2001 From: Sebastian-Webster <84299475+Sebastian-Webster@users.noreply.github.com> Date: Fri, 17 Oct 2025 21:34:34 +0800 Subject: [PATCH 1/5] Fix failures on Windows with Node 23.x --- src/libraries/Executor.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/libraries/Executor.ts b/src/libraries/Executor.ts index c3724d2..ad647a4 100644 --- a/src/libraries/Executor.ts +++ b/src/libraries/Executor.ts @@ -35,15 +35,19 @@ class Executor { }) } - async #killProcess(process: ChildProcess): Promise { + async #killProcess(childProcess: ChildProcess): Promise { // If the process has already been killed, return true - if (process.kill(0) === false) { - this.logger.warn('Called #killProcess to kill mysqld but it has already been killed.') + const pid = childProcess.pid + + try { + process.kill(pid, 0) + } catch (e) { + this.logger.warn('#killProcess got called to kill mysqld but it is not running:', e) return true } if (os.platform() === 'win32') { - const {error, stderr} = await this.#executeFile('taskkill', ['/pid', String(process.pid), '/t', '/f']) + const {error, stderr} = await this.#executeFile('taskkill', ['/pid', String(pid), '/t', '/f']) const message = error || stderr if (!message) { @@ -59,7 +63,7 @@ class Executor { return false } - return process.kill('SIGKILL') + return process.kill(pid, 'SIGKILL') } //Returns a path to the binary if it should be deleted From a7ff050e9f5dcbc5ec28d7bc14c0fe8d953504c4 Mon Sep 17 00:00:00 2001 From: Sebastian-Webster <84299475+Sebastian-Webster@users.noreply.github.com> Date: Fri, 17 Oct 2025 21:58:54 +0800 Subject: [PATCH 2/5] add node version tests to os-compatibility.yml --- .github/workflows/ci.yml | 4 +- .github/workflows/node-compatibility.yml | 40 -- .github/workflows/os-compatibility.yml | 475 ++++++++++++++++++++++- 3 files changed, 456 insertions(+), 63 deletions(-) delete mode 100644 .github/workflows/node-compatibility.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cb78ed7..84dcb60 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: run: npm ci - name: Run tests - run: npm run test + run: npm run test:ci - name: Move MySQLMSN directory for GitHub Actions upload if: ${{ failure() }} @@ -31,7 +31,7 @@ jobs: MOVE_MYSQLMSN_TO: /tmp/mysqlmsn run: npx ts-node tests/ci/DirMoveGitHubActions.ts - - name: Upload mysqlmsn directory (Not Windows) + - name: Upload mysqlmsn directory if: ${{ failure() }} uses: actions/upload-artifact@v4.3.5 with: diff --git a/.github/workflows/node-compatibility.yml b/.github/workflows/node-compatibility.yml deleted file mode 100644 index 57af6d3..0000000 --- a/.github/workflows/node-compatibility.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Node.js Compatibility - -on: - push: - branches: [ main ] - pull_request: - workflow_dispatch: - -jobs: - node: - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup node ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - check-latest: true - - - name: Install packages - run: npm ci - - - name: Run tests - run: npm run test:ci - - - name: Upload mysqlmsn directory - if: ${{ failure() }} - uses: actions/upload-artifact@v4.3.5 - with: - name: node-${{ matrix.node-version }} - path: /tmp/mysqlmsn - compression-level: 9 \ No newline at end of file diff --git a/.github/workflows/os-compatibility.yml b/.github/workflows/os-compatibility.yml index 7dc1186..c770034 100644 --- a/.github/workflows/os-compatibility.yml +++ b/.github/workflows/os-compatibility.yml @@ -7,24 +7,24 @@ on: workflow_dispatch: jobs: - os: - runs-on: ${{ matrix.os }} + macos-14: + runs-on: macos-14 strategy: fail-fast: false matrix: - os: [macos-14, macos-15, macos-15-intel, macos-26, ubuntu-22.04, ubuntu-24.04, windows-2022, windows-2025, ubuntu-22.04-arm, ubuntu-24.04-arm, windows-11-arm] #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] steps: - name: Checkout uses: actions/checkout@v4 - - name: Setup node LTS + - name: Setup Node ${{ matrix.node-version }} uses: actions/setup-node@v4 with: - node-version: lts/* + node-version: ${{ matrix.node-version }} check-latest: true - name: Install packages @@ -33,51 +33,484 @@ jobs: - name: Run tests env: VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run os-compat:ci + run: npm run test:ci - name: Move MySQLMSN directory for GitHub Actions upload if: ${{ failure() }} env: - MOVE_MYSQLMSN_TO: ${{ runner.os == 'Windows' && 'C:\\Users\\RUNNER~1\\mysqlmsn' || '/tmp/mysqlmsn' }} + MOVE_MYSQLMSN_TO: /tmp/mysqlmsn run: npx ts-node tests/ci/DirMoveGitHubActions.ts - - name: Upload mysqlmsn directory (Windows) - if: ${{ failure() && runner.os == 'Windows' }} + - name: Upload mysqlmsn directory + if: ${{ failure() }} uses: actions/upload-artifact@v4.3.5 with: - name: ${{ matrix.os }}-${{ matrix.version-requirement }} - path: "C:\\Users\\RUNNER~1\\mysqlmsn" + name: macos-14-${{ matrix.version-requirement }}-node${{ matrix.node-version }} + path: /tmp/mysqlmsn compression-level: 0 - - name: Upload mysqlmsn directory (Not Windows) - if: ${{ failure() && runner.os != 'Windows' }} + macos-15: + runs-on: macos-15 + + strategy: + fail-fast: false + matrix: + #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 + version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + check-latest: true + + - name: Install packages + run: npm ci + + - name: Run tests + env: + VERSION_REQUIREMENT: ${{ matrix.version-requirement }} + run: npm run test:ci + + - name: Move MySQLMSN directory for GitHub Actions upload + if: ${{ failure() }} + env: + MOVE_MYSQLMSN_TO: /tmp/mysqlmsn + run: npx ts-node tests/ci/DirMoveGitHubActions.ts + + - name: Upload mysqlmsn directory + if: ${{ failure() }} + uses: actions/upload-artifact@v4.3.5 + with: + name: macos-15-${{ matrix.version-requirement }}-node${{ matrix.node-version }} + path: /tmp/mysqlmsn + compression-level: 0 + + macos-15-intel: + runs-on: macos-15-intel + + strategy: + fail-fast: false + matrix: + #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 + version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + check-latest: true + + - name: Install packages + run: npm ci + + - name: Run tests + env: + VERSION_REQUIREMENT: ${{ matrix.version-requirement }} + run: npm run test:ci + + - name: Move MySQLMSN directory for GitHub Actions upload + if: ${{ failure() }} + env: + MOVE_MYSQLMSN_TO: /tmp/mysqlmsn + run: npx ts-node tests/ci/DirMoveGitHubActions.ts + + - name: Upload mysqlmsn directory + if: ${{ failure() }} + uses: actions/upload-artifact@v4.3.5 + with: + name: macos-15-intel-${{ matrix.version-requirement }}-node${{ matrix.node-version }} + path: /tmp/mysqlmsn + compression-level: 0 + + macos-26: + runs-on: macos-26 + + strategy: + fail-fast: false + matrix: + #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 + version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + check-latest: true + + - name: Install packages + run: npm ci + + - name: Run tests + env: + VERSION_REQUIREMENT: ${{ matrix.version-requirement }} + run: npm run test:ci + + - name: Move MySQLMSN directory for GitHub Actions upload + if: ${{ failure() }} + env: + MOVE_MYSQLMSN_TO: /tmp/mysqlmsn + run: npx ts-node tests/ci/DirMoveGitHubActions.ts + + - name: Upload mysqlmsn directory + if: ${{ failure() }} + uses: actions/upload-artifact@v4.3.5 + with: + name: macos-26-${{ matrix.version-requirement }}-node${{ matrix.node-version }} + path: /tmp/mysqlmsn + compression-level: 0 + + ubuntu-22-04: + runs-on: ubuntu-22.04 + + strategy: + fail-fast: false + matrix: + #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 + version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + check-latest: true + + - name: Install packages + run: npm ci + + - name: Run tests + env: + VERSION_REQUIREMENT: ${{ matrix.version-requirement }} + run: npm run test:ci + + - name: Upload mysqlmsn directory + if: ${{ failure() }} + uses: actions/upload-artifact@v4.3.5 + with: + name: ubuntu-22-04-${{ matrix.version-requirement }}-node${{ matrix.node-version }} + path: /tmp/mysqlmsn + compression-level: 0 + + ubuntu-22-04-arm: + runs-on: ubuntu-22.04-arm + + strategy: + fail-fast: false + matrix: + #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 + version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + check-latest: true + + - name: Install packages + run: npm ci + + - name: Run tests + env: + VERSION_REQUIREMENT: ${{ matrix.version-requirement }} + run: npm run test:ci + + - name: Upload mysqlmsn directory + if: ${{ failure() }} + uses: actions/upload-artifact@v4.3.5 + with: + name: ubuntu-22-04-arm-${{ matrix.version-requirement }}-node${{ matrix.node-version }} + path: /tmp/mysqlmsn + compression-level: 0 + + ubuntu-24-04: + runs-on: ubuntu-24.04 + + strategy: + fail-fast: false + matrix: + #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 + version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + check-latest: true + + - name: Install packages + run: npm ci + + - name: Run tests + env: + VERSION_REQUIREMENT: ${{ matrix.version-requirement }} + run: npm run test:ci + + - name: Upload mysqlmsn directory + if: ${{ failure() }} + uses: actions/upload-artifact@v4.3.5 + with: + name: ubuntu-24-04-${{ matrix.version-requirement }}-node${{ matrix.node-version }} + path: /tmp/mysqlmsn + compression-level: 0 + + ubuntu-24-04-arm: + runs-on: ubuntu-24.04-arm + + strategy: + fail-fast: false + matrix: + #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 + version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + check-latest: true + + - name: Install packages + run: npm ci + + - name: Run tests + env: + VERSION_REQUIREMENT: ${{ matrix.version-requirement }} + run: npm run test:ci + + - name: Upload mysqlmsn directory + if: ${{ failure() }} + uses: actions/upload-artifact@v4.3.5 + with: + name: ubuntu-24-04-arm-${{ matrix.version-requirement }}-node${{ matrix.node-version }} + path: /tmp/mysqlmsn + compression-level: 0 + + windows-2022: + runs-on: windows-2022 + + strategy: + fail-fast: false + matrix: + #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 + version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + check-latest: true + + - name: Install packages + run: npm ci + + - name: Run tests + env: + VERSION_REQUIREMENT: ${{ matrix.version-requirement }} + run: npm run test:ci + + - name: Move MySQLMSN directory for GitHub Actions upload + if: ${{ failure() }} + env: + MOVE_MYSQLMSN_TO: 'C:\\Users\\RUNNER~1\\mysqlmsn' + run: npx ts-node tests/ci/DirMoveGitHubActions.ts + + - name: Upload mysqlmsn directory + if: ${{ failure() }} + uses: actions/upload-artifact@v4.3.5 + with: + name: windows-2022-${{ matrix.version-requirement }}-node${{ matrix.node-version }} + path: C:\\Users\\RUNNER~1\\mysqlmsn + compression-level: 0 + + windows-2025: + runs-on: windows-2025 + + strategy: + fail-fast: false + matrix: + #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 + version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + check-latest: true + + - name: Install packages + run: npm ci + + - name: Run tests + env: + VERSION_REQUIREMENT: ${{ matrix.version-requirement }} + run: npm run test:ci + + - name: Move MySQLMSN directory for GitHub Actions upload + if: ${{ failure() }} + env: + MOVE_MYSQLMSN_TO: 'C:\\Users\\RUNNER~1\\mysqlmsn' + run: npx ts-node tests/ci/DirMoveGitHubActions.ts + + - name: Upload mysqlmsn directory + if: ${{ failure() }} + uses: actions/upload-artifact@v4.3.5 + with: + name: windows-2025-${{ matrix.version-requirement }}-node${{ matrix.node-version }} + path: C:\\Users\\RUNNER~1\\mysqlmsn + compression-level: 0 + + windows-11-arm: + runs-on: windows-11-arm + + strategy: + fail-fast: false + matrix: + #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 + version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + check-latest: true + + - name: Install packages + run: npm ci + + - name: Run tests + env: + VERSION_REQUIREMENT: ${{ matrix.version-requirement }} + run: npm run test:ci + + - name: Move MySQLMSN directory for GitHub Actions upload + if: ${{ failure() }} + env: + MOVE_MYSQLMSN_TO: 'C:\\Users\\RUNNER~1\\mysqlmsn' + run: npx ts-node tests/ci/DirMoveGitHubActions.ts + + - name: Upload mysqlmsn directory + if: ${{ failure() }} + uses: actions/upload-artifact@v4.3.5 + with: + name: windows-11-arm-${{ matrix.version-requirement }}-node${{ matrix.node-version }} + path: C:\\Users\\RUNNER~1\\mysqlmsn + compression-level: 0 + + fedora-41-docker: + runs-on: ubuntu-${{ matrix.ubuntu-version}} + + strategy: + fail-fast: false + matrix: + #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 + version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] + ubuntu-version: [24.04, 24.04-arm] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] + + container: fedora:41 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + check-latest: true + + - name: Install required libraries + run: sudo dnf install libaio numactl libxcrypt-compat -y + + - name: Install packages + run: npm ci + + - name: Print available storage space + run: df -h + + - name: Run tests + env: + VERSION_REQUIREMENT: ${{ matrix.version-requirement }} + run: npm run test:ci + + - name: Upload mysqlmsn directory + if: ${{ failure() }} uses: actions/upload-artifact@v4.3.5 with: - name: ${{ matrix.os }}-${{ matrix.version-requirement }} + name: docker-fedora-41-${{ matrix.version-requirement }}-${{ matrix.ubuntu-version}} path: /tmp/mysqlmsn compression-level: 0 - fedora-docker: + fedora-42-docker: runs-on: ubuntu-${{ matrix.ubuntu-version}} strategy: fail-fast: false matrix: - version: [41, 42] #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] ubuntu-version: [24.04, 24.04-arm] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] - container: fedora:${{ matrix.version }} + container: fedora:42 steps: - name: Checkout uses: actions/checkout@v4 - - name: Setup node LTS + - name: Setup Node ${{ matrix.node-version }} uses: actions/setup-node@v4 with: - node-version: lts/* + node-version: ${{ matrix.node-version }} check-latest: true - name: Install required libraries @@ -92,13 +525,13 @@ jobs: - name: Run tests env: VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run os-compat:ci + run: npm run test:ci - name: Upload mysqlmsn directory if: ${{ failure() }} uses: actions/upload-artifact@v4.3.5 with: - name: docker-fedora-${{ matrix.version }}-${{ matrix.version-requirement }}-${{ matrix.ubuntu-version}} + name: docker-fedora-42-${{ matrix.version }}-${{ matrix.version-requirement }}-${{ matrix.ubuntu-version}} path: /tmp/mysqlmsn compression-level: 0 From 51049b258bc792b191c34384c7c0c96a916dd9a5 Mon Sep 17 00:00:00 2001 From: Sebastian-Webster <84299475+Sebastian-Webster@users.noreply.github.com> Date: Fri, 17 Oct 2025 22:07:54 +0800 Subject: [PATCH 3/5] move node version tests back to node-compatibility and add os matrix to node tests --- .github/workflows/node-compatibility.yml | 47 +++ .github/workflows/old-node-tests.yml | 13 +- .github/workflows/os-compatibility.yml | 473 +---------------------- 3 files changed, 73 insertions(+), 460 deletions(-) create mode 100644 .github/workflows/node-compatibility.yml diff --git a/.github/workflows/node-compatibility.yml b/.github/workflows/node-compatibility.yml new file mode 100644 index 0000000..d771d96 --- /dev/null +++ b/.github/workflows/node-compatibility.yml @@ -0,0 +1,47 @@ +name: Node.js Compatibility + +on: + push: + branches: [ main ] + pull_request: + workflow_dispatch: + +jobs: + node: + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: [macos-14, macos-15, macos-15-intel, macos-26, ubuntu-22.04, ubuntu-24.04, windows-2022, windows-2025, ubuntu-22.04-arm, ubuntu-24.04-arm, windows-11-arm] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup node ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + check-latest: true + + - name: Install packages + run: npm ci + + - name: Run tests + run: npm run test:ci + + - name: Move MySQLMSN directory for GitHub Actions upload + if: ${{ failure() }} + env: + MOVE_MYSQLMSN_TO: ${{ runner.os == 'Windows' && 'C:\\Users\\RUNNER~1\\mysqlmsn' || '/tmp/mysqlmsn' }} + run: npx ts-node tests/ci/DirMoveGitHubActions.ts + + - name: Upload mysqlmsn directory + if: ${{ failure() }} + uses: actions/upload-artifact@v4.3.5 + with: + name: node-${{ matrix.node-version }} + path: ${{ runner.os == 'Windows' && 'C:\\Users\\RUNNER~1\\mysqlmsn' || '/tmp/mysqlmsn' }} + compression-level: 0 \ No newline at end of file diff --git a/.github/workflows/old-node-tests.yml b/.github/workflows/old-node-tests.yml index 1170d56..0aa8235 100644 --- a/.github/workflows/old-node-tests.yml +++ b/.github/workflows/old-node-tests.yml @@ -8,12 +8,13 @@ on: jobs: node: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: node-version: [16.6.0, 16.x, 17.0.0, 17.x] + os: [macos-14, macos-15, macos-15-intel, macos-26, ubuntu-22.04, ubuntu-24.04, windows-2022, windows-2025, ubuntu-22.04-arm, ubuntu-24.04-arm, windows-11-arm] steps: - name: Checkout @@ -31,10 +32,16 @@ jobs: - name: Run tests run: npx ts-node tests/old-node.ts + - name: Move MySQLMSN directory for GitHub Actions upload + if: ${{ failure() }} + env: + MOVE_MYSQLMSN_TO: ${{ runner.os == 'Windows' && 'C:\\Users\\RUNNER~1\\mysqlmsn' || '/tmp/mysqlmsn' }} + run: npx ts-node tests/ci/DirMoveGitHubActions.ts + - name: Upload mysqlmsn directory if: ${{ failure() }} uses: actions/upload-artifact@v4.3.5 with: name: node-${{ matrix.node-version }} - path: /tmp/mysqlmsn - compression-level: 9 \ No newline at end of file + path: ${{ runner.os == 'Windows' && 'C:\\Users\\RUNNER~1\\mysqlmsn' || '/tmp/mysqlmsn' }} + compression-level: 0 \ No newline at end of file diff --git a/.github/workflows/os-compatibility.yml b/.github/workflows/os-compatibility.yml index c770034..8e638d0 100644 --- a/.github/workflows/os-compatibility.yml +++ b/.github/workflows/os-compatibility.yml @@ -7,24 +7,24 @@ on: workflow_dispatch: jobs: - macos-14: - runs-on: macos-14 + os: + runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: + os: [macos-14, macos-15, macos-15-intel, macos-26, ubuntu-22.04, ubuntu-24.04, windows-2022, windows-2025, ubuntu-22.04-arm, ubuntu-24.04-arm, windows-11-arm] #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] steps: - name: Checkout uses: actions/checkout@v4 - - name: Setup Node ${{ matrix.node-version }} + - name: Setup node LTS uses: actions/setup-node@v4 with: - node-version: ${{ matrix.node-version }} + node-version: lts/* check-latest: true - name: Install packages @@ -33,484 +33,43 @@ jobs: - name: Run tests env: VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run test:ci + run: npm run os-compat:ci - name: Move MySQLMSN directory for GitHub Actions upload if: ${{ failure() }} env: - MOVE_MYSQLMSN_TO: /tmp/mysqlmsn + MOVE_MYSQLMSN_TO: ${{ runner.os == 'Windows' && 'C:\\Users\\RUNNER~1\\mysqlmsn' || '/tmp/mysqlmsn' }} run: npx ts-node tests/ci/DirMoveGitHubActions.ts - name: Upload mysqlmsn directory if: ${{ failure() }} uses: actions/upload-artifact@v4.3.5 with: - name: macos-14-${{ matrix.version-requirement }}-node${{ matrix.node-version }} - path: /tmp/mysqlmsn - compression-level: 0 - - macos-15: - runs-on: macos-15 - - strategy: - fail-fast: false - matrix: - #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 - version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - check-latest: true - - - name: Install packages - run: npm ci - - - name: Run tests - env: - VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run test:ci - - - name: Move MySQLMSN directory for GitHub Actions upload - if: ${{ failure() }} - env: - MOVE_MYSQLMSN_TO: /tmp/mysqlmsn - run: npx ts-node tests/ci/DirMoveGitHubActions.ts - - - name: Upload mysqlmsn directory - if: ${{ failure() }} - uses: actions/upload-artifact@v4.3.5 - with: - name: macos-15-${{ matrix.version-requirement }}-node${{ matrix.node-version }} - path: /tmp/mysqlmsn - compression-level: 0 - - macos-15-intel: - runs-on: macos-15-intel - - strategy: - fail-fast: false - matrix: - #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 - version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - check-latest: true - - - name: Install packages - run: npm ci - - - name: Run tests - env: - VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run test:ci - - - name: Move MySQLMSN directory for GitHub Actions upload - if: ${{ failure() }} - env: - MOVE_MYSQLMSN_TO: /tmp/mysqlmsn - run: npx ts-node tests/ci/DirMoveGitHubActions.ts - - - name: Upload mysqlmsn directory - if: ${{ failure() }} - uses: actions/upload-artifact@v4.3.5 - with: - name: macos-15-intel-${{ matrix.version-requirement }}-node${{ matrix.node-version }} - path: /tmp/mysqlmsn - compression-level: 0 - - macos-26: - runs-on: macos-26 - - strategy: - fail-fast: false - matrix: - #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 - version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - check-latest: true - - - name: Install packages - run: npm ci - - - name: Run tests - env: - VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run test:ci - - - name: Move MySQLMSN directory for GitHub Actions upload - if: ${{ failure() }} - env: - MOVE_MYSQLMSN_TO: /tmp/mysqlmsn - run: npx ts-node tests/ci/DirMoveGitHubActions.ts - - - name: Upload mysqlmsn directory - if: ${{ failure() }} - uses: actions/upload-artifact@v4.3.5 - with: - name: macos-26-${{ matrix.version-requirement }}-node${{ matrix.node-version }} - path: /tmp/mysqlmsn - compression-level: 0 - - ubuntu-22-04: - runs-on: ubuntu-22.04 - - strategy: - fail-fast: false - matrix: - #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 - version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - check-latest: true - - - name: Install packages - run: npm ci - - - name: Run tests - env: - VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run test:ci - - - name: Upload mysqlmsn directory - if: ${{ failure() }} - uses: actions/upload-artifact@v4.3.5 - with: - name: ubuntu-22-04-${{ matrix.version-requirement }}-node${{ matrix.node-version }} - path: /tmp/mysqlmsn - compression-level: 0 - - ubuntu-22-04-arm: - runs-on: ubuntu-22.04-arm - - strategy: - fail-fast: false - matrix: - #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 - version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - check-latest: true - - - name: Install packages - run: npm ci - - - name: Run tests - env: - VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run test:ci - - - name: Upload mysqlmsn directory - if: ${{ failure() }} - uses: actions/upload-artifact@v4.3.5 - with: - name: ubuntu-22-04-arm-${{ matrix.version-requirement }}-node${{ matrix.node-version }} - path: /tmp/mysqlmsn - compression-level: 0 - - ubuntu-24-04: - runs-on: ubuntu-24.04 - - strategy: - fail-fast: false - matrix: - #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 - version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - check-latest: true - - - name: Install packages - run: npm ci - - - name: Run tests - env: - VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run test:ci - - - name: Upload mysqlmsn directory - if: ${{ failure() }} - uses: actions/upload-artifact@v4.3.5 - with: - name: ubuntu-24-04-${{ matrix.version-requirement }}-node${{ matrix.node-version }} - path: /tmp/mysqlmsn - compression-level: 0 - - ubuntu-24-04-arm: - runs-on: ubuntu-24.04-arm - - strategy: - fail-fast: false - matrix: - #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 - version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - check-latest: true - - - name: Install packages - run: npm ci - - - name: Run tests - env: - VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run test:ci - - - name: Upload mysqlmsn directory - if: ${{ failure() }} - uses: actions/upload-artifact@v4.3.5 - with: - name: ubuntu-24-04-arm-${{ matrix.version-requirement }}-node${{ matrix.node-version }} - path: /tmp/mysqlmsn - compression-level: 0 - - windows-2022: - runs-on: windows-2022 - - strategy: - fail-fast: false - matrix: - #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 - version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - check-latest: true - - - name: Install packages - run: npm ci - - - name: Run tests - env: - VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run test:ci - - - name: Move MySQLMSN directory for GitHub Actions upload - if: ${{ failure() }} - env: - MOVE_MYSQLMSN_TO: 'C:\\Users\\RUNNER~1\\mysqlmsn' - run: npx ts-node tests/ci/DirMoveGitHubActions.ts - - - name: Upload mysqlmsn directory - if: ${{ failure() }} - uses: actions/upload-artifact@v4.3.5 - with: - name: windows-2022-${{ matrix.version-requirement }}-node${{ matrix.node-version }} - path: C:\\Users\\RUNNER~1\\mysqlmsn - compression-level: 0 - - windows-2025: - runs-on: windows-2025 - - strategy: - fail-fast: false - matrix: - #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 - version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - check-latest: true - - - name: Install packages - run: npm ci - - - name: Run tests - env: - VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run test:ci - - - name: Move MySQLMSN directory for GitHub Actions upload - if: ${{ failure() }} - env: - MOVE_MYSQLMSN_TO: 'C:\\Users\\RUNNER~1\\mysqlmsn' - run: npx ts-node tests/ci/DirMoveGitHubActions.ts - - - name: Upload mysqlmsn directory - if: ${{ failure() }} - uses: actions/upload-artifact@v4.3.5 - with: - name: windows-2025-${{ matrix.version-requirement }}-node${{ matrix.node-version }} - path: C:\\Users\\RUNNER~1\\mysqlmsn - compression-level: 0 - - windows-11-arm: - runs-on: windows-11-arm - - strategy: - fail-fast: false - matrix: - #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 - version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - check-latest: true - - - name: Install packages - run: npm ci - - - name: Run tests - env: - VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run test:ci - - - name: Move MySQLMSN directory for GitHub Actions upload - if: ${{ failure() }} - env: - MOVE_MYSQLMSN_TO: 'C:\\Users\\RUNNER~1\\mysqlmsn' - run: npx ts-node tests/ci/DirMoveGitHubActions.ts - - - name: Upload mysqlmsn directory - if: ${{ failure() }} - uses: actions/upload-artifact@v4.3.5 - with: - name: windows-11-arm-${{ matrix.version-requirement }}-node${{ matrix.node-version }} - path: C:\\Users\\RUNNER~1\\mysqlmsn - compression-level: 0 - - fedora-41-docker: - runs-on: ubuntu-${{ matrix.ubuntu-version}} - - strategy: - fail-fast: false - matrix: - #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 - version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] - ubuntu-version: [24.04, 24.04-arm] - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] - - container: fedora:41 - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - check-latest: true - - - name: Install required libraries - run: sudo dnf install libaio numactl libxcrypt-compat -y - - - name: Install packages - run: npm ci - - - name: Print available storage space - run: df -h - - - name: Run tests - env: - VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run test:ci - - - name: Upload mysqlmsn directory - if: ${{ failure() }} - uses: actions/upload-artifact@v4.3.5 - with: - name: docker-fedora-41-${{ matrix.version-requirement }}-${{ matrix.ubuntu-version}} - path: /tmp/mysqlmsn + name: node-${{ matrix.node-version }} + path: ${{ runner.os == 'Windows' && 'C:\\Users\\RUNNER~1\\mysqlmsn' || '/tmp/mysqlmsn' }} compression-level: 0 - fedora-42-docker: + fedora-docker: runs-on: ubuntu-${{ matrix.ubuntu-version}} strategy: fail-fast: false matrix: + version: [41, 42] #There is no 10.0.0 at the time of writing, but since greater than characters are not allowed in GitHub Actions artifacts names, 9.0.1 - 10.0.0 will be used instead of >9.0.0 version-requirement: ['5.7.19 - 5.7.24', '5.7.25 - 5.7.29', '5.7.30 - 5.7.34', '5.7.35 - 5.7.39', '5.7.40 - 5.7.44', '8.0.0 - 8.0.4', '8.0.4 - 8.0.13', '8.0.14 - 8.0.19', '8.0.20 - 8.0.24', '8.0.25 - 8.0.29', '8.0.30 - 8.0.34', '8.0.35 - 8.0.39', '8.0.40 - 8.3.0', '8.4.0 - 9.0.0', '9.0.1 - 10.0.0'] ubuntu-version: [24.04, 24.04-arm] - node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] - container: fedora:42 + container: fedora:${{ matrix.version }} steps: - name: Checkout uses: actions/checkout@v4 - - name: Setup Node ${{ matrix.node-version }} + - name: Setup node LTS uses: actions/setup-node@v4 with: - node-version: ${{ matrix.node-version }} + node-version: lts/* check-latest: true - name: Install required libraries @@ -525,13 +84,13 @@ jobs: - name: Run tests env: VERSION_REQUIREMENT: ${{ matrix.version-requirement }} - run: npm run test:ci + run: npm run os-compat:ci - name: Upload mysqlmsn directory if: ${{ failure() }} uses: actions/upload-artifact@v4.3.5 with: - name: docker-fedora-42-${{ matrix.version }}-${{ matrix.version-requirement }}-${{ matrix.ubuntu-version}} + name: docker-fedora-${{ matrix.version }}-${{ matrix.version-requirement }}-${{ matrix.ubuntu-version}} path: /tmp/mysqlmsn compression-level: 0 From 14833239cd6c8774b89684c9f83d318fd3f738a6 Mon Sep 17 00:00:00 2001 From: Sebastian-Webster <84299475+Sebastian-Webster@users.noreply.github.com> Date: Fri, 17 Oct 2025 22:45:17 +0800 Subject: [PATCH 4/5] stop using Windows on ARM for Node <= 18 tests (no WoA binaries for those versions) --- .github/workflows/node-compatibility.yml | 4 ++++ .github/workflows/old-node-tests.yml | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/node-compatibility.yml b/.github/workflows/node-compatibility.yml index d771d96..69d0aa2 100644 --- a/.github/workflows/node-compatibility.yml +++ b/.github/workflows/node-compatibility.yml @@ -15,6 +15,10 @@ jobs: matrix: os: [macos-14, macos-15, macos-15-intel, macos-26, ubuntu-22.04, ubuntu-24.04, windows-2022, windows-2025, ubuntu-22.04-arm, ubuntu-24.04-arm, windows-11-arm] node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x, 24.x, 25.x] + # Exclude Node 18.x on Windows on Arm because Node only provides Windows on Arm binaries for Node >= 19 + exclude: + - os: windows-11-arm + node-version: 18.x steps: - name: Checkout diff --git a/.github/workflows/old-node-tests.yml b/.github/workflows/old-node-tests.yml index 0aa8235..7804c32 100644 --- a/.github/workflows/old-node-tests.yml +++ b/.github/workflows/old-node-tests.yml @@ -14,7 +14,8 @@ jobs: fail-fast: false matrix: node-version: [16.6.0, 16.x, 17.0.0, 17.x] - os: [macos-14, macos-15, macos-15-intel, macos-26, ubuntu-22.04, ubuntu-24.04, windows-2022, windows-2025, ubuntu-22.04-arm, ubuntu-24.04-arm, windows-11-arm] + # windows-11-arm is not included here because Node only has Windows on Arm binaries for Node >= 19 + os: [macos-14, macos-15, macos-15-intel, macos-26, ubuntu-22.04, ubuntu-24.04, windows-2022, windows-2025, ubuntu-22.04-arm, ubuntu-24.04-arm] steps: - name: Checkout From 33110ffaa0b0c2a7889d30208b72e23c92918945 Mon Sep 17 00:00:00 2001 From: Sebastian-Webster <84299475+Sebastian-Webster@users.noreply.github.com> Date: Sat, 18 Oct 2025 00:08:38 +0800 Subject: [PATCH 5/5] update compression levels to 9 --- .github/workflows/node-compatibility.yml | 2 +- .github/workflows/old-node-tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/node-compatibility.yml b/.github/workflows/node-compatibility.yml index 69d0aa2..d911823 100644 --- a/.github/workflows/node-compatibility.yml +++ b/.github/workflows/node-compatibility.yml @@ -48,4 +48,4 @@ jobs: with: name: node-${{ matrix.node-version }} path: ${{ runner.os == 'Windows' && 'C:\\Users\\RUNNER~1\\mysqlmsn' || '/tmp/mysqlmsn' }} - compression-level: 0 \ No newline at end of file + compression-level: 9 \ No newline at end of file diff --git a/.github/workflows/old-node-tests.yml b/.github/workflows/old-node-tests.yml index 7804c32..e945aab 100644 --- a/.github/workflows/old-node-tests.yml +++ b/.github/workflows/old-node-tests.yml @@ -45,4 +45,4 @@ jobs: with: name: node-${{ matrix.node-version }} path: ${{ runner.os == 'Windows' && 'C:\\Users\\RUNNER~1\\mysqlmsn' || '/tmp/mysqlmsn' }} - compression-level: 0 \ No newline at end of file + compression-level: 9 \ No newline at end of file