Как использовать организацию GitHub в качестве источника пакетов Poetry для нескольких репозиториев кода

Вопрос или проблема

Существует ли способ указать организацию 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 не поддерживает указание общей организации в качестве источника с использованием одного токена для всех репозиториев напрямую. Однако, есть обходной путь, который вы можете рассмотреть.

Использование одного персонального токена для установки зависимостей из нескольких репозиториев

  1. Создайте персональный токен доступа на GitHub:

    • Перейдите в настройки вашего профиля на GitHub.
    • Во вкладке "Developer settings" выберите "Personal access tokens" и создайте новый токен с необходимыми правами доступа, такими как repo (чтобы получить доступ к частным репозиториям).
  2. Настройте зависимости в вашем 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"
  3. Задайте переменные окружения:
    После настройки зависимостей настройте переменные окружения для вашего токена. К сожалению, вам придется создать отдельные переменные окружения для каждого источника:

    export POETRY_HTTP_BASIC_PRIVATEREPO1_PASSWORD=<ваш_токен>
    export POETRY_HTTP_BASIC_PRIVATEREPO2_PASSWORD=<ваш_токен>

Обходные решения

Хотя у Poetry сейчас нет возможности указывать один общий источник с использованием токена, вы можете рассмотреть возможность создания собственного пакета, который объединяет в себе другие пакеты, если это соответствует вашей архитектуре. Это позволит вам удобно управлять зависимостями и упростит их установку.

Заключение

На данный момент, к сожалению, нет стандартного способа указать общую организацию в качестве источника с одним токеном в зависимости от конкретных требований Poetry к конфигурации. Вам потребуется использовать отдельные источники для каждого из ваших частных репозиториев, что подразумевает наличие нескольких токенов. В будущем это может измениться, и вы можете следить за обновлениями в официальной документации Poetry.

Если у вас есть дополнительные вопросы или потребуется помощь в настройке, пожалуйста, дайте знать!

Оцените материал
Добавить комментарий

Капча загружается...