NEXUS Repository에 python 파일 다량으로 업로드 하기

작성자 김민태 수정일 2022-12-12 14:33

#스파클링소다3.0, #스파클링소다3, #스파클링소다, #스파클링소다4.0, #스파클링소다4.0.0

아티클 관련 제품: SparklingSoDA3.0

들어가며

  • 스파클링소다에서 사용 중인데 NEXUS Repository는 내부망으로 사설 Python 패키지 저장소 공간을 제공합니다.
  • 해당 내부 사설 Repository에 필요한 Python 패키지들을 다량으로 업로드 하는 간편한 방법을 알아봅니다.



내용

NEXUS Repositroy에 업로드하는 간편한 방법 중 Twine이라는 패키지를 이용하는 것 입니다.
자신의 python 설치 환경에서 twine 패키지를 다운 받습니다.
pip install twine




그 후 자신의 Repository 이름과 계정 정보, Hosting URL 을 확인합니다.




확인 후 다운받은 twine의 저장소 설정 파일 생성을 위해 아래와 같은 .pypirc 저장소 파일을 작성 후 생성합니다.


vi /root/.pypirc
[distutils]
index-servers = pypi-hosted
[pypi-hosted]
repository: http://hub.sparklingsoda.io/repository/pypi-hosted/
username: admin
password: agilesoda01

( 예시입니다. )



그 후 업로드를 원하는 패키지들을 원하는 디렉토리 경로에 download 받습니다.



pwd
/root/packages_download
ls -al
total 27112
root root     4096 Dec 12 09:30 .
root root     4096 Dec 12 09:29 ..
root root 15702369 Dec 12 09:27 numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
root root 11285953 Dec 12 09:30 pandas-1.3.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
root root   247702 Dec 12 09:30 python_dateutil-2.8.2-py2.py3-none-any.whl
root root   498053 Dec 12 09:30 pytz-2022.6-py2.py3-none-any.whl
root root    11053 Dec 12 09:30 six-1.16.0-py2.py3-none-any.whl




아래의 커맨드를 사용하여 특정 디렉토리의 패키지들을 업로드 합니다.


twine upload --config-file /root/.pypirc -r pypi-hosted /root/packages_download/*
Uploading distributions to http://hub.sparklingsoda.io:80/repository/pypi-hosted/
Uploading *
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 38.1/38.1 MB • 00:00 • 141.4 MB/s




만약 이미 업로드 된 파일의 경우 간혹 아래와 같이 400 Bad request 에러가 발생할 수 있습니다.


twine upload --config-file /root/.pypirc -r pypi-hosted /root/packages_download/*
Uploading distributions to http://hub.sparklingsoda.io:80/repository/pypi-hosted/
Uploading *
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 38.1/38.1 MB • 00:00 • 141.4 MB/s
WARNING  Error during upload. Retry with the --verbose option for more details.                                                               
ERROR    HTTPError: 400 Bad Request from http://hub.sparklingsoda.io:80/repository/pypi-hosted/                                               
         Repository does not allow updating assets: pypi-hosted





이러한 경우를 대비해 간단한 스크립트를 제작했습니다.
아래의 스크립트를 이용해서 개별적으로 반복문을 돌릴 수 있습니다.
사용법은 다음과 같습니다.


bash Nexus_Python_Upload.sh <패키지 디렉토리 경로>
▶︎ 패키지들이 모여있는 디렉토리의 경로를 입력한 뒤 bash 스크립트를 실행하면 자동으로 해당 디렉토리 안에 들어있는 모든 패키지들이 순서대로 업로드 진행 됩니다.



✓ 스크립트는 하단에 첨부하였습니다.



마무리

  • 위와 같이 twine 패키지를 이용하여 NEXUS Repository에  Python 패키지들을 쉽게 다운로드 후 업로드 가능합니다.

아티클이 유용했나요?

훌륭합니다!

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

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

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

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

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

피드백 전송

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

02-558-8300