사내 NPM 저장소 구축, GitHub Packages vs Sonatype Nexus

by DD
4년 전
조회수 7

Git+SSH 방식의 비공개 패키지 관리의 문제점을 인지하고, GitHub Packages 도입을 시도함

GitHub Packages의 스코프 충돌 문제로 인해 Sonatype Nexus로 전환, npm 저장소 구축

Sonatype Nexus에서 npm login.npmrc 설정을 통해 사내 패키지 배포 환경을 구축

GitHub Packages 스코프 충돌 문제

GitHub Packages는 스코프 기반 패키지 관리를 지원하지만, 서로 다른 저장소 간의 스코프 충돌 문제가 발생할 수 있다. 구체적으로, 동일 스코프 내에서 GitHub Packagesnpm 저장소의 패키지 간 충돌이 발생하여, 원하는 패키지를 가져오지 못하는 상황이 발생한다. 따라서, GitHub Packages 사용 시 스코프 관리에 주의해야 한다.

Sonatype Nexus를 활용한 NPM 저장소 구축

Sonatype Nexus를 사용하여 사내 NPM 저장소를 구축하는 과정을 설명한다. 먼저, hosted npm 저장소를 생성하고, 사용자에게 읽기/쓰기 권한을 부여한다. 따라서, npm login을 통해 인증하고, publishConfig.npmrc 설정을 통해 패키지를 배포할 수 있도록 구성한다. 결과적으로, 사내에서 안전하게 패키지를 관리할 수 있다.

GitHub Actions를 이용한 자동 배포

GitHub Actions를 사용하여 Sonatype Nexus에 패키지를 자동 배포하는 방법을 제시한다. .npmrc 파일Base64 인코딩된 _auth 값을 추가하여 인증한다. 따라서, workflow에서 NPM_TOKEN을 사용하여 인증 정보를 안전하게 관리한다. 결과적으로, CI/CD 파이프라인을 구축하여 배포 자동화를 실현한다.

사내 npm 패키지 저장소를 구축하기 위해 겪었던 과정들