From 4763c36274c5881a2d141ce9f2b17b7d1d95e8cd Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Wed, 12 Oct 2022 13:13:13 -0700 Subject: [PATCH] [actions] add reusable workflows - remove ubuntu tests from existing workflow, since they're covered by the new ones. --- .github/workflows/node-aught.yml | 21 +++++ .github/workflows/node-pretest.yml | 10 +++ .github/workflows/node-tens.yml | 21 +++++ .github/workflows/nodejs.yml | 103 ++++++++++++++++++---- .github/workflows/rebase.yml | 22 +++++ .github/workflows/require-allow-edits.yml | 18 ++++ 6 files changed, 180 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/node-aught.yml create mode 100644 .github/workflows/node-pretest.yml create mode 100644 .github/workflows/node-tens.yml create mode 100644 .github/workflows/rebase.yml create mode 100644 .github/workflows/require-allow-edits.yml diff --git a/.github/workflows/node-aught.yml b/.github/workflows/node-aught.yml new file mode 100644 index 0000000..624596f --- /dev/null +++ b/.github/workflows/node-aught.yml @@ -0,0 +1,21 @@ +name: 'Tests: node.js < 10' + +on: [pull_request, push] + +permissions: + contents: read + +jobs: + tests: + uses: ljharb/actions/.github/workflows/node.yml@main + with: + range: '< 10' + type: minors + command: npm run tests-only + + node: + name: 'node < 10' + needs: [tests] + runs-on: ubuntu-latest + steps: + - run: 'echo tests completed' diff --git a/.github/workflows/node-pretest.yml b/.github/workflows/node-pretest.yml new file mode 100644 index 0000000..88d49f9 --- /dev/null +++ b/.github/workflows/node-pretest.yml @@ -0,0 +1,10 @@ +name: 'Tests: pretest/posttest' + +on: [pull_request, push] + +permissions: + contents: read + +jobs: + tests: + uses: ljharb/actions/.github/workflows/pretest.yml@main diff --git a/.github/workflows/node-tens.yml b/.github/workflows/node-tens.yml new file mode 100644 index 0000000..ce8d325 --- /dev/null +++ b/.github/workflows/node-tens.yml @@ -0,0 +1,21 @@ +name: 'Tests: node.js >= 10' + +on: [pull_request, push] + +permissions: + contents: read + +jobs: + tests: + uses: ljharb/actions/.github/workflows/node.yml@main + with: + range: '>= 10' + type: minors + command: npm run tests-only + + node: + name: 'node >= 10' + needs: [tests] + runs-on: ubuntu-latest + steps: + - run: 'echo tests completed' diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index fbbf5f4..211920c 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -3,33 +3,106 @@ name: Node CI on: [push, pull_request] jobs: - test: + matrix: + runs-on: ubuntu-latest + outputs: + latest: ${{ steps.set-matrix.outputs.requireds }} + nonlatest: ${{ steps.set-matrix.outputs.optionals }} + steps: + - uses: ljharb/actions/node/matrix@main + id: set-matrix + with: + versionsAsRoot: true + type: majors + preset: ">= 0.8" + + latest: + needs: [matrix] + name: 'latest majors' strategy: + fail-fast: false matrix: - os: [ubuntu-latest, windows-latest, macos-latest] - node-version: ['0.8', '0.10', '0.12', '4.x', '6.x', '8.x', '10.x', '12.x'] + os: [windows-latest, macos-latest] + node-version: ${{ fromJson(needs.matrix.outputs.latest) }} exclude: + - os: windows-latest + node-version: '3' + - os: windows-latest + node-version: '2' + - os: windows-latest + node-version: '1' - os: windows-latest node-version: '0.8' runs-on: ${{matrix.os}} steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 + + - uses: ljharb/actions/node/install@main + name: 'nvm install ${{ matrix.node-version }} && npm install' + with: + node-version: ${{ matrix.node-version }} + skip-ls-check: true + if: matrix.os != 'windows-latest' + - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - - name: Disable strict SSL checks - uses: allenevans/set-env@v1.0.0 + if: matrix.os == 'windows-latest' + + - run: npm install + env: + NPM_CONFIG_STRICT_SSL: false + if: matrix.os == 'windows-latest' + + - run: npm run tests-only + - uses: codecov/codecov-action@v3 + + nonlatest: + needs: [matrix, latest] + name: 'non-latest majors' + continue-on-error: true + if: ${{ needs.matrix.outputs.nonlatest != '[]' && (!github.head_ref || !startsWith(github.head_ref, 'renovate')) }} + strategy: + fail-fast: false + matrix: + os: [windows-latest, macos-latest] + node-version: ${{ fromJson(needs.matrix.outputs.nonlatest) }} + exclude: + - os: windows-latest + node-version: '0.8' + + runs-on: ${{matrix.os}} + + steps: + - uses: actions/checkout@v3 + + - uses: ljharb/actions/node/install@main + name: 'nvm install ${{ matrix.node-version }} && npm install' with: - NPM_CONFIG_STRICT_SSL: 'false' - if: matrix.node-version == '0.8' - - name: Upgrade npm to latest available version - run: | - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.1/install.sh | bash - source $HOME/.nvm/nvm.sh - nvm install-latest-npm + node-version: ${{ matrix.node-version }} + skip-ls-check: true if: matrix.os != 'windows-latest' + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + if: matrix.os == 'windows-latest' + - run: npm install - - run: npm test + env: + NPM_CONFIG_STRICT_SSL: false + if: matrix.os == 'windows-latest' + + - run: npm run tests-only + - uses: codecov/codecov-action@v3 + + node: + name: 'node majors, windows/mac' + needs: [latest, nonlatest] + runs-on: ubuntu-latest + steps: + - run: 'echo tests completed' \ No newline at end of file diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml new file mode 100644 index 0000000..1dea349 --- /dev/null +++ b/.github/workflows/rebase.yml @@ -0,0 +1,22 @@ +name: Automatic Rebase + +on: [pull_request_target] + +permissions: + contents: read + +jobs: + _: + permissions: + contents: write # for ljharb/rebase to push code to rebase + pull-requests: read # for ljharb/rebase to get info about PR + + name: "Automatic Rebase" + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - uses: ljharb/rebase@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/require-allow-edits.yml b/.github/workflows/require-allow-edits.yml new file mode 100644 index 0000000..a685b8a --- /dev/null +++ b/.github/workflows/require-allow-edits.yml @@ -0,0 +1,18 @@ +name: Require “Allow Edits” + +on: [pull_request_target] + +permissions: + contents: read + +jobs: + _: + permissions: + pull-requests: read # for ljharb/require-allow-edits to check 'allow edits' on PR + + name: "Require “Allow Edits”" + + runs-on: ubuntu-latest + + steps: + - uses: ljharb/require-allow-edits@main