Skip to content

feat: move v20 to deprecated versions#1941

Open
JesusPaz wants to merge 1 commit into
masterfrom
jesus/deprecate-node-20
Open

feat: move v20 to deprecated versions#1941
JesusPaz wants to merge 1 commit into
masterfrom
jesus/deprecate-node-20

Conversation

@JesusPaz

@JesusPaz JesusPaz commented Jun 11, 2026

Copy link
Copy Markdown
Member

Summary

Moves Node.js v20 from the active/supported lane to deprecated (EOL), following the same pattern used for v18 in #1911.

Changes

  • .github/workflows/ci.yaml: remove 20 from the deb, rpm and rpm-minimal test matrices.
  • .github/workflows/deprecated.yaml: add 20 to the deb and rpm deprecated matrices.
  • scripts/deb/script_generator/generator.sh: drop "20" from the regenerated versions array (the existing setup_20.x scripts stay in place for current users, same as setup_16.x/setup_18.x).
  • DEV_README.md: FAQ active versions updated to 22, 24, 25, 26; v18 and v20 install sections flagged as deprecated/EOL.
  • scripts/{deb,rpm}/script_generator/README.md: refresh stale LTS/current info (LTS 24.x, current 26.x), fix setup_latestsetup_lts naming, update the iterated version list and examples.

Notes

  • setup_20.x (deb & rpm) are intentionally kept on disk; they are no longer regenerated but still work for existing users.
  • The deprecated workflow runs v20 on older OS images (ubuntu:20.04, debian:10, fedora:29, amazonlinux:2023) — worth watching in case those jobs need a newer OS matrix.

Summary by CodeRabbit

  • Documentation

    • Updated Node.js version support documentation to reflect currently active versions (22, 24, 25, 26).
    • Marked Node.js v18 and v20 as deprecated/end-of-life.
    • Updated setup script generator documentation with examples for current supported versions.
  • Chores

    • Updated CI/CD workflows to test against Node.js versions 22, 24, 25, and 26.
    • Updated script generators to produce setup scripts for current Node.js versions.

@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

This PR updates Node.js version support across CI workflows, script generators, and documentation. Active testing and generation now covers versions 22, 24, 25, and 26 (dropping 20), while the deprecated workflow adds 20 alongside 16 and 18 to test end-of-life versions. All related documentation is updated to reflect the new support matrix.

Changes

Node.js Version Support Update

Layer / File(s) Summary
Active CI and script generator versions
.github/workflows/ci.yaml, scripts/deb/script_generator/generator.sh
CI matrix for deb, rpm, and rpm-minimal jobs drops Node 20 and tests versions 22, 24, 25, and 26; DEB generator updated to generate scripts for the same versions.
Deprecated version workflow matrix
.github/workflows/deprecated.yaml
Deprecated workflow adds Node 20 to both deb and rpm job matrices, now testing end-of-life versions 16, 18, and 20.
Dev documentation deprecation notices
DEV_README.md
Node 20 and 18 installation sections marked as deprecated/end-of-life; FAQ updated to reflect active support for versions 22, 24, 25, and 26.
Debian script generator documentation
scripts/deb/script_generator/README.md
Examples, running instructions, and special script descriptions (setup_lts/setup_current) updated to reflect versions 22, 24, 25, 26 and LTS 24.x / current 26.x mappings.
RPM script generator documentation
scripts/rpm/script_generator/README.md
Version examples and special script documentation updated to describe 23, 24, 25, 26 and setup_lts (24.x) / setup_current (26.x) naming.

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly Related PRs

Suggested Reviewers

  • riosje
  • edsadr

🐰 Version bumps done with care,
From twenty to twenty-six in the air!
LTS and current now have their place,
Deprecated versions fade with grace. 🚀

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: move v20 to deprecated versions' accurately and concisely summarizes the main objective of the pull request: promoting Node.js v20 from active support to deprecated status across multiple files and workflows.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jesus/deprecate-node-20

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/rpm/script_generator/README.md`:
- Line 40: The Node.js version lists are inconsistent between the generator and
CI; update the generator to match CI by changing occurrences of "23.x" to "22.x"
in the generator artifacts: edit the versions array/list in generator.sh (the
variable that enumerates 23.x,24.x,25.x,26.x) and update the README sentence
that describes the generated scripts to say 22.x instead of 23.x; alternatively,
if you prefer CI change, update the RPM job matrix.version in ci.yaml to include
23 (so it becomes [22, 23, 24, 25, 26]) to match generator.sh and README.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a6b75f4e-f7c8-4a5b-b7c2-240c277ef7b0

📥 Commits

Reviewing files that changed from the base of the PR and between 46a5867 and 2f2a1e0.

📒 Files selected for processing (6)
  • .github/workflows/ci.yaml
  • .github/workflows/deprecated.yaml
  • DEV_README.md
  • scripts/deb/script_generator/README.md
  • scripts/deb/script_generator/generator.sh
  • scripts/rpm/script_generator/README.md

```

This script iterates over a list of versions (currently 18.x, 20.x, and 21.x), and creates a new script for each version with the updated base script. It also creates setup_current and setup_latest scripts for the current and latest versions of Node.js, respectively.
This script iterates over a list of versions (currently 23.x, 24.x, 25.x, and 26.x), and creates a new script for each version with the updated base script. It also creates setup_lts and setup_current scripts for the LTS and current versions of Node.js, respectively.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# List relevant files
ls -la scripts/rpm/script_generator/README.md .github/workflows/ci.yaml

# Show the README snippet around line 40
echo "=== README.md around line 35-50 ==="
nl -ba scripts/rpm/script_generator/README.md | sed -n '30,55p'

# Show CI workflow around the RPM matrix section (look for "rpm" and "matrix")
echo "=== ci.yaml around RPM matrix (searching) ==="
nl -ba .github/workflows/ci.yaml | sed -n '1,220p' | rg -n "rpm|RPM|setup_|matrix|versions|\[ *[0-9, ]+ *\]" || true

# More targeted: print the RPM job block if present
echo "=== ci.yaml: find lines containing 'rpm' and 'matrix' ==="
rg -n "rpm|RPM" .github/workflows/ci.yaml

echo "=== ci.yaml: find 'matrix' block near RPM ==="
rg -n "matrix" .github/workflows/ci.yaml

# Extract exact versions list for RPM if pattern exists
echo "=== ci.yaml: search for a versions array that includes 22/23 ==="
rg -n "\\[\\s*22\\s*,|\\[\\s*23\\s*,|22\\s*,\\s*24|versions" .github/workflows/ci.yaml || true

# Search RPM script generator code for version lists (22/23)
echo "=== Search rpm script generator code for 22/23 ==="
rg -n "23\\.|22\\.|\\b23\\b|\\b22\\b" scripts/rpm/script_generator || true

echo "=== Search entire rpm generator directory for 'versions' or 'NODE' ==="
rg -n "versions|NODE_VERSION|setup_" scripts/rpm/script_generator || true

# Identify generator source file(s)
echo "=== List scripts/rpm/script_generator directory ==="
find scripts/rpm/script_generator -maxdepth 2 -type f -print

Repository: nodesource/distributions

Length of output: 330


🏁 Script executed:

#!/bin/bash
set -euo pipefail

show_numbered() { awk '{printf "%d\t%s\n", NR, $0}' "$1"; }

echo "=== Files present ==="
ls -la .github/workflows/ci.yaml scripts/rpm/script_generator/README.md || true
echo

echo "=== README.md around lines 30-55 ==="
show_numbered scripts/rpm/script_generator/README.md | sed -n '30,55p'
echo

echo "=== ci.yaml: find RPM-related blocks ==="
rg -n "rpm|RPM|matrix|setup_" .github/workflows/ci.yaml || true
echo

echo "=== ci.yaml: print lines ~90-140 (likely around RPM job) ==="
show_numbered .github/workflows/ci.yaml | sed -n '90,160p'
echo

echo "=== ci.yaml: extract any 'versions' arrays containing 22 or 23 ==="
rg -n "\\bversions\\b|\\[\\s*22\\s*,|\\[\\s*23\\s*," .github/workflows/ci.yaml || true
echo

echo "=== List files under scripts/rpm/script_generator ==="
find scripts/rpm/script_generator -maxdepth 3 -type f -print
echo

echo "=== Search rpm generator directory for version lists (22/23/24/25/26) ==="
rg -n "\\b(22|23|24|25|26)(?:\\.|\\b)" scripts/rpm/script_generator || true
rg -n "versions|version|NODE_VERSION|setup_" scripts/rpm/script_generator || true

Repository: nodesource/distributions

Length of output: 13686


Align RPM Node version lists across generator and CI

scripts/rpm/script_generator/README.md (line 40) and scripts/rpm/script_generator/generator.sh generate setup_23.xsetup_26.x, but .github/workflows/ci.yaml RPM job tests matrix.version: [ 22, 24, 25, 26 ] (line 108). Update either the generator/README to use 22.x instead of 23.x, or adjust the RPM CI matrix to include 23.x so all three stay consistent.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/rpm/script_generator/README.md` at line 40, The Node.js version lists
are inconsistent between the generator and CI; update the generator to match CI
by changing occurrences of "23.x" to "22.x" in the generator artifacts: edit the
versions array/list in generator.sh (the variable that enumerates
23.x,24.x,25.x,26.x) and update the README sentence that describes the generated
scripts to say 22.x instead of 23.x; alternatively, if you prefer CI change,
update the RPM job matrix.version in ci.yaml to include 23 (so it becomes [22,
23, 24, 25, 26]) to match generator.sh and README.

@riosje riosje left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants