## Summary - Closes #139. - [Deploy Beta run 1025](https://git.aimloperations.com/ai_ml_operations/chat_web_app/actions/runs/1025/jobs/1743) failed `npm run build:beta` on `ai-server-4080` because `CI=true` turns `react-hooks/exhaustive-deps` warnings into errors. - `GetConversationDetails` is a `useCallback` and is listed on the post-stream refetch, the selected-conversation effect, and the reconnect effect. `setConversationDetails` stays stable, so those effects still run only when their real inputs change. - Adds a project rule to lint changed `llm-fe` files with warnings as errors before pushing a merge request. ## Test plan - [x] `CI=true ./node_modules/.bin/eslint --max-warnings 0 src/llm-fe/contexts/MessageContext.tsx` - [x] `MessageContext.test.tsx` and `MessageContext.order.test.tsx` (8 passed) - [ ] Deploy Beta `build:beta` succeeds on `ai-server-4080` after merge Reviewed-on: #140
24 lines
1.1 KiB
Plaintext
24 lines
1.1 KiB
Plaintext
---
|
|
description: Run ESLint with warnings as errors before pushing a merge request
|
|
alwaysApply: true
|
|
---
|
|
|
|
# ESLint before push
|
|
|
|
Beta deploy runs `npm run build:beta` with `CI=true`. Create React App turns ESLint warnings into build errors. Unit tests do not catch this. The failure shows up only on the deploy runner (`ai-server-4080`), where `CI=true` is set.
|
|
|
|
Before `git push` or opening a pull request that changes `llm-fe`:
|
|
|
|
1. From `llm-fe`, lint every changed file under `src` with warnings as errors:
|
|
|
|
```bash
|
|
CI=true ./node_modules/.bin/eslint --max-warnings 0 path/to/ChangedFile.tsx
|
|
```
|
|
|
|
2. Fix every warning in those files. Do not push while that command exits non-zero.
|
|
3. Do not set `DISABLE_ESLINT_PLUGIN` or `CI=false` to get the deploy through.
|
|
|
|
A full `eslint src` run reports warnings in files the production build does not compile. Those do not fail deploy. The gate is warnings in files the build compiles.
|
|
|
|
`react-hooks/exhaustive-deps` is the usual failure. Wrap the function in `useCallback` and list it in the dependency array. An empty dependency array that calls a component function fails the beta build.
|