Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Python 라이브러리 발행과 소비자 관리

여러 Python transforms 저장소에서 같은 코드를 사용할 때는 Python library 저장소에서 Conda 패키지를 발행하는 방식이 권장됩니다. Python transforms 저장소 버전 1.23.1 이상에서 라이브러리 발행을 지원합니다.

저장소와 패키지 이름

공유 코드용 저장소를 만들고 Python Library 템플릿으로 초기화합니다. 배포할 라이브러리 이름은 초기 저장소 이름에서 정합니다. 나중에 바꾸려면 숨김 gradle.properties의 condaPackageName을 수정합니다.

이 이름에는 ASCII 소문자, 숫자와 하이픈을 사용할 수 있습니다. 그 밖의 문자 연속은 하이픈 하나로 바꿉니다.

저장소 이름 예발행 패키지 이름
my_library repomy-library-repo
Foobar _baz$$$foobar-baz-

Python 코드의 import 이름은 이 배포 이름과 별개입니다. __init__.py를 가진 폴더가 Python package가 되며 그 아래 .py 파일이 모듈입니다. 기본 패키지 폴더의 이름을 바꾸거나 필요한 패키지를 추가합니다.

릴리스 tag

준비한 commit에 Tags에서 새 tag를 만듭니다. 기본적으로 tag가 붙은 commit만 발행됩니다. 현재 브랜치 상태나 특정 commit을 선택할 수 있습니다.

태그 이름은 SLS 버전 형식을 따라야 합니다. 일반적인 릴리스는 1.0.0, release candidate는 1.0.0-rc1처럼 세 숫자와 소문자 rc 순번을 사용합니다. v1.0.0이나 숫자 구성 요소가 두 개인 1.0을 같은 형식으로 취급하지 않습니다.

SLS에는 1.0.0-1-gaaaaaaa 같은 commit 기반 snapshot과 1.0.0-rc1-1-gaaaaaaa 같은 rc snapshot 표현도 있습니다. 일반 공유 릴리스에서는 실제 발행 정책에 맞는 tag를 선택해야 합니다.

발행 조건을 바꾸려면 build.gradle의 조건을 수정할 수 있습니다. 예를 들어 특정 브랜치의 최신 commit 발행은 tag-only와 다른 정책이므로 릴리스 관리의 의도에 맞춰 선택합니다.

Checks와 새 버전 적용

Tag checks가 성공하면 해당 버전이 발행됩니다. Tags 목록과 Checks에서 상태를 확인합니다.

새 버전을 발행해도 소비 저장소가 자동으로 갱신되지는 않습니다. 소비자는 패키지 선택과 pin을 바꾸고 Conda 잠금 환경을 다시 해석하여 새 버전을 적용합니다. 라이브러리 발행과 소비자의 실제 설치 버전은 별도 단계입니다.

소비 권한

소비자는 공유 저장소에 기본적으로 Viewer 역할이 필요합니다. 변환 저장소의 Artifacts 설정에서 공유 저장소를 참조하도록 구성합니다.

다른 프로젝트에서 사용하면 backing repository와 프로젝트 참조의 가져오기 권한도 충족해야 합니다. 코드 패키지를 발견했다는 사실만으로 모든 전이 의존성의 권한이 생기지는 않습니다.

어떤 저장소가 쓰는지 확인

Artifact Repositories의 Search에서 Conda 형식으로 라이브러리를 찾습니다. 특정 버전의 Downloads 열 오른쪽을 펼치면 </> Consumers에서 사용하는 저장소들을 볼 수 있습니다.

패치나 버전 회수를 계획할 때 이 목록으로 영향을 확인합니다. 실제 회수와 재사용 제한은 Conda 아티팩트 recall의 계약을 따릅니다.