Skip to content

📜 ci: Consolidate Locize Workflows for Missing Keys & PR Creation #29

📜 ci: Consolidate Locize Workflows for Missing Keys & PR Creation

📜 ci: Consolidate Locize Workflows for Missing Keys & PR Creation #29

Workflow file for this run

name: ESLint Code Quality Checks
on:
pull_request:
branches:
- main
- dev
- release/*
jobs:
eslint_checks:
name: Run ESLint Linting
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write
actions: read
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Install dependencies
run: npm ci
# Use a paths filter (v3) to detect changes in JavaScript/TypeScript files,
# but only consider files that are added or modified (ignoring deleted files).
- name: Filter changed files for ESLint
id: file_filter
uses: dorny/paths-filter@v3
with:
filters: |
eslint:
- added|modified: '**/*.js'
- added|modified: '**/*.jsx'
- added|modified: '**/*.ts'
- added|modified: '**/*.tsx'
# Run ESLint only if relevant files have been added or modified.
- name: Run ESLint on changed files
if: steps.file_filter.outputs.eslint == 'true'
env:
SARIF_ESLINT_IGNORE_SUPPRESSED: "true"
run: |
# Extract the base commit SHA from the pull_request event payload.
BASE_SHA=$(jq --raw-output .pull_request.base.sha "$GITHUB_EVENT_PATH")
echo "Base commit SHA: $BASE_SHA"
# List files changed between the base commit and current HEAD,
# but only include files that are not deleted (ACMRTUXB: A, C, M, R, T, U, X, B).
CHANGED_FILES=$(git diff --name-only --diff-filter=ACMRTUXB "$BASE_SHA" HEAD | grep -E '\.(js|jsx|ts|tsx)$')
echo "Files to lint:"
echo "$CHANGED_FILES"
# Run ESLint on the changed files.
npx eslint --no-error-on-unmatched-pattern \
--config eslint.config.mjs \
--format @microsoft/eslint-formatter-sarif \
--output-file eslint-results.sarif $CHANGED_FILES || true
# If no JavaScript/TypeScript files were added or modified,
# create a valid (non-empty) SARIF file containing one run.
- name: Create empty SARIF results file
if: steps.file_filter.outputs.eslint != 'true'
run: |
cat << 'EOF' > eslint-results.sarif
{
"version": "2.1.0",
"$schema": "https://json.schemastore.org/sarif-2.1.0.json",
"runs": [
{
"tool": {
"driver": {
"name": "ESLint",
"informationUri": "https://eslint.org",
"version": "0.0.0",
"rules": []
}
},
"results": []
}
]
}
EOF
- name: Upload analysis results to GitHub
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: eslint-results.sarif
wait-for-processing: true