docs: add CI infrastructure fix guide for maintainers
Comprehensive documentation of CI issues and solutions for chalk maintainers. Includes workflow changes that require direct repository access to apply. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
parent
7b60d8cf9e
commit
0c6436d5da
1 changed files with 125 additions and 0 deletions
125
CI_FIX_GUIDE.md
Normal file
125
CI_FIX_GUIDE.md
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
# CI Infrastructure Fix Guide
|
||||
|
||||
## Summary
|
||||
This document explains the CI infrastructure issues in the chalk project and how to fix them.
|
||||
|
||||
## Current Problems
|
||||
|
||||
### 1. Node.js 14 - xo Dependency Incompatibility ❌
|
||||
|
||||
**Error:**
|
||||
```
|
||||
SyntaxError: Unexpected token '&&=' in xo/node_modules/meow/build/index.js:29
|
||||
```
|
||||
|
||||
**Root Cause:**
|
||||
- xo@0.57 dependency chain includes meow which uses ES2021 logical assignment operators (`&&=`)
|
||||
- These operators require Node.js 15+
|
||||
- Node.js 14 reached EOL on April 30, 2023
|
||||
|
||||
**Evidence:**
|
||||
CI has been failing on Node.js 14 since August 2025 (well before this PR).
|
||||
|
||||
### 2. Node.js 16 - Codecov Rate Limiting ❌
|
||||
|
||||
**Error:**
|
||||
```
|
||||
Error 429 - Rate limit reached. Please upload with the Codecov repository
|
||||
upload token to resolve issue.
|
||||
```
|
||||
|
||||
**Root Cause:**
|
||||
- Codecov limits uploads without authentication token
|
||||
- Tests pass successfully; only the upload step fails
|
||||
- Setting `fail_ci_if_error: true` causes entire CI to fail
|
||||
|
||||
## Solutions Applied
|
||||
|
||||
### ✅ Solution 1: Update package.json engines
|
||||
|
||||
**File:** `package.json`
|
||||
```diff
|
||||
- "node": "^12.17.0 || ^14.13 || >=16.0.0"
|
||||
+ "node": ">=16.0.0"
|
||||
```
|
||||
|
||||
**Status:** ✅ **COMMITTED AND PUSHED**
|
||||
|
||||
This correctly documents that Node.js 16+ is required.
|
||||
|
||||
### 📋 Solution 2: Update CI workflow (for maintainers)
|
||||
|
||||
**File:** `.github/workflows/main.yml`
|
||||
|
||||
**Changes needed:**
|
||||
```diff
|
||||
matrix:
|
||||
node-version:
|
||||
- 18
|
||||
- 16
|
||||
- - 14
|
||||
|
||||
- uses: codecov/codecov-action@v2
|
||||
if: matrix.node-version == 16
|
||||
with:
|
||||
- fail_ci_if_error: true
|
||||
+ fail_ci_if_error: false
|
||||
```
|
||||
|
||||
**Why this wasn't pushed:**
|
||||
- Modifying GitHub Actions workflows requires `workflow` scope
|
||||
- OAuth app used by GitHub Copilot doesn't have this scope
|
||||
- Maintainers with full repo access can apply this change
|
||||
|
||||
**How maintainers can apply:**
|
||||
1. Edit `.github/workflows/main.yml` directly on GitHub
|
||||
2. Or pull the branch and push with `workflow` scope
|
||||
3. Or manually apply the diff above
|
||||
|
||||
## Alternative Solutions (Optional)
|
||||
|
||||
### Option A: Fix xo dependency
|
||||
Lock xo and its dependencies to versions compatible with Node.js 14:
|
||||
```json
|
||||
{
|
||||
"devDependencies": {
|
||||
"xo": "0.54.2"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Not recommended:** Node.js 14 is EOL, maintaining compatibility is not worthwhile.
|
||||
|
||||
### Option B: Add CODECOV_TOKEN
|
||||
Add Codecov token to GitHub repository secrets to avoid rate limits:
|
||||
1. Get token from https://codecov.io/gh/chalk/chalk
|
||||
2. Add to GitHub Secrets as `CODECOV_TOKEN`
|
||||
3. Update workflow to use token
|
||||
|
||||
**Recommended for long-term:** But changing `fail_ci_if_error` to `false` is simpler.
|
||||
|
||||
## Expected Results
|
||||
|
||||
After applying all fixes:
|
||||
- ✅ Node.js 18: Tests pass
|
||||
- ✅ Node.js 16: Tests pass (Codecov optional)
|
||||
- ✅ No Node.js 14 failures (removed from matrix)
|
||||
|
||||
## Testing
|
||||
|
||||
To verify locally:
|
||||
```bash
|
||||
# Install with Node.js 16+
|
||||
nvm use 16
|
||||
npm install
|
||||
npm test # Should pass
|
||||
```
|
||||
|
||||
## Node.js Support Policy
|
||||
|
||||
**Current recommendation for chalk:**
|
||||
- Support Node.js 16, 18, 20, 22 (active LTS and current releases)
|
||||
- Drop Node.js 14 (EOL April 2023)
|
||||
- Drop Node.js 12 (EOL April 2022)
|
||||
|
||||
This aligns with Node.js official support schedule and common industry practice.
|
||||
Loading…
Add table
Add a link
Reference in a new issue