118 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: ci
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     branches:
 | |
|       - master
 | |
|       - develop
 | |
|       - '4.x'
 | |
|       - '5.x'
 | |
|       - '5.0'
 | |
|     paths-ignore:
 | |
|       - '*.md'
 | |
|   pull_request:
 | |
|   workflow_dispatch:
 | |
| 
 | |
| permissions:
 | |
|   contents: read
 | |
| 
 | |
| # Cancel in progress workflows
 | |
| # in the scenario where we already had a run going for that PR/branch/tag but then triggered a new run
 | |
| concurrency:
 | |
|   group: "${{ github.workflow }} ✨ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}"
 | |
|   cancel-in-progress: true
 | |
| 
 | |
| jobs:
 | |
|   lint:
 | |
|     name: Lint
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
 | |
|         with:
 | |
|           persist-credentials: false
 | |
|       - name: Setup Node.js
 | |
|         uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
 | |
|         with:
 | |
|           node-version: 'lts/*'
 | |
| 
 | |
|       - name: Install dependencies
 | |
|         run: npm install --ignore-scripts --include=dev
 | |
| 
 | |
|       - name: Run lint
 | |
|         run: npm run lint
 | |
| 
 | |
|   test:
 | |
|     strategy:
 | |
|       fail-fast: false
 | |
|       matrix:
 | |
|         os: [ubuntu-latest, windows-latest]
 | |
|         node-version: [18, 19, 20, 21, 22, 23, 24, 25]
 | |
|         # Node.js release schedule: https://nodejs.org/en/about/releases/
 | |
| 
 | |
|     name: Node.js ${{ matrix.node-version }} - ${{matrix.os}}
 | |
| 
 | |
|     runs-on: ${{ matrix.os }}
 | |
|     steps:
 | |
|       - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
 | |
|         with:
 | |
|           persist-credentials: false
 | |
| 
 | |
|       - name: Setup Node.js ${{ matrix.node-version }}
 | |
|         uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
 | |
|         with:
 | |
|           node-version: ${{ matrix.node-version }}
 | |
| 
 | |
|       - name: Configure npm loglevel
 | |
|         run: |
 | |
|           npm config set loglevel error          
 | |
|         shell: bash
 | |
| 
 | |
|       - name: Install dependencies
 | |
|         run: npm install
 | |
| 
 | |
|       - name: Output Node and NPM versions
 | |
|         run: |
 | |
|           echo "Node.js version: $(node -v)"
 | |
|           echo "NPM version: $(npm -v)"          
 | |
| 
 | |
|       - name: Run tests
 | |
|         shell: bash
 | |
|         run: npm run test-ci
 | |
| 
 | |
|       - name: Upload code coverage
 | |
|         uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
 | |
|         with:
 | |
|           name: coverage-node-${{ matrix.node-version }}-${{ matrix.os }}
 | |
|           path: ./coverage/lcov.info
 | |
|           retention-days: 1
 | |
| 
 | |
|   coverage:
 | |
|     needs: test
 | |
|     runs-on: ubuntu-latest
 | |
|     permissions:
 | |
|       contents: read
 | |
|       checks: write
 | |
|     steps:
 | |
|       - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
 | |
|         with:
 | |
|           persist-credentials: false
 | |
| 
 | |
|       - name: Install lcov
 | |
|         shell: bash
 | |
|         run: sudo apt-get -y install lcov
 | |
| 
 | |
|       - name: Collect coverage reports
 | |
|         uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
 | |
|         with:
 | |
|           path: ./coverage
 | |
|           pattern: coverage-node-*
 | |
| 
 | |
|       - name: Merge coverage reports
 | |
|         shell: bash
 | |
|         run: find ./coverage -name lcov.info -exec printf '-a %q\n' {} \; | xargs lcov -o ./lcov.info
 | |
| 
 | |
|       - name: Upload coverage report
 | |
|         uses: coverallsapp/github-action@648a8eb78e6d50909eff900e4ec85cab4524a45b # v2.3.6
 | |
|         with:
 | |
|           file: ./lcov.info
 |