Nexus 란?
가장 인기 있는 오픈소스 레파지토리로 docker, npm, yum, apt, helm등 다양한 포맷 및 artifact를 저장 및 관리를 지원합니다.
Nexus 사용 이유
사내에서 개발프로젝트를 진행할 때 외부 레파지토리를 사용하면 보안상의 이유로 사용하기 어렵다. 그래서 사내망에 별도의 레파지토리를 구성해서 사용해야한다.
이 때 Nexus를 사용하면 라이브러리 버전관리가 용이하다. 레파지토리를 통해 컴포넌트를 공유할 수 있기 때문에 개발자들끼리 결과물을 빠르게 공유하여 협업할 수 있다.
Nexus 장점
- 메인 저장소에 캐시역할을 수행할 수 있다.
빌드하면 아티팩트(Artifact)를 빠르게 다운받을 수 있다.
- 자체 아키팩트 배포를 위한 프라이빗 레파지토리를 만들 수 있다.
외부에 공개하고 싶지 않은 커스텀 개발 아티팩트는 프라이빗 레파지토리에 올리면 된다.
- 보안이 좋다.
외부와 연결이 불가할 경우 중앙 레파지토리에 연결이 되지않아 빌드하지 못하는 문제가 발생한다. 이럴 때 Nexus 레파지토리만 외부에 연결시키면 빌드가 가능해진다.
Nexus와 Jenkins CI와의 연동
- develop code
개발자는 코드를 IDE인 VSCode에서 개발한다.
- get dependencies
개발코드에 사용되는 라이브러리 종속성을 일일이 다운받지 않고 Nexus와 같은 레파지토리에서 가져온다.(Nexus도 Gradle처럼 스크립트 작성 필수)
- gets dependencies & save build artefacts
로컬에서 모듈 단위의 빌드를 통해 Nexus를 연동하듯이 젠킨스에서 통합빌드를 진행할 때 Nexus와 연동한다.
- commits code & triggers build
개발 코드를 통합하기 위해 버전제어 저장소인 Github에 커밋한다. 커밋된 코드는 빌드를 위해 젠킨스로 가져온다.
이 빌드를 할 때에도 필요한 아티팩트를 Nexus 레파지토리에서 가져온다.

<출처>
패스트캠퍼스 강의
Kubernetes와 Docker로 한 번에 끝내는 컨테이너 기반 MSA