Публикация пакетов в Azure DeveOps Artifacts с помощью Python-Poetry

Фон

Я видел этот ответ: Как опубликовать в PyPI однако с Azure-Pipelines и Poetry, где предположительно создаются учетные данные, я не вижу такой же возможности, когда перехожу к Connect to FeedPython. Все, что я вижу, - это pip и twine, оба из которых показывают, как выполнять push-уведомления без аутентификации.

У меня есть настройка канала Python для артефактов Azure DevOps, в которой я являюсь ее администратором. Я хотел использовать poetry для публикации или включения пакета, над которым я работаю, в этот канал. Однако при запросе учетных данных я использую свой адрес электронной почты и пароль, которые использую для входа в систему, но я не думаю, что они верны. Я получаю 401 Неавторизованный. Итак, вот шаги, которые я делаю

Я создал проект

poetry new phil_hello_world --src

Затем я добавил код котельной пластины в src/phil_hello_world/__init__.py

__version__ = '0.1.0'


def hello_world():
"""Hello World Function
"""
print('Hello, World!')

Затем я смог собрать и установить пакет и использовать его в IDLE и некоторых других скриптах.

poetry build

Эта проблема

Итак, проблема заключается в правильной настройке моего канала артефактов Python для Azure DevOps. Они рекомендуют использовать шпагат или шпагат, но я пытаюсь использовать это, так что терпите.

Сначала я настраиваю репозиторий, чтобы Poetry узнала о нем. Мы собираемся выполнить локальную настройку.

poetry config repostiories.azure-python-feed https://pkgs.dev.azure.com/myOrg/Project/_packaging/azure-python-feed/pypi/upload

Затем я попытался просто подтолкнуть пакет, используя:

poetry publish -r azure-python-feed --build

Затем я получил 401 несанкционированную ошибку.

Итак, я попытался использовать свою регистрационную информацию, выполнив:

poetry config http-basic.azure-python-feed ${USER_EMAIL} ${USER_LOGIN_PASS}

buuuuut, я все равно получаю 401 Unauthorized. Я делаю что-то неправильно? Я обязательно добавил рекомендуемые пакеты, перечисленные во всплывающем окне Connect Me.

poetry add twine keyring artifacts-keyring
poetry install

person FilBot3    schedule 15.09.2020    source источник
comment
@ Арн, не совсем так. Я увидел это первым, но шаг, на котором они получают учетные данные, не существует, или я не вижу его в разделе «Артефакты Azure DevOps», когда я нажимаю «Подключиться к каналу». Я вижу только pip или twine, а затем это показывает, как настроить неаутентифицированный push.   -  person FilBot3    schedule 16.09.2020
comment
Жаль, что у меня нет доступа к среде azure DevOps, поэтому я не могу отладить проблему. Единственное, что я могу добавить, это то, что если вы воспользуетесь поэзией и настроите ее, вам точно не понадобится шпагат или зигзаг.   -  person Arne    schedule 16.09.2020
comment
Это правда. Вам не нужны шпагат или пип для загрузки пакетов. Однако, вероятно, pip уже установлен вместе с вашей установкой.   -  person FilBot3    schedule 04.11.2020
comment
@ FilBot3 ты понял, что тебе нужно сделать?   -  person Joshua Olson    schedule 18.02.2021


Ответы (1)


Чтобы сузить круг вопросов, вы можете попробовать следующее:

  1. Попробуйте создать новый PAT с Full access, а затем повторите попытку.
  2. Попробуйте запустить команду poetry publish -u $(username) -p $(password) ...

$(username) может быть любым, кроме пустого. Не забудьте также использовать параметр -r для определения вашего репозитория.

person Cece Dong - MSFT    schedule 16.09.2020
comment
Когда вы говорите $(username), это пустое поле, как и в других случаях, когда я взаимодействовал с Azure DevOps REST API, или это полный адрес электронной почты, который я использую для входа в систему? - person FilBot3; 16.09.2020
comment
Когда вы используете PAT, username должен быть любым. - person Cece Dong - MSFT; 17.09.2020
comment
Вероятно, вы также можете использовать $(System.AccessKey) для отправки в канал в Azure. - person FilBot3; 17.09.2020