Вопрос или проблема
Существует ли способ указать организацию GitHub в качестве источника в poetry, чтобы мы могли использовать один токен для установки нескольких частных git репозиториев в качестве зависимостей?
[tool.poetry.dependencies]
python = "^3.12"
lib1 = {git = "https://github.com/MyOrg/lib1", branch="main"}
[[tool.poetry.source]]
name = "privaterepo1"
priority = "primary"
url = "https://github.com/MyOrg/lib1"
Это будет работать с poetry lock
и poetry install
, когда мы установим токен POETRY_HTTP_BASIC_PRIVATEREPO1_PASSWORD
с токеном личного доступа GitHub.
Но когда мы хотим установить несколько git репозиториев в качестве зависимостей, единственный найденный мной вариант — это определить один источник для каждого репозитория.
[tool.poetry.dependencies]
python = "^3.12"
lib1 = {git = "https://github.com/MyOrg/lib1", branch="main"}
lib2 = {git = "https://github.com/MyOrg/lib2", branch="main"}
[[tool.poetry.source]]
name = "privaterepo1"
priority = "primary"
url = "https://github.com/MyOrg/lib1"
[[tool.poetry.source]]
name = "privaterepo2"
priority = "primary"
url = "https://github.com/MyOrg/lib2"
И затем установить две переменные окружения POETRY_HTTP_BASIC_PRIVATEREPO1_PASSWORD
и POETRY_HTTP_BASIC_PRIVATEREPO2_PASSWORD
.
Есть ли способ указать одну организацию GitHub или префикс url, чтобы мы могли установить несколько репозиториев из одной организации, используя один токен? Что-то вроде этого.
[tool.poetry.dependencies]
python = "^3.12"
lib1 = {git = "https://github.com/MyOrg/lib1", branch="main"}
lib2 = {git = "https://github.com/MyOrg/lib2", branch="main"}
[[tool.poetry.source]]
name = "privaterepo"
priority = "primary"
url = "https://github.com/MyOrg"
И используя только один токен в переменной окружения POETRY_HTTP_BASIC_PRIVATEREPO_PASSWORD
Ответ или решение
Для использования GitHub организации в качестве источника пакетов Poetry для множества репозиториев можно воспользоваться следующим методом, позволяющим упростить установку и управление зависимостями. К сожалению, Poetry не поддерживает указание общей организации в качестве источника с использованием одного токена для всех репозиториев напрямую. Однако, есть обходной путь, который вы можете рассмотреть.
Использование одного персонального токена для установки зависимостей из нескольких репозиториев
-
Создайте персональный токен доступа на GitHub:
- Перейдите в настройки вашего профиля на GitHub.
- Во вкладке "Developer settings" выберите "Personal access tokens" и создайте новый токен с необходимыми правами доступа, такими как
repo
(чтобы получить доступ к частным репозиториям).
-
Настройте зависимости в вашем
pyproject.toml
:
Вы можете указать зависимость от нескольких репозиториев, но каждый из них должен иметь свой источник по умолчанию, и для каждого источника нужно будет указать отдельное значение токена. К сожалению, вы не можете указать один общий источник для всех репозиториев. Вот пример конфигурации:[tool.poetry.dependencies] python = "^3.12" lib1 = {git = "https://github.com/MyOrg/lib1", branch="main"} lib2 = {git = "https://github.com/MyOrg/lib2", branch="main"} [[tool.poetry.source]] name = "privaterepo1" priority = "primary" url = "https://github.com/MyOrg/lib1" [[tool.poetry.source]] name = "privaterepo2" priority = "primary" url = "https://github.com/MyOrg/lib2"
-
Задайте переменные окружения:
После настройки зависимостей настройте переменные окружения для вашего токена. К сожалению, вам придется создать отдельные переменные окружения для каждого источника:export POETRY_HTTP_BASIC_PRIVATEREPO1_PASSWORD=<ваш_токен> export POETRY_HTTP_BASIC_PRIVATEREPO2_PASSWORD=<ваш_токен>
Обходные решения
Хотя у Poetry сейчас нет возможности указывать один общий источник с использованием токена, вы можете рассмотреть возможность создания собственного пакета, который объединяет в себе другие пакеты, если это соответствует вашей архитектуре. Это позволит вам удобно управлять зависимостями и упростит их установку.
Заключение
На данный момент, к сожалению, нет стандартного способа указать общую организацию в качестве источника с одним токеном в зависимости от конкретных требований Poetry к конфигурации. Вам потребуется использовать отдельные источники для каждого из ваших частных репозиториев, что подразумевает наличие нескольких токенов. В будущем это может измениться, и вы можете следить за обновлениями в официальной документации Poetry.
Если у вас есть дополнительные вопросы или потребуется помощь в настройке, пожалуйста, дайте знать!