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