Backport #2540 to 8.16 #3880
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Node CI | |
on: | |
pull_request: {} | |
jobs: | |
paths-filter: | |
name: Detect files changed | |
runs-on: ubuntu-latest | |
outputs: | |
src-only: "${{ steps.changes.outputs.src-only }}" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: dorny/paths-filter/@v3.0.2 | |
id: changes | |
with: | |
filters: | | |
src-only: | |
- '!(**/*.{md,asciidoc,txt}|*.{md,asciidoc,txt}|{docs,.buildkite,scripts}/**/*|catalog-info.yaml)' | |
- '.github/workflows/**' | |
test: | |
name: Test | |
runs-on: ${{ matrix.os }} | |
needs: paths-filter | |
# only run if code relevant to unit tests was changed | |
if: needs.paths-filter.outputs.src-only == 'true' | |
strategy: | |
fail-fast: false | |
matrix: | |
node-version: [18.x, 20.x, 22.x, 23.x] | |
os: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Install | |
run: | | |
npm install | |
- name: Lint | |
run: | | |
npm run lint | |
- name: Unit test | |
run: | | |
npm run test:unit | |
- name: ECMAScript module test | |
run: | | |
npm run test:esm | |
license: | |
name: License check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 22.x | |
- name: Install | |
run: | | |
npm install | |
- name: License checker | |
run: | | |
npm run license-checker | |
test-bun: | |
name: Test Bun | |
runs-on: ${{ matrix.os }} | |
needs: paths-filter | |
# only run if code relevant to unit tests was changed | |
if: needs.paths-filter.outputs.src-only == 'true' | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macOS-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Use Bun | |
uses: oven-sh/setup-bun@v2 | |
- name: Install | |
run: | | |
bun install | |
- name: Lint | |
run: | | |
bun run lint | |
- name: Unit test | |
run: | | |
bun run test:unit-bun | |
- name: ECMAScript module test | |
run: | | |
bun run test:esm | |
auto-approve: | |
name: Auto-approve | |
needs: [test, license] | |
runs-on: ubuntu-latest | |
permissions: | |
pull-requests: write | |
if: github.actor == 'elasticmachine' | |
steps: | |
- uses: hmarr/auto-approve-action@v4 |