๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

NETWORK ยท CLOUD ยท SECURITY ยท AUTOMATION

Network History๐ŸŒ

๋„คํŠธ์›Œํฌ/ํด๋ผ์šฐ๋“œ ์—”์ง€๋‹ˆ์–ด๋ฅผ ๊ฟˆ๊พธ๋Š” ์ „์ž๊ณตํ•™๋„์˜ ์„ฑ์žฅ ๊ธฐ๋ก โœ๏ธ AI, Windows, ๋ณด์•ˆ, ํด๋ผ์šฐ๋“œ, ๋„คํŠธ์›Œํฌ, ์ž๋™ํ™”์™€ ๊ฐœ๋ฐœ·๋ฐฐํฌ๊นŒ์ง€. ํ˜„์žฅ์—์„œ ๋งˆ์ฃผ์น˜๋Š” IT ๋ฌธ์ œ๋ฅผ ์›์ธ๋ถ€ํ„ฐ ํ•ด๊ฒฐ๊นŒ์ง€ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์ด๋ก ์„ ๋„˜์–ด ์‹ค๋ฌด๋กœ ํ–ฅํ•˜๋Š” ์—ฌ์ •, "Network History ๐ŸŒ"

๊ฐœ๋ฐœ·๋ฐฐํฌ

[๊ฐœ๋ฐœ·๋ฐฐํฌ] GitHub Actions Node.js 20 ๊ฒฝ๊ณ  ํ•ด๊ฒฐ๋ฒ•

Network History๐ŸŒ Last Updated: 2026. 9. 23. 00:33

๐Ÿšจ ์˜ค๋Š˜ ๊ธฐ์ค€์œผ๋กœ GitHub Actions์˜ Node.js 20 ์ œ๊ฑฐ๊ฐ€ ํ•˜๋ฃจ ์•ž์œผ๋กœ ๋‹ค๊ฐ€์™”์Šต๋‹ˆ๋‹ค. GitHub๋Š” 2026๋…„ 9์›” 23์ผ Runner์—์„œ Node.js 20 ๋Ÿฐํƒ€์ž„์„ ์ œ๊ฑฐํ•  ์˜ˆ์ •์ด๋ฉฐ, ์ง€๋‚œ 6์›”๋ถ€ํ„ฐ JavaScript Action์˜ ๊ธฐ๋ณธ ์‹คํ–‰ ๋Ÿฐํƒ€์ž„์€ ์ด๋ฏธ Node.js 24๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

Workflow์— Node.js 20 actions are deprecated ๊ฒฝ๊ณ ๊ฐ€ ๋‚จ์•„ ์žˆ๊ฑฐ๋‚˜ ์˜ค๋ž˜๋œ actions/checkout·setup-*·์„œ๋“œํŒŒํ‹ฐ Action์„ ๊ณ ์ •ํ•ด ๋‘์—ˆ๋‹ค๋ฉด, ๋‚ด์ผ๋ถ€ํ„ฐ๋Š” ์ž„์‹œ ์šฐํšŒ๋ณด๋‹ค Action ์ž์ฒด๋ฅผ Node.js 24 ํ˜ธํ™˜ ๋ฒ„์ „์œผ๋กœ ์˜ฌ๋ฆฌ๋Š” ์ชฝ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘‹ Network History ๋…์ž ์—ฌ๋Ÿฌ๋ถ„, ์•ˆ๋…•ํ•˜์„ธ์š”. YH์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ ์ด ๊ฒฝ๊ณ ๊ฐ€

๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ Node.js ๋ฒ„์ „ ๋ฌธ์ œ์ธ์ง€, Action ๋‚ด๋ถ€ ๋Ÿฐํƒ€์ž„ ๋ฌธ์ œ์ธ์ง€ ๊ตฌ๋ถ„

ํ•˜๊ณ , ์˜ํ–ฅ์„ ๋ฐ›๋Š” Workflow ์ฐพ๊ธฐ → ๊ณต์‹ Action ์—…๋ฐ์ดํŠธ → ์„œ๋“œํŒŒํ‹ฐ·Custom Action ์ ๊ฒ€ → self-hosted runner ํ™•์ธ → ์ •์ƒํ™”๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“… 9์›” 23์ผ

GitHub Runner์—์„œ Node.js 20 ๋Ÿฐํƒ€์ž„ ์ œ๊ฑฐ๊ฐ€ ์˜ˆ์ •๋ผ ์žˆ์Šต๋‹ˆ๋‹ค.

โš ๏ธ ๋Œ€ํ‘œ ๊ฒฝ๊ณ 

Node.js 20 actions are deprecated๊ฐ€ ๋ณด์ด๋ฉด ์‚ฌ์šฉ ์ค‘์ธ Action ๋ฒ„์ „์„ ์ ๊ฒ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿงฉ ๊ฐ€์žฅ ํ”ํ•œ ์˜คํ•ด

ํ”„๋กœ์ ํŠธ์˜ node-version: 20๊ณผ Action ์ž์ฒด๊ฐ€ ์“ฐ๋Š” Node ๋Ÿฐํƒ€์ž„์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

โœ… ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

Node.js 24๋ฅผ ์ง€์›ํ•˜๋Š” ์ตœ์‹  Action์œผ๋กœ ์˜ฌ๋ฆฌ๊ณ  Custom Action์€ runs.using์„ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํ•œ ์ค„

Node.js 20 ๊ฒฝ๊ณ ์˜ ํ•ต์‹ฌ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ Runtime์ด ์•„๋‹ˆ๋ผ “GitHub Action ์ž์ฒด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋‚ด์žฅ Runtime”์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.


Node.js 20 ๊ฒฝ๊ณ ๋Š” ๋‚ด ํ”„๋กœ์ ํŠธ Node ๋ฒ„์ „๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค

GitHub Actions ์•ˆ์—๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์ข…๋ฅ˜์˜ Node.js๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ๋ถ„ ์—ญํ•  ์–ด๋””์„œ ์ •ํ•˜๋‚˜
ํ”„๋กœ์ ํŠธ Node.js ๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋นŒ๋“œ·ํ…Œ์ŠคํŠธ ์‹คํ–‰ setup-node์˜ node-version
Action Runtime checkout, setup-node ๊ฐ™์€ JavaScript Action ์ž์ฒด ์‹คํ–‰ ๊ฐ Action์˜ action.yml ์•ˆ runs.using

์˜ˆ๋ฅผ ๋“ค์–ด Workflow๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ Node.js 20์„ ์„ค์น˜ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ฐ”๋กœ ์ด๋ฒˆ ์ œ๊ฑฐ ์ผ์ •๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ํ”„๋กœ์ ํŠธ๋Š” Node.js 24๋ฅผ ์“ฐ๋”๋ผ๋„, ์˜ค๋ž˜๋œ Action์ด ๋‚ด๋ถ€์ ์œผ๋กœ runs.using: node20์„ ์„ ์–ธํ•˜๊ณ  ์žˆ์œผ๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Workflow JavaScript Action Action Runtime Build / Test Project Runtime

Node.js 20 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ง€์› ์—ฌ๋ถ€์™€ ์ด๋ฒˆ Action Runtime ์ œ๊ฑฐ๋Š” ๋ถ„๋ฆฌํ•ด์„œ ๋ณด์„ธ์š”.

์ด๋ฒˆ GitHub ์ผ์ •์€ Runner๊ฐ€ JavaScript Action์„ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” Node.js 20 ๋‚ด์žฅ ๋Ÿฐํƒ€์ž„ ์ œ๊ฑฐ๊ฐ€ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ž์ฒด์˜ ์ง€์› Node ๋ฒ„์ „์€ ๋ณ„๋„์˜ ์ œํ’ˆ·๋ณด์•ˆ ์ •์ฑ…์œผ๋กœ ํŒ๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


์–ด๋–ค Workflow๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›๋Š”์ง€ ๋จผ์ € ์ฐพ์œผ์„ธ์š”

๊ฐ€์žฅ ๋จผ์ € ํ•  ์ผ์€ ๋ชจ๋“  Workflow์—์„œ ์–ด๋–ค Action ๋ฒ„์ „์„ ์“ฐ๋Š”์ง€ ๋ชฉ๋ก์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Workflow์˜ uses ํ•ญ๋ชฉ ์ฐพ๊ธฐ

grep -R -n "uses:" .github/workflows

์—ฌ๊ธฐ์„œ ์˜ค๋ž˜๋œ Major Version๊ณผ Commit SHA๋กœ ๊ณ ์ •ํ•œ Action์„ ์šฐ์„  ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. GitHub๊ฐ€ ์ œ๊ณตํ•œ ๊ฒฝ๊ณ  Annotation์ด ์žˆ๋‹ค๋ฉด ๊ฑฐ๊ธฐ์— ์‹ค์ œ๋กœ Node.js 20์„ ์‚ฌ์šฉํ•˜๋Š” Action ์ด๋ฆ„์ด ์ง์ ‘ ํ‘œ์‹œ๋˜๋ฏ€๋กœ ๊ฐ€์žฅ ๋น ๋ฅธ ๋‹จ์„œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

ํŒจํ„ด ํ™•์ธ ๋ฐฉ๋ฒ•
actions/* ๊ณต์‹ Action ๊ณต์‹ Repository์˜ ํ˜„์žฌ Release์™€ Node.js 24 ์ „ํ™˜ ๋ฒ„์ „ ํ™•์ธ
์„œ๋“œํŒŒํ‹ฐ Action Release Notes์™€ action.yml์˜ runs.using ํ™•์ธ
Commit SHA Pin ๋ณด์•ˆ์ƒ Pin์€ ์œ ์ง€ํ•˜๋˜ Node.js 24 ์ง€์› Release์˜ ์ƒˆ SHA๋กœ ๊ต์ฒด
Local Custom Action Repository ์•ˆ action.yml·action.yaml ์ง์ ‘ ๊ฒ€์‚ฌ

Custom Action์„ ํ•จ๊ป˜ ์šด์˜ํ•œ๋‹ค๋ฉด ๋‹ค์Œ์ฒ˜๋Ÿผ metadata์˜ runtime ์„ ์–ธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

grep -R -n "using:.*node20" . \
  --include="action.yml" \
  --include="action.yaml"

Action ์ด๋ฆ„๋งŒ ๋ณด๊ณ  ์•ˆ์ „ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์ง€ ๋งˆ์„ธ์š”.

๊ฐ™์€ Action์ด๋ผ๋„ Major Version์— ๋”ฐ๋ผ ๋‚ด๋ถ€ ๋Ÿฐํƒ€์ž„์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  README·Release Notes ๋˜๋Š” ํ•ด๋‹น Tag์˜ action.yml์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.


๊ณต์‹ Action์€ Node.js 24 ์ง€์› ๋ฒ„์ „์œผ๋กœ ์˜ฌ๋ฆฌ์„ธ์š”

GitHub ๊ณต์‹ Action๋„ ์„ธ๋Œ€๋ณ„๋กœ ๋‚ด๋ถ€ Runtime์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ๋Œ€ํ‘œ์ ์ธ Action๋“ค์€ ์ด๋ฏธ Node.js 24 ๊ธฐ๋ฐ˜ ๋ฒ„์ „์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Action Node.js 24 ์ „ํ™˜ ๊ธฐ์ค€ ํ˜„์žฌ ํ™•์ธ ํฌ์ธํŠธ
actions/checkout v5์—์„œ Node.js 24๋กœ ์ „ํ™˜ ํ˜„์žฌ Marketplace์˜ ์ตœ์‹  Major๋ฅผ ํ™•์ธํ•œ ๋’ค ์ž…๋ ฅ๊ฐ’ ๋ณ€๊ฒฝ ์—ฌ๋ถ€ ๊ฒ€ํ† 
actions/setup-node v5์—์„œ Node.js 24๋กœ ์ „ํ™˜ ํ˜„์žฌ ์ตœ์‹  Major์˜ Cache·์ธ์ฆ ๊ด€๋ จ Breaking Change ํ™•์ธ
actions/setup-python v6์—์„œ Node.js 24๋กœ ์ „ํ™˜ Runner ์ตœ์†Œ๋ฒ„์ „๊ณผ ์ตœ์‹  Major Release Notes ํ™•์ธ

์ค‘์š”ํ•œ ์ ์€ ๋‹จ์ˆœํžˆ ์ˆซ์ž๋งŒ ๊ฐ€์žฅ ํฌ๊ฒŒ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. Node.js 24๋ฅผ ์ง€์›ํ•˜๋Š” Major Version์„ ์ฐพ์€ ๋’ค, ๊ทธ ๋ฒ„์ „์˜ Breaking Change๋ฅผ ์ฝ๊ณ  ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1
๊ฒฝ๊ณ ์— ํ‘œ์‹œ๋œ Action ์ด๋ฆ„ ํ™•์ธ
Run Summary ๋˜๋Š” Annotation์—์„œ Node.js 20 ์‚ฌ์šฉ Action์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
2
๊ณต์‹ Release Notes ํ™•์ธ
Node.js 24๋กœ ์ „ํ™˜๋œ Major Version๊ณผ ์ž…๋ ฅ๊ฐ’ ๋ณ€๊ฒฝ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
3
Workflow์˜ uses ๊ฐฑ์‹ 
Major Tag ๋˜๋Š” ๊ฒ€์ฆํ•œ Commit SHA๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.
4
PR์—์„œ Test Run
Build·Cache·Artifact·Authentication ๋™์ž‘์„ ํ™•์ธํ•œ ๋’ค Main์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ ๋ณด์•ˆ ๋•Œ๋ฌธ์— Commit SHA๋ฅผ Pinํ•œ ์กฐ์ง์€ “Pin์„ ํ•ด์ œ”ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Node.js 24 ํ˜ธํ™˜ Release์˜ ์ƒˆ SHA๋กœ ๋‹ค์‹œ Pinํ•˜๋Š” ๋ฐฉ์‹์ด ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.


Custom JavaScript Action์€ runs.using์„ ๋ฐ”๊ฟ”์•ผ ํ•ฉ๋‹ˆ๋‹ค

์ง์ ‘ ๋งŒ๋“  JavaScript Action์„ ์šด์˜ํ•œ๋‹ค๋ฉด ์‚ฌ์šฉ์ž Workflow๋งŒ ๊ณ ์ณ์„œ๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. GitHub ๊ณต์‹ Metadata ๋ฌธ์„œ์—์„œ JavaScript Action์€ action.yml์˜ runs.using์œผ๋กœ ์‹คํ–‰ Runtime์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

runs:
  using: 'node24'
  main: 'dist/index.js'

๋‹จ์ˆœํžˆ node20์„ node24๋กœ ๊ธ€์ž๋งŒ ๋ฐ”๊พธ๋Š” ๊ฒƒ์œผ๋กœ ๋๋‚ด์ง€ ๋ง๊ณ , Action ์ฝ”๋“œ๊ฐ€ Node.js 24์—์„œ ์ •์ƒ ๋™์ž‘ํ•˜๋Š”์ง€ Testํ•˜๊ณ  Build Output๋„ ๋‹ค์‹œ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1
action.yml ํ™•์ธ
runs.using: node20 ์„ ์–ธ์ด ์žˆ๋Š”์ง€ ์ฐพ์Šต๋‹ˆ๋‹ค.
2
Dependency ์—…๋ฐ์ดํŠธ
์˜ค๋ž˜๋œ @actions/* Package์™€ Runtime ํ˜ธํ™˜์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
3
Node.js 24์—์„œ Build/Test
Action์˜ Unit Test์™€ ์‹ค์ œ Workflow Integration Test๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
4
dist ์žฌ๋นŒ๋“œ
Bundled JavaScript Action์ด๋ผ๋ฉด ๋ฐฐํฌ์šฉ dist๋ฅผ ์ƒˆ Runtime ๊ธฐ์ค€์œผ๋กœ ๋‹ค์‹œ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
5
์ƒˆ Release Tag ๋ฐœํ–‰
๊ธฐ์กด ์‚ฌ์šฉ์ž๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ Major/Minor Version์„ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ Releaseํ•ฉ๋‹ˆ๋‹ค.

์„œ๋“œํŒŒํ‹ฐ Action์ด ์•„์ง Node.js 20๋งŒ ์ง€์›ํ•œ๋‹ค๋ฉด ๋ฌด์ž‘์ • Fork ์ฝ”๋“œ๋ฅผ ์‹ ๋ขฐํ•˜์ง€ ๋งˆ์„ธ์š”.

๊ณต์‹ Maintainer์˜ ์—…๋ฐ์ดํŠธ ์—ฌ๋ถ€์™€ Issue·Release๋ฅผ ๋จผ์ € ํ™•์ธํ•˜๊ณ , ๋Œ€์ฒด Action ๋˜๋Š” ๋‚ด๋ถ€ ๊ฒ€์ฆ๋œ Fork๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. Supply Chain ๊ด€์ ์—์„œ ์ถœ์ฒ˜๊ฐ€ ๋ถˆ๋ช…ํ™•ํ•œ ์ˆ˜์ •๋ณธ์€ ๋˜ ๋‹ค๋ฅธ ์œ„ํ—˜์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Self-hosted runner๋Š” Node.js 24 ์ง€์› ๋ฒ„์ „์ธ์ง€ ํ™•์ธํ•˜์„ธ์š”

GitHub-hosted runner๋งŒ ์“ฐ๋Š” ๊ฒฝ์šฐ์—๋Š” ํ”Œ๋žซํผ์ด Runner Runtime์„ ๊ด€๋ฆฌํ•˜์ง€๋งŒ, self-hosted runner๋Š” ์šด์˜์ž๊ฐ€ Runner ๋ฒ„์ „๊ณผ OS·Architecture ํ˜ธํ™˜์„ฑ์„ ๊ฐ™์ด ์ฑ…์ž„์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

GitHub์˜ ๊ณต์‹ Action ๋ฌธ์„œ์—์„œ Node.js 24 ๊ธฐ๋ฐ˜ checkout, setup-node, setup-python ๋“ฑ์€ Actions Runner v2.327.1 ์ด์ƒ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Action์„ ์˜ฌ๋ ธ๋Š”๋ฐ self-hosted runner์—์„œ๋งŒ ๊นจ์ง„๋‹ค๋ฉด runner ์ž์ฒด๊ฐ€ ์˜ค๋ž˜๋๋Š”์ง€๋„ ํ•จ๊ป˜ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ ํ™•์ธํ•  ๊ฒƒ
GitHub-hosted Workflow์˜ Action ๋ฒ„์ „๊ณผ Breaking Change
Self-hosted Action ๋ฒ„์ „ + Runner ๋ฒ„์ „ + OS/Architecture
macOS ๊ตฌํ˜• ํ™˜๊ฒฝ Node.js 24๊ฐ€ macOS 13.4 ์ดํ•˜๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์  ํ™•์ธ
ARM32 Runner Node.js 24 ๊ณต์‹ ์ง€์› ๋ถ€์žฌ๋กœ ๊ธฐ์กด ์šด์˜๊ตฌ์กฐ ์žฌ๊ฒ€ํ† 

์ž„์‹œ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์˜์กดํ•˜๋Š” ์‹œ๊ฐ„์€ ๋๋‚˜๊ฐ‘๋‹ˆ๋‹ค.

ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true๋กœ Node.js 20์„ ์ž ์‹œ ํ—ˆ์šฉํ•˜๋Š” ์šฐํšŒ๋Š” ๊ณต์‹ ์•ˆ๋‚ด์ƒ Node.js 20์ด Runner์—์„œ ์ œ๊ฑฐ๋˜๋Š” 9์›” 23์ผ๊นŒ์ง€๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ์žฅ๊ธฐ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ์“ฐ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

Self-hosted runner๋ฅผ Golden Image๋‚˜ Container๋กœ ๋ฐฐํฌํ•œ๋‹ค๋ฉด, ์‹คํ–‰ ์ค‘์ธ Instance ํ•˜๋‚˜๋งŒ ๊ณ ์น˜์ง€ ๋ง๊ณ  Runner Base Image ์ž์ฒด๋ฅผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ๊ฐฑ์‹ ํ•ด์•ผ ๋‹ค์Œ Scale-out ๋•Œ ๋‹ค์‹œ ๊ตฌ๋ฒ„์ „์ด ์ƒ๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


์—…๋ฐ์ดํŠธ ํ›„์—๋Š” ๊ฒฝ๊ณ ๊ฐ€ ์‚ฌ๋ผ์กŒ๋Š”์ง€ ๋๊นŒ์ง€ ํ™•์ธํ•˜์„ธ์š”

1
์ƒˆ PR์—์„œ Workflow ์‹คํ–‰
Production Branch์— ๋ฐ”๋กœ ๋ฐ˜์˜ํ•˜๊ธฐ๋ณด๋‹ค ์ˆ˜์ • PR์—์„œ ์ „์ฒด Job์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
2
Run Annotation ํ™•์ธ
Node.js 20 actions are deprecated ๊ฒฝ๊ณ ๊ฐ€ ๋” ์ด์ƒ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
3
Cache·Artifact ํ™•์ธ
Major Upgrade ๊ณผ์ •์—์„œ Cache Key·Artifact ๋™์ž‘·์ธ์ฆ ๋ฐฉ์‹์ด ๋ฐ”๋€Œ์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
4
Self-hosted Fleet ๊ฒ€์ฆ
๋ชจ๋“  Runner Group์—์„œ ์ตœ์‹  Action์ด ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
5
์˜ค๋ž˜๋œ Action Inventory ์ œ๊ฑฐ
๋‹ค๋ฅธ Workflow·Reusable Workflow·Composite Action์— ๋‚จ์€ ๊ตฌ๋ฒ„์ „์„ ๋‹ค์‹œ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

์ •์ƒํ™” ๊ธฐ์ค€

Node.js 20 ๊ฒฝ๊ณ  ์—†์Œ → ์ „์ฒด Job ์„ฑ๊ณต → Cache·Artifact·์ธ์ฆ ์ •์ƒ → Self-hosted์—์„œ๋„ ๋™์ผ ๊ฒฐ๊ณผ

์กฐ์ง ๋‹จ์œ„ Repository๊ฐ€ ๋งŽ๋‹ค๋ฉด Dependabot ๋˜๋Š” Renovate ๊ฐ™์€ ์ž๋™ํ™”๋กœ GitHub Action Version Update๋ฅผ ์ •๊ธฐํ™”ํ•˜๊ณ , ์ค‘์š”ํ•œ Action์€ ๊ฒ€์ฆ๋œ Major Version·Commit SHA ๊ธฐ์ค€์„ ์„ ๊ด€๋ฆฌํ•˜๋Š” ํŽธ์ด ์ข‹์Šต๋‹ˆ๋‹ค.


๋‹ค์Œ Runtime ๊ต์ฒด์—๋„ ๋œ ํ”๋“ค๋ฆฌ๋Š” ์šด์˜๋ฒ•

์šด์˜ ํ•ญ๋ชฉ ๊ถŒ์žฅ ๋ฐฉ์‹
Action Version ์ฃผ๊ธฐ์ ์œผ๋กœ Release ํ™•์ธ, ์ค‘์š” Action์€ ๊ฒ€์ฆ ํ›„ ๊ฐฑ์‹ 
Commit SHA Pin Pin์€ ์œ ์ง€ํ•˜๋˜ ์ง€์› Release์˜ ์ƒˆ SHA๋กœ ๊ต์ฒด
Custom Action runs.using๊ณผ Runtime EOL์„ ์ž์‚ฐ๋ชฉ๋ก์— ํฌํ•จ
Self-hosted Runner Runner Release์™€ Base Image๋ฅผ ํ•จ๊ป˜ ๊ฐฑ์‹ 
Workflow Inventory Reusable·Composite Workflow๊นŒ์ง€ ํฌํ•จํ•ด uses: ๋ชฉ๋ก ๊ด€๋ฆฌ
Pre-migration Test ์ƒˆ Runtime ๊ฐ•์ œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์ œ๊ณต๋˜๋ฉด ์‚ฌ์ „์— Canary Test

GitHub Actions์—์„œ Runtime ๊ต์ฒด๋Š” ์•ž์œผ๋กœ๋„ ๋ฐ˜๋ณต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ๊ฒฝ๊ณ ๋ฅผ ํ•œ ๋ฒˆ ์—†์• ๋Š” ๊ฒƒ๋ณด๋‹ค Action Runtime๊ณผ ํ”„๋กœ์ ํŠธ Runtime์„ ๋ถ„๋ฆฌํ•ด์„œ Inventoryํ•˜๊ณ , Runner·Action·Custom Action์˜ ์ง€์›์ฃผ๊ธฐ๋ฅผ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์žฌ๋ฐœ๋ฐฉ์ง€์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

GitHub Actions์˜ Node.js 20 ๊ฒฝ๊ณ ๊ฐ€ ๋ณด์ผ ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ๊ธฐ์–ตํ•  ๊ฒƒ์€ “๋‚ด ํ”„๋กœ์ ํŠธ๊ฐ€ Node 20์ด๋ผ์„œ”๋ผ๊ณ  ๋‹จ์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ๊ฒฝ์šฐ ๋ฌธ์ œ๋Š” Workflow๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” JavaScript Action ์ž์ฒด์˜ ์‹คํ–‰ Runtime์ž…๋‹ˆ๋‹ค.

2026๋…„ 9์›” 23์ผ Node.js 20 Runner ์ œ๊ฑฐ๋ฅผ ์•ž๋‘” ์ง€๊ธˆ์€ ๊ฒฝ๊ณ ์— ํ‘œ์‹œ๋œ Action ์‹๋ณ„ → Node.js 24 ์ง€์› Release ํ™•์ธ → Workflow ์—…๋ฐ์ดํŠธ → Custom Action metadata ์ ๊ฒ€ → self-hosted runner ์—…๋ฐ์ดํŠธ → ์žฌ์‹คํ–‰ ๊ฒ€์ฆ ์ˆœ์„œ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

โœ… ์˜ค๋Š˜ ๋ฐ”๋กœ Repository์—์„œ grep -R -n "uses:" .github/workflows์™€ using: node20 ๊ฒ€์ƒ‰์„ ํ•œ ๋ฒˆ ๋Œ๋ ค๋ณด์„ธ์š”.

๋‚ด์ผ ์ œ๊ฑฐ ์ดํ›„ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ž˜๋œ Action์„ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ์ฐพ๋Š” ์ถœ๋ฐœ์ 

์ž…๋‹ˆ๋‹ค. ๐Ÿ”ง

Network History์˜ YH์˜€์Šต๋‹ˆ๋‹ค.

โ€ป ์ด ๊ธ€์€ 2026๋…„ 9์›” 22์ผ ๊ธฐ์ค€ GitHub ๊ณต์‹ Changelog, Actions Metadata ๋ฌธ์„œ, actions/checkout·setup-node·setup-python ๊ณต์‹ Repository๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. Action์˜ ์ตœ์‹  Major Version๊ณผ Runner ์ตœ์†Œ๋ฒ„์ „์€ ์ดํ›„ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ค์ œ ์ˆ˜์ • ์ „ ๊ฐ Action์˜ ์ตœ์‹  Release Notes๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•˜์„ธ์š”.


๐Ÿ”— ๊ณต์‹ ์ถœ์ฒ˜