name: NodeJS CI with NPM

on: [push, pull_request]

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        node_version: ['6', '8', '10', '12', '14', '16', '18', '20']
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Setup NodeJS
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node_version }}
      - name: Setup dependencies
        run: |
          npm install
          # nyc@14 support nodejs >= 6
          npm install -g nyc@14
      - name: Run cases
        run: |
          npm run check-type
          nyc --reporter=lcov npm test
        env:
          QINIU_ACCESS_KEY: ${{ secrets.QINIU_ACCESS_KEY }}
          QINIU_SECRET_KEY: ${{ secrets.QINIU_SECRET_KEY }}
          QINIU_TEST_BUCKET: ${{ secrets.QINIU_TEST_BUCKET }}
          QINIU_TEST_DOMAIN: ${{ secrets.QINIU_TEST_DOMAIN }}
      - name: Upload coverage reports
        uses: codecov/codecov-action@v4
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
