NEXUS Repository에 API로 패키지들을 업로드 하는 방법

작성자 김민태 수정일 2023-03-13 09:31

#SparklingSoDA3.0, #SparklingSoDA3, #SparklingSoDA, #스파클링소다, #스파클링소다3

아티클 관련 제품: SparklingSoDA3.0

들어가며

  • NEXUS Repository는 기본적으로 관리자 로그인을 통해 UI에서 패키지를 업로드 할 수 있습니다.


  • 하지만 Python 패키지를 제외한 기타 R 및 Yum, Docker 이미지들은 UI에서 업로드 기능을 제공하지 않습니다.


  • 이러한 경우 아래의 API를 호출하여 NEXUS Repository에 원하는 파일 및 패키지 (이미지)들을 업로드 할 수 있습니다.






내용




먼저 NEXUS Repository에 접속합니다.





Browse 버튼을 눌러 업로드를 하고자 하는 대상의 저장소의 이름을 확인합니다.

대부분 업로드하는 포맷(형식) 이름에 + repo 혹은 hosted 라는 형식의 저장소 이름이 설정되어 있을 것 입니다.


Python 패키지를 업로드 하고자 하는 경우
ex) pypi-repo  or  pypi-hosted

R 패키지를 업로드 하고자 하는 경우
ex) r-repo   or   r-hosted

etc..






NEXUS Repository와 통신이 가능한 환경에서 다음의 curl API를 호출합니다. 
(NEXUS가 실행 된 노드와 통신이 가능한 환경이라면 운영체제를 가리지 않고 어느 곳에서도 실행이 가능합니다.)



curl -u admin:admin123 -X POST "http://<NEXUS주소>:8081/service/rest/v1/components?repository=<업로드 저장소 이름>" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "pypi.asset=@<업로드할 파일 풀네임>"
curl -u admin:admin123 -X POST "http://<NEXUS주소>:8081/service/rest/v1/components?repository=<업로드 저장소 이름>" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "pypi.asset=@<업로드할 파일 풀네임>"









만약 NEXUS가 실행 된 노드에서 리눅스 터미널 명령어로 위와 같은 API를 실행한다면, 아래와 같은 예시를 참고하여 작업을 진행합니다.


ls -al
-rw-r--r--. 1 root root     typing_extensions-4.5.0-py3-none-any.whl
curl -u admin:admin123 -X POST "http://repo.sparklingsoda.io:8081/service/rest/v1/components?repository=pypi-repo" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "pypi.asset=@typing_extensions-4.5.0-py3-none-any.whl"







* 예시로 protobuf라는 패키지를 위의 API를 이용하여 업로드 진행해보겠습니다.

* 현재 리스트에는 없는 4.22.0 버전의 protobuf 패키지를 업로드 합니다.

업로드할 패키지 파일이 위치한 디렉토리에서 아래의 명령어를 실행합니다.


curl -u admin:admin123 -X POST "http://repo.sparklingsoda.io:8081/service/rest/v1/components?repository=pypi-repo" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "pypi.asset=@protobuf-4.22.0-cp37-abi3-manylinux2014_x86_64.whl"

※  /etc/hosts에 repo.sparklingsoda.io가 등록되어 있지 않다면 실제 ip주소를 입력해야 합니다.






API로 패키지 업로드 후 아래와 같이 4.22.0 파일이 추가된 것을 확인할 수 있습니다.








마무리

  • 위와 같은 방법으로 NEXUS Repository에서 UI의 upload기능을 이용하지 않고도 통신이 가능한 노드에서 API를 호출하여 패키지 및 파일들을 업로드 할 수 있습니다.

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300