From 77bb572fdff933f32d5ef0955556068fa58f6fd0 Mon Sep 17 00:00:00 2001 From: per1234 Date: Thu, 1 Aug 2024 13:14:06 -0700 Subject: [PATCH 1/2] Use engines.node as source of version data for actions/setup-node action The actions/setup-node GitHub Actions action is used to set up Node.js in the GitHub Actions runner machine. The action supports obtaining the Node.js version to set up from the `engines.node` field of the package.json file. This allows us to define the standardized version of Node.js for use by project contributors in a single place rather than having to maintain multiple instances of that data. --- .github/workflows/check-action-metadata-task.yml | 6 +----- .github/workflows/check-markdown-task.yml | 8 ++------ .github/workflows/check-npm-dependencies-task.yml | 8 ++------ .github/workflows/check-npm-task.yml | 8 ++------ .github/workflows/check-prettier-formatting-task.yml | 6 +----- .github/workflows/check-tsconfig-task.yml | 6 +----- .github/workflows/check-typescript-task.yml | 6 +----- .github/workflows/sync-labels-npm.yml | 6 ++---- .github/workflows/test-typescript-task.yml | 8 ++------ package-lock.json | 3 +++ package.json | 3 +++ 11 files changed, 20 insertions(+), 48 deletions(-) diff --git a/.github/workflows/check-action-metadata-task.yml b/.github/workflows/check-action-metadata-task.yml index 4a25a4d3..cf9dba87 100644 --- a/.github/workflows/check-action-metadata-task.yml +++ b/.github/workflows/check-action-metadata-task.yml @@ -1,9 +1,5 @@ name: Check Action Metadata -env: - # See: https://github.com/actions/setup-node/#readme - NODE_VERSION: 20.x - # See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows on: push: @@ -37,7 +33,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Install Task uses: arduino/setup-task@v2 diff --git a/.github/workflows/check-markdown-task.yml b/.github/workflows/check-markdown-task.yml index 835ea8eb..ee1d728e 100644 --- a/.github/workflows/check-markdown-task.yml +++ b/.github/workflows/check-markdown-task.yml @@ -1,10 +1,6 @@ # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/check-markdown-task.md name: Check Markdown -env: - # See: https://github.com/actions/setup-node/#readme - NODE_VERSION: 16.x - # See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows on: push: @@ -48,7 +44,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Initialize markdownlint-cli problem matcher uses: xt0rted/markdownlint-problem-matcher@v3 @@ -72,7 +68,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Install Task uses: arduino/setup-task@v2 diff --git a/.github/workflows/check-npm-dependencies-task.yml b/.github/workflows/check-npm-dependencies-task.yml index 10336c21..780be9b5 100644 --- a/.github/workflows/check-npm-dependencies-task.yml +++ b/.github/workflows/check-npm-dependencies-task.yml @@ -1,10 +1,6 @@ # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/check-npm-dependencies-task.md name: Check npm Dependencies -env: - # See: https://github.com/actions/setup-node/#readme - NODE_VERSION: 20.x - # See: https://docs.github.com/actions/using-workflows/events-that-trigger-workflows on: create: @@ -78,7 +74,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Install Task uses: arduino/setup-task@v2 @@ -128,7 +124,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Install Task uses: arduino/setup-task@v2 diff --git a/.github/workflows/check-npm-task.yml b/.github/workflows/check-npm-task.yml index 344f69b9..2ed70490 100644 --- a/.github/workflows/check-npm-task.yml +++ b/.github/workflows/check-npm-task.yml @@ -1,10 +1,6 @@ # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/check-npm-task.md name: Check npm -env: - # See: https://github.com/actions/setup-node/#readme - NODE_VERSION: 16.x - # See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows on: push: @@ -39,7 +35,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Install Task uses: arduino/setup-task@v2 @@ -60,7 +56,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Install Task uses: arduino/setup-task@v2 diff --git a/.github/workflows/check-prettier-formatting-task.yml b/.github/workflows/check-prettier-formatting-task.yml index 88edee61..65e7a0b7 100644 --- a/.github/workflows/check-prettier-formatting-task.yml +++ b/.github/workflows/check-prettier-formatting-task.yml @@ -1,10 +1,6 @@ # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/check-prettier-formatting-task.md name: Check Prettier Formatting -env: - # See: https://github.com/actions/setup-node/#readme - NODE_VERSION: 20.x - # See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows on: push: @@ -213,7 +209,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Install Task uses: arduino/setup-task@v2 diff --git a/.github/workflows/check-tsconfig-task.yml b/.github/workflows/check-tsconfig-task.yml index 8404e48a..576f18f2 100644 --- a/.github/workflows/check-tsconfig-task.yml +++ b/.github/workflows/check-tsconfig-task.yml @@ -1,9 +1,5 @@ name: Check TypeScript Configuration -env: - # See: https://github.com/actions/setup-node/#readme - NODE_VERSION: 16.x - # See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows on: push: @@ -45,7 +41,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Install Task uses: arduino/setup-task@v2 diff --git a/.github/workflows/check-typescript-task.yml b/.github/workflows/check-typescript-task.yml index ec606822..41556c1d 100644 --- a/.github/workflows/check-typescript-task.yml +++ b/.github/workflows/check-typescript-task.yml @@ -1,9 +1,5 @@ name: Check TypeScript -env: - # See: https://github.com/actions/setup-node/#readme - NODE_VERSION: 20.x - # See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows on: push: @@ -51,7 +47,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Install Task uses: arduino/setup-task@v2 diff --git a/.github/workflows/sync-labels-npm.yml b/.github/workflows/sync-labels-npm.yml index 458a7aa8..9d9e4921 100644 --- a/.github/workflows/sync-labels-npm.yml +++ b/.github/workflows/sync-labels-npm.yml @@ -2,8 +2,6 @@ name: Sync Labels env: - # See: https://github.com/actions/setup-node/#readme - NODE_VERSION: 16.x CONFIGURATIONS_FOLDER: .github/label-configuration-files CONFIGURATIONS_ARTIFACT: label-configuration-files @@ -38,7 +36,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Download JSON schema for labels configuration file id: download-schema @@ -132,7 +130,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Merge label configuration files run: | diff --git a/.github/workflows/test-typescript-task.yml b/.github/workflows/test-typescript-task.yml index be512728..42a344f9 100644 --- a/.github/workflows/test-typescript-task.yml +++ b/.github/workflows/test-typescript-task.yml @@ -1,9 +1,5 @@ name: Test TypeScript -env: - # See: https://github.com/actions/setup-node/#readme - NODE_VERSION: 20.x - on: push: paths: @@ -54,7 +50,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Install Task uses: arduino/setup-task@v2 @@ -75,7 +71,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: ${{ env.NODE_VERSION }} + node-version-file: package.json - name: Install Task uses: arduino/setup-task@v2 diff --git a/package-lock.json b/package-lock.json index 2e08a549..444a166c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,6 +37,9 @@ "strip-json-comments-cli": "^3.0.0", "ts-jest": "^28.0.8", "typescript": "^5.5.4" + }, + "engines": { + "node": "20.x" } }, "node_modules/@aashutoshrathi/word-wrap": { diff --git a/package.json b/package.json index 0240f39a..7804b86e 100644 --- a/package.json +++ b/package.json @@ -46,5 +46,8 @@ "strip-json-comments-cli": "^3.0.0", "ts-jest": "^28.0.8", "typescript": "^5.5.4" + }, + "engines": { + "node": "20.x" } } From a57ecf9bc4a9b87f7b1878293c90fca83c9a0ce7 Mon Sep 17 00:00:00 2001 From: per1234 Date: Thu, 1 Aug 2024 13:16:47 -0700 Subject: [PATCH 2/2] Configure npm to enforce standard project Node.js version This will produce an error if a contributor attempts to run an npm command in the project using an unsupported version of Node.js. --- .github/workflows/check-action-metadata-task.yml | 2 ++ .github/workflows/check-markdown-task.yml | 2 ++ .github/workflows/check-npm-dependencies-task.yml | 2 ++ .github/workflows/check-npm-task.yml | 2 ++ .github/workflows/check-prettier-formatting-task.yml | 2 ++ .github/workflows/check-tsconfig-task.yml | 2 ++ .github/workflows/check-typescript-task.yml | 2 ++ .github/workflows/sync-labels-npm.yml | 2 ++ .github/workflows/test-typescript-task.yml | 2 ++ .npmrc | 3 +++ 10 files changed, 21 insertions(+) create mode 100644 .npmrc diff --git a/.github/workflows/check-action-metadata-task.yml b/.github/workflows/check-action-metadata-task.yml index cf9dba87..977538cc 100644 --- a/.github/workflows/check-action-metadata-task.yml +++ b/.github/workflows/check-action-metadata-task.yml @@ -5,6 +5,7 @@ on: push: paths: - ".github/workflows/check-action-metadata-task.ya?ml" + - ".npmrc" - "action.ya?ml" - "package.json" - "package-lock.json" @@ -12,6 +13,7 @@ on: pull_request: paths: - ".github/workflows/check-action-metadata-task.ya?ml" + - ".npmrc" - "action.ya?ml" - "package.json" - "package-lock.json" diff --git a/.github/workflows/check-markdown-task.yml b/.github/workflows/check-markdown-task.yml index ee1d728e..c1d0f87b 100644 --- a/.github/workflows/check-markdown-task.yml +++ b/.github/workflows/check-markdown-task.yml @@ -7,6 +7,7 @@ on: paths: - ".github/workflows/check-markdown-task.ya?ml" - ".markdown-link-check.json" + - ".npmrc" - "package.json" - "package-lock.json" - "Taskfile.ya?ml" @@ -19,6 +20,7 @@ on: paths: - ".github/workflows/check-markdown-task.ya?ml" - ".markdown-link-check.json" + - ".npmrc" - "package.json" - "package-lock.json" - "Taskfile.ya?ml" diff --git a/.github/workflows/check-npm-dependencies-task.yml b/.github/workflows/check-npm-dependencies-task.yml index 780be9b5..9edf0fe7 100644 --- a/.github/workflows/check-npm-dependencies-task.yml +++ b/.github/workflows/check-npm-dependencies-task.yml @@ -12,6 +12,7 @@ on: - ".licensed.ya?ml" - "Taskfile.ya?ml" - "**/.gitmodules" + - "**/.npmrc" - "**/package.json" - "**/package-lock.json" pull_request: @@ -22,6 +23,7 @@ on: - ".licensed.ya?ml" - "Taskfile.ya?ml" - "**/.gitmodules" + - "**/.npmrc" - "**/package.json" - "**/package-lock.json" schedule: diff --git a/.github/workflows/check-npm-task.yml b/.github/workflows/check-npm-task.yml index 2ed70490..0d1e7991 100644 --- a/.github/workflows/check-npm-task.yml +++ b/.github/workflows/check-npm-task.yml @@ -6,12 +6,14 @@ on: push: paths: - ".github/workflows/check-npm-task.ya?ml" + - "**/.npmrc" - "**/package.json" - "**/package-lock.json" - "Taskfile.ya?ml" pull_request: paths: - ".github/workflows/check-npm-task.ya?ml" + - "**/.npmrc" - "**/package.json" - "**/package-lock.json" - "Taskfile.ya?ml" diff --git a/.github/workflows/check-prettier-formatting-task.yml b/.github/workflows/check-prettier-formatting-task.yml index 65e7a0b7..467871f3 100644 --- a/.github/workflows/check-prettier-formatting-task.yml +++ b/.github/workflows/check-prettier-formatting-task.yml @@ -7,6 +7,7 @@ on: paths: - ".github/workflows/check-prettier-formatting-task.ya?ml" - "Taskfile.ya?ml" + - "**/.npmrc" - "**/.prettierignore" - "**/.prettierrc*" # CSS @@ -103,6 +104,7 @@ on: paths: - ".github/workflows/check-prettier-formatting-task.ya?ml" - "Taskfile.ya?ml" + - "**/.npmrc" - "**/.prettierignore" - "**/.prettierrc*" # CSS diff --git a/.github/workflows/check-tsconfig-task.yml b/.github/workflows/check-tsconfig-task.yml index 576f18f2..6936611c 100644 --- a/.github/workflows/check-tsconfig-task.yml +++ b/.github/workflows/check-tsconfig-task.yml @@ -6,6 +6,7 @@ on: paths: - ".github/workflows/check-tsconfig-task.ya?ml" - "**/tsconfig*.json" + - ".npmrc" - "package.json" - "package-lock.json" - "Taskfile.ya?ml" @@ -13,6 +14,7 @@ on: paths: - ".github/workflows/check-tsconfig-task.ya?ml" - "**/tsconfig*.json" + - ".npmrc" - "package.json" - "package-lock.json" - "Taskfile.ya?ml" diff --git a/.github/workflows/check-typescript-task.yml b/.github/workflows/check-typescript-task.yml index 41556c1d..bc8f9f63 100644 --- a/.github/workflows/check-typescript-task.yml +++ b/.github/workflows/check-typescript-task.yml @@ -7,6 +7,7 @@ on: - ".github/workflows/check-typescript-task.ya?ml" - ".eslintignore" - "**/.eslintrc*" + - ".npmrc" - "package.json" - "package-lock.json" - "Taskfile.ya?ml" @@ -21,6 +22,7 @@ on: - ".github/workflows/check-typescript-task.ya?ml" - ".eslintignore" - "**/.eslintrc*" + - ".npmrc" - "package.json" - "package-lock.json" - "Taskfile.ya?ml" diff --git a/.github/workflows/sync-labels-npm.yml b/.github/workflows/sync-labels-npm.yml index 9d9e4921..b201f3f3 100644 --- a/.github/workflows/sync-labels-npm.yml +++ b/.github/workflows/sync-labels-npm.yml @@ -11,12 +11,14 @@ on: paths: - ".github/workflows/sync-labels-npm.ya?ml" - ".github/label-configuration-files/*.ya?ml" + - ".npmrc" - "package.json" - "package-lock.json" pull_request: paths: - ".github/workflows/sync-labels-npm.ya?ml" - ".github/label-configuration-files/*.ya?ml" + - ".npmrc" - "package.json" - "package-lock.json" schedule: diff --git a/.github/workflows/test-typescript-task.yml b/.github/workflows/test-typescript-task.yml index 42a344f9..8950da2f 100644 --- a/.github/workflows/test-typescript-task.yml +++ b/.github/workflows/test-typescript-task.yml @@ -4,6 +4,7 @@ on: push: paths: - ".github/workflows/test-typescript-task.ya?ml" + - ".npmrc" - "jest.config.js" - "package.json" - "package-lock.json" @@ -17,6 +18,7 @@ on: pull_request: paths: - ".github/workflows/test-typescript-task.ya?ml" + - ".npmrc" - "jest.config.js" - "package.json" - "package-lock.json" diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..2fc27b7e --- /dev/null +++ b/.npmrc @@ -0,0 +1,3 @@ +# See: https://docs.npmjs.com/cli/configuring-npm/npmrc + +engine-strict = true