Node CI #882
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# For details of what checks are run for PRs please refer below | |
# docs: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions | |
name: Node CI | |
on: | |
push: | |
branches: [ "main", "master", "next" ] | |
tags: [ "v*" ] | |
pull_request: | |
workflow_dispatch: | |
schedule: | |
- # dependencies are intended to be not pinned | |
# test every night, if the setup still works | |
cron: '42 23 * * *' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
# https://nodejs.dev/en/about/releases/ | |
NODE_ACTIVE_LTS: "20" | |
## As this project is a meta-package, there are no functionalities nor tests. | |
## So the only responsibility that must be assured is: this project can be installed under all circumstances. | |
jobs: | |
test-npm-install: | |
name: NPM install (node${{ matrix.node-version }}, ${{ matrix.os }}) | |
timeout-minutes: 5 | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
- windows-latest | |
- macos-13 # macos-latest has issues with node14 | |
node-version: | |
# action based on https://github.com/actions/node-versions/releases | |
# see also: https://nodejs.org/en/about/releases/ | |
- "22" # Current | |
- "20" # Active LTS | |
- "18" | |
- "16" | |
- "14" | |
steps: | |
- name: Checkout | |
# see https://github.com/actions/checkout | |
uses: actions/checkout@v4 | |
- name: Setup Node.js ${{ matrix.node-version }} | |
# see https://github.com/actions/setup-node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: install project | |
run: > | |
npm install | |
--no-audit | |
--no-package-lock | |
--verbose | |
# proven: the package can be installed. that's enough for a meta-package | |
test-yarn-install: | |
name: YARN install (node${{ matrix.node-version }}, ${{ matrix.os }}) | |
timeout-minutes: 5 | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
- windows-latest | |
- macos-13 # macos-latest has issues with node14 | |
node-version: | |
# action based on https://github.com/actions/node-versions/releases | |
# see also: https://nodejs.org/en/about/releases/ | |
- "22" # Current | |
- "20" # Active LTS | |
- "18" | |
- "16" | |
- "14" | |
steps: | |
- name: Checkout | |
## see https://github.com/actions/checkout | |
uses: actions/checkout@v4 | |
- name: Setup Node.js ${{ matrix.node-version }} | |
# see https://github.com/actions/setup-node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: install project | |
run: > | |
yarn install | |
--inline-builds | |
# proven: the package can be installed. that's enough for a meta-package | |
test-pnpm-install: | |
name: PNPM install (node${{ matrix.node-version }}, ${{ matrix.os }}) | |
timeout-minutes: 5 | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
- windows-latest | |
- macos-latest | |
node-version: | |
# action based on https://github.com/actions/node-versions/releases | |
# see also: https://nodejs.org/en/about/releases/ | |
- "22" # Current | |
- "20" # Active LTS | |
- "18" | |
pnpm-version: [ "latest" ] | |
include: | |
- os: "ubuntu-latest" | |
node-version: "16" | |
pnpm-version: "latest-8" # see https://www.npmjs.com/package/pnpm/?activeTab=versions | |
- os: "ubuntu-latest" | |
node-version: "14" | |
pnpm-version: "latest-7" # see https://www.npmjs.com/package/pnpm/?activeTab=versions | |
steps: | |
- name: Checkout | |
# see https://github.com/actions/checkout | |
uses: actions/checkout@v4 | |
- name: Setup Node.js ${{ matrix.node-version }} | |
# see https://github.com/actions/setup-node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: setup pnpm | |
## see https://github.com/pnpm/action-setup | |
uses: pnpm/[email protected] | |
with: | |
version: ${{ matrix.pnpm-version }} | |
- name: install project | |
run: > | |
pnpm install | |
--no-lockfile | |
--verbose | |
# proven: the package can be installed. that's enough for a meta-package |