
๐จ ์ค๋ ๊ธฐ์ค์ผ๋ก 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์ ์ ์ธํ๊ณ ์์ผ๋ฉด ๊ฒฝ๊ณ ๊ฐ ๋ํ๋ ์ ์์ต๋๋ค.
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๋ฅผ ์ฝ๊ณ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
Run Summary ๋๋ Annotation์์ Node.js 20 ์ฌ์ฉ Action์ ์๋ณํฉ๋๋ค.
Node.js 24๋ก ์ ํ๋ Major Version๊ณผ ์ ๋ ฅ๊ฐ ๋ณ๊ฒฝ์ ํ์ธํฉ๋๋ค.
Major Tag ๋๋ ๊ฒ์ฆํ Commit SHA๋ก ๊ต์ฒดํฉ๋๋ค.
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๋ ๋ค์ ์์ฑํด์ผ ํฉ๋๋ค.
runs.using: node20 ์ ์ธ์ด ์๋์ง ์ฐพ์ต๋๋ค.์ค๋๋
@actions/* Package์ Runtime ํธํ์ฑ์ ํ์ธํฉ๋๋ค.Action์ Unit Test์ ์ค์ Workflow Integration Test๋ฅผ ์ํํฉ๋๋ค.
Bundled JavaScript Action์ด๋ผ๋ฉด ๋ฐฐํฌ์ฉ
dist๋ฅผ ์ Runtime ๊ธฐ์ค์ผ๋ก ๋ค์ ์์ฑํฉ๋๋ค.๊ธฐ์กด ์ฌ์ฉ์๊ฐ ์์ ํ๊ฒ 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 ๋ ๋ค์ ๊ตฌ๋ฒ์ ์ด ์๊ธฐ์ง ์์ต๋๋ค.

์ ๋ฐ์ดํธ ํ์๋ ๊ฒฝ๊ณ ๊ฐ ์ฌ๋ผ์ก๋์ง ๋๊น์ง ํ์ธํ์ธ์
Production Branch์ ๋ฐ๋ก ๋ฐ์ํ๊ธฐ๋ณด๋ค ์์ PR์์ ์ ์ฒด Job์ ์คํํฉ๋๋ค.
Node.js 20 actions are deprecated ๊ฒฝ๊ณ ๊ฐ ๋ ์ด์ ๋ํ๋์ง ์๋์ง ํ์ธํฉ๋๋ค.Major Upgrade ๊ณผ์ ์์ Cache Key·Artifact ๋์·์ธ์ฆ ๋ฐฉ์์ด ๋ฐ๋์ง ์์๋์ง ํ์ธํฉ๋๋ค.
๋ชจ๋ Runner Group์์ ์ต์ Action์ด ์คํ๋๋์ง ํ์ธํฉ๋๋ค.
๋ค๋ฅธ 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 ๊ฒ์์ ํ ๋ฒ ๋๋ ค๋ณด์ธ์.
์ ๋๋ค. ๐ง
Network History์ YH์์ต๋๋ค.
โป ์ด ๊ธ์ 2026๋ 9์ 22์ผ ๊ธฐ์ค GitHub ๊ณต์ Changelog, Actions Metadata ๋ฌธ์, actions/checkout·setup-node·setup-python ๊ณต์ Repository๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑํ์ต๋๋ค. Action์ ์ต์ Major Version๊ณผ Runner ์ต์๋ฒ์ ์ ์ดํ ๋ณ๊ฒฝ๋ ์ ์์ผ๋ฏ๋ก ์ค์ ์์ ์ ๊ฐ Action์ ์ต์ Release Notes๋ฅผ ๋ค์ ํ์ธํ์ธ์.