Skip to content

โ™ป๏ธRefactor: ํ—ค๋” ๋ฐ ๋Œ€์‹œ๋ณด๋“œ ์ˆ˜์ • ํŽ˜์ด์ง€ ๋ฆฌํŒฉํ† ๋ง #128

โ™ป๏ธRefactor: ํ—ค๋” ๋ฐ ๋Œ€์‹œ๋ณด๋“œ ์ˆ˜์ • ํŽ˜์ด์ง€ ๋ฆฌํŒฉํ† ๋ง

โ™ป๏ธRefactor: ํ—ค๋” ๋ฐ ๋Œ€์‹œ๋ณด๋“œ ์ˆ˜์ • ํŽ˜์ด์ง€ ๋ฆฌํŒฉํ† ๋ง #128

Workflow file for this run

name: CI Pipeline
on:
pull_request:
branches: [develop, main]
push:
branches: [develop, main]
jobs:
eslint-check:
runs-on: self-hosted
timeout-minutes: 2
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 2 # HEAD์™€ ๋ฒ ์ด์Šค ๋ธŒ๋žœ์น˜ ํžˆ์Šคํ† ๋ฆฌ ํ™•๋ณด
- name: Lightning fast lint check
run: |
echo "โšก Quick lint check..."
# ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ ์‚ฌ์ „ ์ฒดํฌ
AVAILABLE_MB=$(free -m | grep ^Mem | awk '{print $7}')
echo "๐Ÿ’พ Available memory: ${AVAILABLE_MB}MB"
if [ "${{ github.event_name }}" = "pull_request" ]; then
# PR์ธ ๊ฒฝ์šฐ: ๋ฒ ์ด์Šค ๋ธŒ๋žœ์น˜์™€ ๋น„๊ต
BASE_BRANCH="${{ github.base_ref }}"
git fetch origin $BASE_BRANCH --depth=1
ALL_CHANGED=$(git diff --name-only origin/$BASE_BRANCH...HEAD -- '*.ts' '*.tsx' '*.js' '*.jsx')
FILE_COUNT=$(echo "$ALL_CHANGED" | wc -w)
echo "๐Ÿ“Š Base: $BASE_BRANCH, Changed files: $FILE_COUNT"
# ๐Ÿ›ก๏ธ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ์•ˆ์ „์žฅ์น˜
if [ "$AVAILABLE_MB" -lt 200 ]; then
MAX_FILES=10
echo "โš ๏ธ Low memory mode: checking $MAX_FILES files only"
elif [ "$FILE_COUNT" -gt 30 ]; then
MAX_FILES=30
echo "โš ๏ธ Large PR detected: checking first $MAX_FILES files for memory safety"
echo "โ„น๏ธ Note: Full project will be built during deployment"
else
MAX_FILES="$FILE_COUNT"
echo "โœ… Normal mode: checking all $FILE_COUNT files"
fi
CHANGED_FILES=$(echo "$ALL_CHANGED" | head -$MAX_FILES)
else
# Push์ธ ๊ฒฝ์šฐ: ์ด์ „ ์ปค๋ฐ‹๊ณผ ๋น„๊ต
echo "๐Ÿ” Push event detected"
if git rev-parse --verify HEAD~1 >/dev/null 2>&1; then
CHANGED_FILES=$(git diff --name-only HEAD~1 -- '*.ts' '*.tsx' '*.js' '*.jsx')
echo "๐Ÿ“ Checking files changed since last commit"
else
echo "๐Ÿ” First commit or shallow clone, checking recent files"
CHANGED_FILES=$(find . -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.jsx" | grep -v node_modules | head -5)
fi
fi
# ๋ณ€๊ฒฝ์‚ฌํ•ญ ์—†์œผ๋ฉด ์ฆ‰์‹œ ์ข…๋ฃŒ
if [ -z "$CHANGED_FILES" ]; then
echo "โœ… No JS/TS files to check"
exit 0
fi
# ์ตœ์ข… ์‹คํ–‰ ์ •๋ณด
FINAL_COUNT=$(echo $CHANGED_FILES | wc -w)
ESTIMATED_MB=$((FINAL_COUNT * 2))
echo "๐Ÿง  Checking $FINAL_COUNT files (~${ESTIMATED_MB}MB estimated)"
echo "๐Ÿ“ Files: $CHANGED_FILES"
# ๊ธ€๋กœ๋ฒŒ ESLint ์‹คํ–‰
npx eslint $CHANGED_FILES
echo "โœ… Lint check passed!"