name: Node CI on: pull_request: branches: - '*' push: branches: - release-next - latest workflow_dispatch: jobs: lint: runs-on: ubuntu-latest steps: # Checkout the npm/cli repo - uses: actions/checkout@v2 - name: Use Node.js 14.x uses: actions/setup-node@v2 with: node-version: 14.x cache: npm - name: Install dependencies run: | node ./bin/npm-cli.js install --ignore-scripts --no-audit node ./bin/npm-cli.js rebuild - name: Run linting run: node ./bin/npm-cli.js run posttest env: DEPLOY_VERSION: testing check_docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Use Node.js 14.x uses: actions/setup-node@v2 with: node-version: 14.x cache: npm - name: Install dependencies run: | node ./bin/npm-cli.js install --ignore-scripts --no-audit - name: Rebuild the docs run: make freshdocs - name: Git should not be dirty run: node scripts/git-dirty.js licenses: runs-on: ubuntu-latest steps: # Checkout the npm/cli repo - uses: actions/checkout@v2 - name: Use Node.js 14.x uses: actions/setup-node@v2 with: node-version: 14.x cache: npm - name: Install dependencies run: | node ./bin/npm-cli.js install --ignore-scripts --no-audit node ./bin/npm-cli.js rebuild - name: Validate licenses run: node ./bin/npm-cli.js run licenses smoke-tests: strategy: fail-fast: false matrix: node-version: [12.x, 14.x, 16.x] platform: - os: ubuntu-latest shell: bash - os: macos-latest shell: bash - os: windows-latest shell: bash - os: windows-latest shell: powershell runs-on: ${{ matrix.platform.os }} defaults: run: shell: ${{ matrix.platform.shell }} steps: # Checkout the npm/cli repo - uses: actions/checkout@v2 # Installs the specific version of Node.js - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} cache: npm # Run the installer script - name: Install dependencies run: | node ./bin/npm-cli.js install --ignore-scripts --no-audit node ./bin/npm-cli.js rebuild # Run the smoke tests - name: Run Smoke tests run: node ./bin/npm-cli.js run --ignore-scripts smoke-tests -- --no-check-coverage -t600 -Rbase -c env: DEPLOY_VERSION: testing test: strategy: fail-fast: false matrix: node-version: ['12.13.0', 12.x, '14.15.0', 14.x, '16.0.0', 16.x] platform: - os: ubuntu-latest shell: bash - os: macos-latest shell: bash - os: windows-latest shell: bash - os: windows-latest shell: powershell runs-on: ${{ matrix.platform.os }} defaults: run: shell: ${{ matrix.platform.shell }} steps: # Checkout the npm/cli repo - uses: actions/checkout@v2 # Installs the specific version of Node.js - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} cache: npm # Run the installer script - name: Install dependencies run: | node ./bin/npm-cli.js install --ignore-scripts --no-audit node ./bin/npm-cli.js rebuild # Run the tests, but not if we're just gonna do coveralls later anyway - name: Run Tap tests if: matrix.platform.os != 'ubuntu-latest' || matrix.node-version != '16.x' run: node ./bin/npm-cli.js run --ignore-scripts test -- -t600 -Rbase -c env: DEPLOY_VERSION: testing # Run coverage check - name: Run coverage report if: matrix.platform.os == 'ubuntu-latest' && matrix.node-version == '16.x' # turn off --check-coverage until 100%, so CI failure is relevant run: node ./bin/npm-cli.js run check-coverage -- -t600 --no-check-coverage -Rbase -c env: DEPLOY_VERSION: testing COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_OPTIONAL_TOKEN }} # - name: Run sudo tests on Linux # if: matrix.os == 'ubuntu-latest' # run: sudo PATH=$PATH $(which node) . test -- --coverage --timeout 600