Unisquads
로그인
홈
이용약관·개인정보처리방침·콘텐츠정책·© 2026 Unisquads
이용약관·개인정보처리방침·콘텐츠정책
© 2026 Unisquads. All rights reserved.

GitHub Packages (r1)

이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.24 10:59

GitHub Packages

정식 명칭

GitHub Packages

제공사

GitHub

서비스 유형

폴리글랏 패키지 레지스트리 (패키지 저장소)

정식 서비스 시작

2021년 6월 21일[?]

주요 호환 레지스트리

npm.pkg.github.com

maven.pkg.github.com

nuget.pkg.github.com

rubygems.pkg.github.com

ghcr.io

상세 정보

베타 서비스 시작

2020년 9월 1일[?]

2021년 5월 14일[?]

마이그레이션

2021년 6월 21일부터 기존 docker 레지스트리가 전부 GHCR로 마이그레이션

패키지 소유 및 관리

패키지는 개인 사용자 또는 조직에 종속됨

개인 사용자: https://github.com/사용자명?tab=packages

조직: https://github.com/orgs/조직명/packages

저장소와의 관계

저장소와 1:1로만 한정되지 않음

하나의 저장소에서 여러 패키지 배포 가능

저장소와 완전히 비종속된 패키지 배포도 가능

GitHub Action 연동

GitHub Action과 상성이 좋음

GITHUB_TOKEN은 기본적으로 연결된 패키지에 write:packages 권한 보유

Docker 관련 액션 생태계가 잘 구축됨

GHCR (GitHub Container Registry)

OCI 호환 컨테이너 레지스트리

org.opencontainers.image.source 레이블로 저장소와 패키지 자동 연결

사용 사례

단일 조직 내 polyrepo 구축 시 유용

모노레포 파이프라인에도 적합

1. 개요

GitHub Packages는 GitHub가 제공하는 폴리글랏 패키지 레지스트리 서비스이다. 이는 소프트웨어 개발에서 사용되는 다양한 패키지, 즉 코드 라이브러리나 애플리케이션을 배포하고 관리할 수 있는 저장소 기능을 말한다.

이 서비스는 npm, Maven, NuGet, RubyGems 등 여러 프로그래밍 언어와 생태계의 패키지 관리자와 호환된다. 또한 OCI 표준을 따르는 컨테이너 이미지를 위한 전용 레지스트리인 GHCR도 포함하고 있다. 이를 통해 개발자는 단일 플랫폼에서 다양한 종류의 패키지를 통합적으로 관리할 수 있다.

GitHub Packages의 핵심 특징은 GitHub 저장소와의 긴밀한 통합에 있다. 패키지는 특정 저장소와 연결되어 배포 및 버전 관리를 할 수 있으며, GitHub Actions와의 연동을 통해 코드 변경 시 자동으로 패키지를 빌드하고 배포하는 CI/CD 파이프라인을 쉽게 구성할 수 있다.

2. 역사

GitHub Packages는 GitHub가 제공하는 통합 패키지 관리 서비스로, 2021년 6월 21일 정식 서비스가 시작되었다. 이 서비스는 npm, Maven, NuGet, RubyGems 등 다양한 패키지 매니저와 호환되는 폴리글랏 패키지 레지스트리를 지향한다. 특히 컨테이너 이미지를 위한 OCI 호환 레지스트리인 GHCR(GitHub Container Registry)이 핵심 구성 요소로 자리 잡았다.

서비스의 역사는 2020년 9월 1일 GHCR이 공개 베타 기능으로 추가되면서 본격화되었다. 이후 2021년 5월 14일 비공개 베타 액세스가 시작되었고, 약 한 달 후인 2021년 6월 21일 GHCR이 정식 서비스로 편입되었다. 이와 동시에 기존의 docker.pkg.github.com 레지스트리는 지원이 중단되고 모든 도커 이미지가 GHCR로 마이그레이션되었다. 이는 GitHub가 패키지 관리 생태계를 단일화하고 통합된 경험을 제공하기 위한 중요한 전환점이었다.

3. 호환 레지스트리

GitHub Packages는 여러 패키지 관리 시스템과 호환되는 폴리글랏 레지스트리 서비스이다. 주요 패키지 유형별로 전용 레지스트리 도메인을 제공하여, 기존의 클라이언트 도구와 원활하게 연동되도록 설계되었다.

주요 호환 레지스트리로는 npm 패키지를 위한 npm.pkg.github.com, JVM 기반 언어의 Maven 및 Gradle과 호환되는 maven.pkg.github.com, .NET 생태계의 NuGet을 위한 nuget.pkg.github.com, 그리고 Ruby의 RubyGems를 위한 rubygems.pkg.github.com이 있다. 특히 컨테이너 이미지를 위한 OCI 호환 레지스트리인 ghcr.io는 GitHub Container Registry(GHCR)의 약자로, Docker 이미지 배포에 널리 사용된다. 이전에 사용되던 docker.pkg.github.com 도메인은 GHCR로 완전히 마이그레이션되어 지원이 중단되었다.

이러한 다중 레지스트리 지원 덕분에 개발자는 JavaScript, Java, C#, Ruby 등 다양한 언어와 프레임워크로 작성된 패키지를 GitHub의 통합 플랫폼 내에서 관리할 수 있다. 각 레지스트리는 해당 패키지 관리자의 표준 클라이언트(npm CLI, Maven, dotnet CLI, gem 등)를 사용해 패키지를 게시하고 설치할 수 있도록 구성되어 있어, 기존 개발 워크플로우를 크게 변경하지 않고도 GitHub Packages를 도입할 수 있다.

4. 특징

4.1. 저장소와의 관계

GitHub Packages는 각 패키지가 GitHub의 저장소와 1:1로만 한정되지 않는 유연한 관계를 가진다. 패키지는 저장소와 마찬가지로 개인 사용자나 조직에 종속되며, 소유자의 프로필 페이지나 조직 설정 페이지에서 귀속된 모든 패키지를 한눈에 관리할 수 있다. 이는 폴리레포 환경에서 각 저장소가 독립적인 패키지를 배포하고 조직 내에서 참조할 때 매우 유용하다. 반대로 하나의 저장소에서 여러 패키지를 배포하는 모노레포 방식도 지원하며, 저장소와 완전히 무관한 독립 패키지를 배포하는 것도 가능하다.

이러한 설계는 개발 워크플로우에 큰 자유도를 제공한다. 예를 들어, 라이브러리나 도구를 별도의 저장소에서 개발하고 패키지로 배포하거나, 하나의 대규모 애플리케이션 저장소 내에서 여러 구성 요소를 개별 패키지로 관리할 수 있다. 패키지의 가시성과 접근 권한은 연결된 저장소의 설정과 별도로 관리되며, 퍼블릭 저장소에서 프라이빗 패키지를 배포하거나 그 반대의 경우도 설정에 따라 가능하다.

4.2. GitHub Actions 연동

GitHub Packages는 GitHub Actions와의 긴밀한 연동을 통해 소프트웨어 개발의 빌드, 테스트, 배포 파이프라인을 자동화하는 데 핵심적인 역할을 한다. 저장소에 코드를 푸시하거나 새 릴리스를 생성하는 등의 이벤트를 트리거로 하여, 사전 정의된 워크플로우가 실행되어 패키지를 자동으로 빌드하고 GitHub Packages에 배포할 수 있다. 이 과정에서 대부분의 경우 워크플로우는 저장소에 자동으로 부여되는 GITHUB_TOKEN을 사용하며, 이 토큰은 해당 저장소와 연결된 패키지에 대한 write:packages 권한을 기본적으로 가지고 있어 별도의 인증 정보를 비밀로 설정할 필요가 없다.

특히 컨테이너 이미지 관리에 사용되는 GHCR(GitHub Container Registry)과의 연동 생태계가 잘 구축되어 있다. GitHub Actions 마켓플레이스에는 setup-buildx-action, login-action, build-push-action 등 도커 이미지 빌드 및 푸시를 위한 공식 액션이 풍부하게 제공된다. 이 중 metadata-action은 워크플로우 실행 환경의 메타데이터(예: 저장소 주소, 커밋 해시, Git 참조)를 자동으로 읽어 컨테이너 이미지에 적절한 레이블과 태그를 생성해 주어, 배포된 패키지가 원본 소스 코드 저장소와 자동으로 연결되도록 한다. 이는 개발자의 수동 작업 부담을 크게 줄여준다.

이러한 자동화는 모노레포와 폴리레포 구조 모두에 유용하게 적용될 수 있다. 단일 저장소에서 여러 패키지를 관리하는 모노레포의 경우, 변경된 부분만을 감지하여 선택적으로 빌드하는 등의 고급 워크플로우를 구성할 수 있다. 반면, 조직 차원에서 여러 저장소(폴리레포)에 걸쳐 패키지를 분산 관리할 때도, 각 저장소의 CI/CD 파이프라인이 GitHub Packages를 표준 배포 대상으로 삼음으로써 통합된 패키지 관리 체계를 유지하기 쉽다.

4.3. GHCR과 메타데이터

GitHub Packages의 핵심 구성 요소 중 하나는 GitHub Container Registry이다. 이는 흔히 GHCR로 줄여 부르며, OCI 호환 컨테이너 레지스트리 서비스이다. GHCR은 도커 이미지를 포함한 다양한 컨테이너 이미지를 저장하고 배포하는 데 사용된다. GHCR 서비스는 2021년 6월 21일 정식 서비스로 편입되었으며, 기존의 docker.pkg.github.com 레지스트리는 GHCR로 완전히 마이그레이션되었다.

GHCR의 주요 특징은 배포된 패키지와 GitHub 저장소를 자동으로 연결해 주는 메타데이터 기능이다. 컨테이너 이미지에 org.opencontainers.image.source 레이블로 저장소 주소를 명시하면, GHCR은 해당 패키지를 자동으로 소스 저장소와 연결한다. 이 연결은 패키지 관리 페이지에서 직접 확인할 수 있어 소스 코드 추적성을 크게 향상시킨다. 이러한 메타데이터 처리는 GitHub Actions와의 연동을 통해 자동화하기 매우 유리하다.

특히 docker/metadata-action과 같은 공식 액션을 사용하면, 워크플로우 실행 환경의 메타데이터(예: 브랜치 이름, 태그, 커밋 해시)를 자동으로 읽어 적절한 이미지 태그와 레이블을 생성할 수 있다. 이는 사용자가 수동으로 태그를 파싱하거나 복잡한 스크립트를 작성할 필요 없이, 간단한 설정만으로도 표준화된 메타데이터를 패키지에 부여할 수 있게 해준다. 결과적으로 CI/CD 파이프라인의 구축과 유지 관리가 간소화된다.

이러한 메타데이터 자동화는 모노레포와 폴리레포 구축 시에도 유용하게 적용될 수 있다. 저장소 구조에 맞게 동적으로 태그와 레이블을 생성하는 HCL 기반의 docker-bake.hcl 파일을 구성하고, docker/bake-action을 활용하면 복잡한 다중 이미지 빌드 워크플로우도 효율적으로 관리할 수 있다.

5. 단점

GitHub Packages는 GitHub 생태계와의 긴밀한 통합이라는 장점을 가지고 있지만, 몇 가지 제약 사항과 단점도 존재한다. 가장 큰 문제는 지원하는 패키지 형식의 한계이다. GitHub Container Registry와 npm 레지스트리는 비교적 잘 지원되지만, PyPI, PHP용 Composer, Rust의 Crates.io, Kubernetes Helm 차트와 같은 다른 주요 패키지 생태계에 대한 지원은 오랫동안 요청만 되고 있을 뿐 공식적으로 제공되지 않고 있다. 이로 인해 폴리글랏 패키지 레지스트리라는 이름에 비해 실제로는 제한된 범위의 기술 스택에서만 사용 가능한 서비스라는 평가를 받는다.

특히 npm 레지스트리를 사용할 때 네임스페이스가 강제된다는 점은 특정 사용 사례에서 불편함을 초래한다. GitHub Packages의 npm 레지스트리는 npm.pkg.github.com이라는 단일 도메인을 사용하며, 패키지의 소유자(개인 또는 조직) 정보를 네임스페이스로 활용한다. 이는 사내에서 프라이빗 패키지를 관리할 때는 문제가 되지 않지만, 공개 npm 레지스트리의 미러를 구축하거나 특정 방식으로 패키지 네임스페이스를 구성해야 하는 복잡한 시나리오에서는 유연성이 부족할 수 있다.

결과적으로, GitHub Packages는 GitHub 플랫폼 내에서의 간편한 통합과 GitHub Actions를 통한 자동화에 최적화된 서비스이다. 그러나 다양한 패키지 형식을 모두 지원하는 범용적인 프라이빗 패키지 레지스트리 솔루션이 필요한 경우, Verdaccio나 Harbor와 같은 자체 호스팅형 레지스트리 솔루션을 도입하는 것이 더 나은 선택일 수 있다.

6. 기타

GitHub Packages는 GitHub의 생태계 내에서 소프트웨어 개발 및 배포의 연속성을 강화하는 서비스이다. 이 서비스는 코드 저장, 빌드 자동화, 패키지 배포를 하나의 플랫폼 내에서 통합 관리할 수 있게 하여, 개발자 경험을 단순화하고 생산성을 높이는 데 기여한다.

이 서비스는 특히 모노레포와 폴리레포 구조 모두에 유연하게 적용될 수 있다. 하나의 저장소에서 여러 패키지를 관리하거나, 반대로 여러 저장소의 패키지를 단일 조직 내에서 중앙 집중식으로 참조하는 것이 가능하다. 이러한 유연성은 팀의 개발 워크플로우와 프로젝트 구조에 맞춰 레지스트리를 활용할 수 있게 해준다.

GitHub Packages의 존재는 DevOps 및 CI/CD 파이프라인 구축에 있어 GitHub을 더욱 강력한 허브로 만든다. 코드 변경이 발생하면 GitHub Actions를 통해 자동으로 빌드되고 테스트된 후, 바로 동일 플랫폼의 레지스트리에 패키지로 배포되는 완전한 자동화 사이클을 구현할 수 있다. 이는 소프트웨어 공급망의 효율성과 안정성을 높이는 데 기여한다.

전반적으로 GitHub Packages는 GitHub이 제공하는 다양한 도구들과의 긴밀한 통합을 바탕으로, 소프트웨어 개발의 포괄적인 라이프사이클 관리에 대한 현대적인 접근 방식을 보여준다.

리비전 정보

버전r1
수정일2026.02.24 10:59
편집자unisquads
편집 요약AI 자동 생성