Node 20에서 Node 24로 GitHub Actions 일괄 마이그레이션

발행: (2026년 1월 16일 오전 02:08 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

GitHub 조직을 관리한다면, 이런 상황을 잘 아실 겁니다: GitHub가 Node.js 버전 폐지를 발표하면, 갑자기 받은 편지함에 경고가 가득합니다.

Node 20이 유지 관리 모드에 진입하면서 .github/workflows 파일이 수십 개씩 있을 텐데, 모두 버전을 올려야 합니다. 각 레포를 복제하고, YAML을 수정하고, 커밋하고, 푸시하고, PR을 열어야 … 50번을 반복할 수도 있겠죠.

아니면 multi-gitter 로 한 번에 처리할 수 있습니다.

The One-Shot Fix

multi-gitter는 조직 내 모든 레포지토리에서 스크립트를 컨텍스트에 맞게 실행할 수 있게 해 주는 오픈‑소스 도구입니다. 복제, 브랜치 생성, 커밋, PR 생성까지 자동으로 처리해 줍니다.

아래와 같이 3분 안에 전체 조직의 Node 버전을 한 번에 올릴 수 있습니다.

1. The Script

먼저 bump-node.sh 라는 간단한 스크립트를 만듭니다. 이 스크립트는 각 레포지토리 안에서 실행됩니다. sed 를 이용해 워크플로 파일에 있는 버전 번호를 찾아 교체합니다.

스크립트는 macOS(BSD sed)와 Linux(GNU sed) 사이의 문법 차이를 자동으로 처리합니다.

#!/bin/bash

TARGET_DIR=".github/workflows"
SEARCH="node-version: 20"
REPLACE="node-version: 24"

# If the directory doesn't exist, stop here.
if [ ! -d "$TARGET_DIR" ]; then
    exit 0
fi

# Find YAML files and replace the version string
# We use a conditional check to ensure this works on both macOS and Linux
# "sed --version" returns 0 on GNU (Linux), but fails on BSD (macOS).
if sed --version >/dev/null 2>&1; then
    # Linux (standard GNU sed)
    find "$TARGET_DIR" -name "*.yml" -o -name "*.yaml" | xargs -I {} sed -i "s/$SEARCH/$REPLACE/g" {}
else
    # macOS (BSD sed)
    find "$TARGET_DIR" -name "*.yml" -o -name "*.yaml" | xargs -I {} sed -i '' "s/$SEARCH/$REPLACE/g" {}
fi

실행 권한도 부여해야 합니다:

chmod +x ./bump-node.sh

2. The Command

다음 명령을 실행해 multi-gitter 로 스크립트를 조직 전체에 적용합니다 (예: my-company-org).

multi-gitter run ./bump-node.sh \
  --org my-company-org \
  --branch upgrade-to-node-24 \
  --pr-title "Upgrade node version from 20 to 24" \
  --pr-body "Bumping node version to 24 in GitHub action due to deprecation."

3. The Result

multi-gitter 가 레포지토리를 하나씩 순회합니다. 스크립트가 변경을 만들면(즉, 업데이트할 파일을 찾으면) 도구가 자동으로:

  • 레포를 포크/클론
  • upgrade-to-node-24 브랜치에 변경 사항 푸시
  • 설명과 함께 Pull Request 생성

을 수행합니다.

--interactive 플래그를 사용하면 PR이 생성되기 전에 터미널에서 변경 내용을 검토할 수도 있습니다.

Why this matters

버전 업그레이드 같은 유지 보수 작업이 스프린트를 잡아먹게 해서는 안 됩니다. 이러한 변경을 위해 전체 GitHub 조직을 하나의 모노레포처럼 다루면 컨텍스트 전환에 드는 시간을 크게 절감할 수 있습니다.

multi-gitter on GitHub 를 확인해 설치하고, 레포지토리를 대량으로 관리할 수 있는 더 많은 레시피를 살펴보세요.

Back to Blog

관련 글

더 보기 »

기술은 구원자가 아니라 촉진자다

왜 사고의 명확성이 사용하는 도구보다 더 중요한가? Technology는 종종 마법 스위치처럼 취급된다—켜기만 하면 모든 것이 개선된다. 새로운 software, ...

에이전틱 코딩에 입문하기

Copilot Agent와의 경험 나는 주로 GitHub Copilot을 사용해 인라인 편집과 PR 리뷰를 수행했으며, 대부분의 사고는 내 머리로 했습니다. 최근 나는 t...