사내 NPM 저장소 구축, GitHub Packages vs Sonatype Nexus
Git+SSH 방식의 비공개 패키지 관리의 문제점을 인지하고, GitHub Packages 도입을 시도함
GitHub Packages의 스코프 충돌 문제로 인해 Sonatype Nexus로 전환, npm 저장소 구축
Sonatype Nexus에서 npm login 및 .npmrc 설정을 통해 사내 패키지 배포 환경을 구축
GitHub Packages 스코프 충돌 문제
GitHub Packages는 스코프 기반 패키지 관리를 지원하지만, 서로 다른 저장소 간의 스코프 충돌 문제가 발생할 수 있다. 구체적으로, 동일 스코프 내에서 GitHub Packages와 npm 저장소의 패키지 간 충돌이 발생하여, 원하는 패키지를 가져오지 못하는 상황이 발생한다. 따라서, 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 파이프라인을 구축하여 배포 자동화를 실현한다.