From 99999ca501f3e4d997a812652f3b2174d47689d8 Mon Sep 17 00:00:00 2001 From: Anton Gilgur Date: Fri, 10 Jun 2022 22:05:59 -0400 Subject: [PATCH 1/2] ci: migrate to GitHub Actions w/ matrix - Travis CI is only _pseudo_-free after the .org -> .com merge - c.f. https://travis-ci.community/t/org-com-migration-unexpectedly-comes-with-a-plan-change-for-oss-what-exactly-is-the-new-deal/10567 - and honestly, has glitches occasionally where my builds don't run or I can't manually re-run either - GH Actions are _actually_ free for OSS / public repos - and also offer a decent level of composability that's resulted in a huge surge in reusable community Actions (vs. CircleCI orbs etc haven't had nearly as much adoption) - and I've had a mostly great experience on them so far as well - also add a matrix for all Node LTS and all OSes - and upgrade to the Codecov GH Action, since the bash uploader was deprecated (https://about.codecov.io/blog/introducing-codecovs-new-uploader/) - this is basically a mix of the Actions I helped set-up in rpt2's repo and the TSDX templates: - https://github.com/ezolenko/rollup-plugin-typescript2/blob/03cfb048adcf39de56bd4566dc9a7300534a3cc1/.github/workflows/nodejs.yml - https://github.com/jaredpalmer/tsdx/blob/2d7981b00b2bf7363a3eeff44ff5ff698ba58c8c/templates/basic/.github/workflows/main.yml - plus upgrades to all the Actions, for instance, newer `setup-node` now has caching built-in --- .github/workflows/ci.yml | 34 ++++++++++++++++++++++++++++++++++ .travis.yml | 12 ------------ 2 files changed, 34 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b564bac --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,34 @@ +name: CI +on: [push] +jobs: + ci: + name: CI - Node ${{ matrix.node-version }}, ${{ matrix.os }} + + runs-on: ${{ matrix.os }} + strategy: + matrix: + node-version: [14.x, 16.x, 18.x] # LTS Node: https://nodejs.org/en/about/releases/ + os: [ubuntu-latest, windows-latest, macOS-latest] + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + - name: Setup Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - name: Install + run: npm ci + + - name: Typecheck + run: npm run tsc + - name: Lint + run: npm run lint + - name: Build + run: npm run build + + - name: Test w/ coverage report + run: npm run test:coverage + - name: Upload coverage report to Codecov + uses: codecov/codecov-action@v2 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 6eb882a..0000000 --- a/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: node_js -# default is the very old 0.10.48; use oldest LTS instead -node_js: 12 - -before_script: - - npm run lint - - npm run tsc -script: npm test -- --coverage -after_script: - # upload coverage reports to CodeCov - - bash <(curl -s https://codecov.io/bash) - - npm run test:pub From 6888bf240c7025b9909f4180b00078557ddcbc61 Mon Sep 17 00:00:00 2001 From: Anton Gilgur Date: Fri, 10 Jun 2022 22:28:55 -0400 Subject: [PATCH 2/2] fix(ci): remove Node 18 due to node-canvas installation issues - per the in-line comment, there are some upstream issues in node-canvas that is causing installation to fail on Node 18 - made a TODO to add Node 18 back to the matrix once it's properly supported upstream --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b564bac..fc983b1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,8 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - node-version: [14.x, 16.x, 18.x] # LTS Node: https://nodejs.org/en/about/releases/ + # TODO: add back Node 18 once node-canvas is properly supported: https://github.com/Automattic/node-canvas/issues/2025 + node-version: [14.x, 16.x] # LTS Node: https://nodejs.org/en/about/releases/ os: [ubuntu-latest, windows-latest, macOS-latest] steps: