Skip to content

Replace Appveyor windows testing with GHA #39

Replace Appveyor windows testing with GHA

Replace Appveyor windows testing with GHA #39

name: Experimental CI -- CHANGE ME!
on:
push:
branches:
- master
- develop
- '4.x'
- '5.x'
paths-ignore:
- '*.md'
pull_request:
paths-ignore:
- '*.md'
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@v4
- name: Setup Node.js {{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: 'lts/*'
persist-credentials: false
- name: Install dependencies
run: npm install --ignore-scripts --only=dev
- name: Run lint
run: npm run lint
lts-coverage:
name: LTS Code Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 'lts/*'
persist-credentials: false
- name: Install dependencies
run: npm install --ignore-scripts --only=dev
- name: Collect coverage
run: npm run test-ci
- name: Upload code coverage report to Github
uses: actions/upload-artifact@v3
with:
name: lts-coverage
path: ./coverage
retention-days: 1
- name: Upload coverage report to Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
flag-name: lts-experimental
test:
name: Run tests
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
node-version:
- "0.10"
- "0.12"
- "4"
- "5"
- "6"
- "7"
- "8"
- "9"
- "10"
- "11"
- "12"
- "13"
- "14"
- "15"
- "16"
- "17"
- "18"
- "19"
- "20"
- "21"
- "22"
# Use supported versions of our testing tools under older versions of Node
include:
- node-version: "0.10"
npm-i: "[email protected] [email protected] [email protected]"
npm-i-g: "[email protected]"
- node-version: "0.12"
npm-i: "[email protected] [email protected] [email protected]"
npm-i-g: "[email protected]"
- node-version: "4"
npm-i: "[email protected] [email protected] [email protected]"
- node-version: "5"
npm-i: "[email protected] [email protected] [email protected]"
- node-version: "6"
npm-i: "[email protected] [email protected] [email protected]"
- node-version: "7"
npm-i: "[email protected] [email protected] [email protected]"
- node-version: "8"
npm-i: "[email protected] [email protected]"
- node-version: "9"
npm-i: "[email protected] [email protected]"
- node-version: "10"
npm-i: "[email protected]"
- node-version: "11"
npm-i: "[email protected]"
- node-version: "12"
npm-i: "[email protected]"
- node-version: "13"
npm-i: "[email protected]"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
# fixes https://github.com/npm/cli/issues/681
- name: Node v5 npm install fix
if: ${{matrix.node-version == '5'}}
run: npm install -g [email protected]
# Npm isn't being installed on windows w/ setup-node for
# 0.10 and 0.12, which will end up choking when the cli uses es6
- name: Install Globals if needed
if: >-
${{
(matrix.node-version == '0.10' || matrix.node-version == '0.12') &&
matrix.os == 'windows-latest' &&
matrix.npm-i-g != ''
}}
run: npm install -g ${{ matrix.npm-i-g }}
- name: Configure npm loglevel
run: |
npm config set loglevel error
shell: bash
- name: Install dependencies
run: npm install
- name: Install Node version specific dev deps
if: ${{ matrix.npm-i != '' }}
run: npm install --save-dev ${{ matrix.npm-i }}
- name: Remove non-test dependencies
run: npm rm --silent --save-dev connect-redis
- 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
cp coverage/lcov.info "coverage/${{ matrix.node-version }}.lcov"
- name: Collect code coverage
run: |
mv ./coverage "./${{ matrix.node-version }}"
mkdir ./coverage
mv "./${{ matrix.node-version }}" "./coverage/${{ matrix.node-version }}"
- name: Upload code coverage
uses: actions/upload-artifact@v3
with:
flag: experimental
name: coverage
path: ./coverage
retention-days: 1
coverage:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install lcov
shell: bash
run: sudo apt-get -y install lcov
- name: Collect coverage reports
uses: actions/download-artifact@v3
with:
name: coverage
path: ./coverage
- name: Merge coverage reports
shell: bash
run: find ./coverage -name lcov.info -exec printf '-a %q\n' {} \; | xargs lcov -o ./coverage/lcov.info
- name: Upload coverage report
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}