name: Test on: push: branches: - master # renovate/** branches are generated by https://github.com/apps/renovate - renovate/** pull_request: types: - opened - synchronize permissions: contents: read # to fetch code (actions/checkout) env: FORCE_COLOR: 1 NPM_CONFIG_COLOR: always jobs: test_matrix: strategy: matrix: node-version: - 18.17.0 - 20.6.1 - 20 runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 - run: git config --global user.name github-actions - run: git config --global user.email github-actions@github.com - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3 with: node-version: ${{ matrix.node-version }} cache: npm - run: npm clean-install - name: Ensure dependencies are compatible with the version of node run: npx ls-engines - run: npm run test:ci # separate job to set as required in branch protection, # as the build names above change each time Node versions change test: runs-on: ubuntu-latest needs: test_matrix if: always() steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 - uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3 with: node-version: lts/* cache: npm - run: npm clean-install - run: npm audit signatures - run: npm run lint - name: All matrix versions passed if: ${{ !(contains(needs.*.result, 'failure')) }} run: exit 0 - name: Some matrix version failed if: ${{ contains(needs.*.result, 'failure') }} run: exit 1