mirror of
https://github.com/github/codeql-action.git
synced 2025-12-26 01:00:20 +08:00
Implement simultaneous PR checks for Node.js v20, v24.
Copied from #2006.
This commit is contained in:
12
.github/workflows/pr-checks.yml
vendored
12
.github/workflows/pr-checks.yml
vendored
@@ -20,6 +20,7 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
node-version: [20, 24]
|
||||
permissions:
|
||||
contents: read
|
||||
security-events: write # needed to upload ESLint results
|
||||
@@ -36,7 +37,7 @@ jobs:
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v5
|
||||
with:
|
||||
node-version: 24
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
|
||||
- name: Set up Python
|
||||
@@ -51,7 +52,12 @@ jobs:
|
||||
npm config set script-shell bash
|
||||
npm ci
|
||||
|
||||
- name: Verify compiled JS up to date
|
||||
- name: Verify compiled JS up to date (Node.js 20)
|
||||
if: matrix.node-version == 20
|
||||
run: .github/workflows/script/check-js-20.sh
|
||||
|
||||
- name: Verify compiled JS up to date (Node.js 24)
|
||||
if: matrix.node-version == 24
|
||||
run: .github/workflows/script/check-js.sh
|
||||
|
||||
- name: Verify PR checks up to date
|
||||
@@ -73,7 +79,7 @@ jobs:
|
||||
|
||||
- name: Upload sarif
|
||||
uses: github/codeql-action/upload-sarif@v3
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
if: matrix.os == 'ubuntu-latest' && matrix.node-version == 24
|
||||
with:
|
||||
sarif_file: eslint.sarif
|
||||
category: eslint
|
||||
|
||||
37
.github/workflows/script/check-js-20.sh
vendored
Executable file
37
.github/workflows/script/check-js-20.sh
vendored
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
set -eu
|
||||
|
||||
# Change @types/node to v20 temporarily to check that the generated JS files are correct.
|
||||
contents=$(jq '.devDependencies."@types/node" = "^20.0.0"' package.json)
|
||||
echo "${contents}" > package.json
|
||||
|
||||
npm install
|
||||
|
||||
if [ ! -z "$(git status --porcelain)" ]; then
|
||||
git config --global user.email "github-actions@github.com"
|
||||
git config --global user.name "github-actions[bot]"
|
||||
# The period in `git add --all .` ensures that we stage deleted files too.
|
||||
git add --all .
|
||||
git commit -m "Use @types/node v20"
|
||||
fi
|
||||
|
||||
# Wipe the lib directory in case there are extra unnecessary files in there
|
||||
rm -rf lib
|
||||
|
||||
# Generate the JavaScript files
|
||||
npm run-script build
|
||||
|
||||
# Check that repo is still clean.
|
||||
# The downgrade of @types/node means that we expect certain changes to the generated JS files.
|
||||
# Therefore, we should ignore these changes to @types/node and check for outstanding changes.
|
||||
if [[ $(git diff | grep --perl-regexp '^-(?!--)' | grep --count --invert-match --perl-regexp '"@types/node": "\^24') -gt 0 || \
|
||||
$(git diff | grep --perl-regexp '^\+(?!\+\+)' | grep --count --invert-match --perl-regexp '"@types/node": "\^20') -gt 0 ]]
|
||||
then
|
||||
>&2 echo "Failed: JavaScript files are not up to date. Run 'rm -rf lib && npm run-script build' to update"
|
||||
git diff
|
||||
exit 1
|
||||
fi
|
||||
echo "Success: JavaScript files are up to date"
|
||||
|
||||
# Clean up changes to package.json, package-lock.json, and lib/*.js.
|
||||
git reset --hard HEAD~1
|
||||
Reference in New Issue
Block a user