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: # verify against ranges defined as supported in engines.node test_matrix: strategy: matrix: node-version: - 18.17.0 - 20.6.1 - 20 runs-on: ubuntu-latest timeout-minutes: 5 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 - run: npm audit signatures - run: npm test # verify against the node version defined for development in the .nvmrc test_dev: runs-on: ubuntu-latest timeout-minutes: 5 steps: - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 - run: git config --global user.name github-actions - run: git config --global user.email github-actions@github.com - name: Use Node.js from .nvmrc uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3 with: node-version-file: .nvmrc cache: npm - run: npm clean-install - run: npm audit signatures - run: npm test # 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_dev - 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 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