Artifact 관리를 위한 Nexus 활용 소개

Hyerin·2022년 9월 20일
0

Nexus 란?

가장 인기 있는 오픈소스 레파지토리로 docker, npm, yum, apt, helm등 다양한 포맷 및 artifact를 저장 및 관리를 지원합니다.

Nexus 사용 이유

사내에서 개발프로젝트를 진행할 때 외부 레파지토리를 사용하면 보안상의 이유로 사용하기 어렵다. 그래서 사내망에 별도의 레파지토리를 구성해서 사용해야한다.
이 때 Nexus를 사용하면 라이브러리 버전관리가 용이하다. 레파지토리를 통해 컴포넌트를 공유할 수 있기 때문에 개발자들끼리 결과물을 빠르게 공유하여 협업할 수 있다.


Nexus 장점

  1. 메인 저장소에 캐시역할을 수행할 수 있다.
    빌드하면 아티팩트(Artifact)를 빠르게 다운받을 수 있다.
  2. 자체 아키팩트 배포를 위한 프라이빗 레파지토리를 만들 수 있다.
    외부에 공개하고 싶지 않은 커스텀 개발 아티팩트는 프라이빗 레파지토리에 올리면 된다.
  3. 보안이 좋다.
    외부와 연결이 불가할 경우 중앙 레파지토리에 연결이 되지않아 빌드하지 못하는 문제가 발생한다. 이럴 때 Nexus 레파지토리만 외부에 연결시키면 빌드가 가능해진다.

Nexus와 Jenkins CI와의 연동

  1. develop code
    개발자는 코드를 IDE인 VSCode에서 개발한다.
  2. get dependencies
    개발코드에 사용되는 라이브러리 종속성을 일일이 다운받지 않고 Nexus와 같은 레파지토리에서 가져온다.(Nexus도 Gradle처럼 스크립트 작성 필수)
  3. gets dependencies & save build artefacts
    로컬에서 모듈 단위의 빌드를 통해 Nexus를 연동하듯이 젠킨스에서 통합빌드를 진행할 때 Nexus와 연동한다.
  4. commits code & triggers build
    개발 코드를 통합하기 위해 버전제어 저장소인 Github에 커밋한다. 커밋된 코드는 빌드를 위해 젠킨스로 가져온다.
    이 빌드를 할 때에도 필요한 아티팩트를 Nexus 레파지토리에서 가져온다.


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

profile
DevOps, 코딩 기록

0개의 댓글

Powered by GraphCDN, the GraphQL CDN