Skip to content

Merge pull request #191 from Mosas2000/refactor/split-large-components #14

Merge pull request #191 from Mosas2000/refactor/split-large-components

Merge pull request #191 from Mosas2000/refactor/split-large-components #14

name: ESLint Performance Monitor
on:
pull_request:
paths:
- 'frontend/**/*.ts'
- 'frontend/**/*.tsx'
- 'frontend/eslint.config.js'
- 'frontend/package.json'
push:
branches:
- main
paths:
- 'frontend/**/*.ts'
- 'frontend/**/*.tsx'
- 'frontend/eslint.config.js'
- 'frontend/package.json'
jobs:
lint-performance:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: frontend/package-lock.json
- name: Install dependencies
working-directory: frontend
run: npm ci
- name: Restore ESLint cache
uses: actions/cache@v4
with:
path: frontend/.eslintcache
key: eslint-cache-${{ runner.os }}-${{ hashFiles('frontend/**/*.ts', 'frontend/**/*.tsx') }}
restore-keys: |
eslint-cache-${{ runner.os }}-
- name: Run ESLint with profiling
working-directory: frontend
run: npm run lint:profile
- name: Run standard lint check
working-directory: frontend
run: npm run lint
- name: Upload profile results
uses: actions/upload-artifact@v4
if: always()
with:
name: eslint-profile-results
path: frontend/eslint-profile-results.json
retention-days: 30
- name: Comment performance results
if: github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const profilePath = 'frontend/eslint-profile-results.json';
if (fs.existsSync(profilePath)) {
const profile = JSON.parse(fs.readFileSync(profilePath, 'utf8'));
const comment = `## ESLint Performance Report
- **Total Time**: ${profile.totalTimeSeconds}
- **Files Analyzed**: ${profile.fileCount}
- **Average Time per File**: ${profile.averageTimePerFile}
- **Errors**: ${profile.errorCount}
- **Warnings**: ${profile.warningCount}
- **Files with Issues**: ${profile.filesWithIssues}
Profile timestamp: ${profile.timestamp}`;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment
});
}