[ nexus ] 2. 설정
nexus를 설치 하면 기본으로 하고 3rd party와 public repository 등을 사용 할수 있지만 여기서는 사용자를 추가하여 권한을 만들어 보려고 한다.
1. Repository 추가
Repository는 다음과 같은 종류가 있다.
Hosted Repository :
Snapshot, Releases 두 개의 타입이 있는데 개발한 JAR 파일을 ( 회사나 개인이 개발한 ) Repository에 배포하여 다른사람이 사용할수 있게 해주는 역활을 한다.
Snapshot은 개발용, Releases는 제품 용이 Repository가 되며 Snapshot은 개발을 하기때문에 개발중에 같은 버전으로 계속 배포가 가능하지만, Releases 는 제품 용이기에 같은 버전으로 한번밖에 배포가 되지 않는다.
Proxy Repository :
외부에 제공되는 repository 가 있는경우 ( 예 : jboss : https://repository.jboss.org/nexus/index.html ) proxy repository 에 등록하여 사용할수 있다.
Virtual Repository : 잘 모르겠다.;;;
Repository Group :
생성 되어 있는 repository를 하나로 묶어 별도의 url를 생성할수 있다.
그럼 왼쪽 메뉴에서 Repositories를 선택후 Add > Hosted Repository를 클릭한다.
등록 화면이 나오면
Repository ID, Provider, Repository Policy를 정하고 저장을 누른다.
여기서 Repository ID는 해당 Repository의 url 이 된다. ( http://{your ip}/nexus/content/repositories/test-release )
Snapshot 용도로 repository를 한번더 생성한다.
( Repository ID를 test-snapshot으로 하고 Repository Policy 도 snapshot으로 한다. )
목록에 다음과 같이 나오는 것을 확인 할수 있다.
마지막으로 위에서 만든 repository와 central , 3rd party를 묶은 group repository를 만들어야 하는데. 개인적으로 이 그룹은 어떻게 조합를 하냐에 따라 프로젝트 배포에 여러가지 장단점들이 있을수 있다고 생가한다. ( 글로 설명이 힘듦..ㅠㅠ )
여기서는 기본 적인 Releases, Snapshots와 Public Repositories를 제외하고 모두 포함 시키도록 하겠다.
아래그림에서 왼쪽이 포함 시킬 Repository 이고 오른쪽이 포함 하지 않을 Repository이다.
http://{yourip}/nexus/content/groups/test-group/ 로 접속할수 있는 repository가 만들어 졌다.
(3rd paty, test release, test snapshot 등등 포함한 )
2. Repository 권한
다음으로는 생성한 Repository에 대해 CRUD 권한을 주도록 한다.
Privileges 설정
왼쪽 Security > Privileges 가 나오는데 test로 검색을 하면 아래와 같이 위에서 등록한 repository가 나온게 된다.
Add... > Repository Target Privilege 른 선택하고 입력을 다음과 같이 입력하고 저장한다.
아래와 같이 CRUD가 추가된것을 볼수 있다.
Roles 설정
Security > Roles 에서 Add...>Nexus Role 을선택한다.
그리고 아래와 같이 입력한다.
Role/Privilege Management 에는 위에서 생성한 CRUD와 group의 view를 포함해서 만든다.
3. User 생성
Security > Users를 선택하고 Add...>Nexus User를 선택한다.
그리고 입력 사항들을 적고. Role Management에 위에서 생성한 test-role과 기본으로 제공하는 Nexus Deployment Role을 선택하고 저장한다.( development Role 이 아니다. )
해당 계정으로 다시 로그인하면 다음과 같이 test-group 의 repository만 보이게 된다.
물론 이 repository는 group 이기에 해당 그룹에 포함된 repository의 묶음이다.