📜 ci: Consolidate Locize Workflows for Missing Keys & PR Creation #29
Workflow file for this run
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
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 |