Pip установить колесо от частного репозитория github - PullRequest
1 голос
/ 21 января 2020

У нас есть частное репозиторий, содержащий проект Python, который создается setuptools на сервере CI / CD, а затем артефакт колеса возвращается в Github в качестве релиза. Этот процесс работает отлично, однако возвращение полученного колеса в другие процессы сборки, которые требуют его в качестве зависимости, не кажется таким простым.

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

Самая большая проблема связана с вытягиванием и установкой колеса в любых проектах потребления. Добавление URL-адреса колеса к requirements.txt получает пипс, чтобы попытаться вытащить колесо, но затем терпит неудачу со следующим:

Could not install requirement <ProjectName>==2.0 from
https://github.com/<CompanyName>/<ProjectName>/releases/download/v2.0.0/<ProjectName>-2.0-py3-none-any.whl (from -r 
requirements.txt (line 27)) because of HTTP error 404 Client Error: Not Found for url 

Ошибка 404 также возвращается, если после URL-адреса в частном окно браузера. Если за URL следует браузер, уже вошедший в GitHub, колесо возвращается. Проверка запроса, получившего колесо, показывает, что браузер отправил повара ie, который уведомил GitHub о том, что это колесо принадлежит мне, но отправка файлов cookie программно не кажется хорошей идеей.

Следующие вопросы оба касаются одной и той же топи c. Принятый ответ на первый вопрос, кажется, не очень изящен - надеюсь, где-нибудь найдется лучший метод!

Как загрузить бинарные файлы выпуска GitHub?

версия установки pip wheel из частного репозитория github

Спасибо

Стюарт

1 Ответ

1 голос
/ 05 апреля 2020

Существует удобный способ аутентификации получения с использованием токена доступа GitHub, который будет довольно прозрачно работать с несколькими различными инструментами, которые говорят на HTTP. Это файл ~ / .netr c в большинстве систем. Попробуйте следующее:

$ touch ~/.netrc && chmod 600 ~/.netrc && cat >> ~/.netrc << 'EOF'
machine github.com
login your_githubu_sername
password your_github_api_token
EOF

В последний раз я проверял, curl, wget и git (среди прочих) будут уважать этот файл по умолчанию для аутентификации HTTP (S) -запросов. Хотя я не уверен, что это имеет место в каждой конфигурации, вы можете быть удивлены тем, насколько повсеместна поддержка ~/.netrc в разных инструментах. Это Unixsm, я понятия не имею, поддерживается ли он в MacOS или Windows, но большинство дистрибутивов Linux поддерживают его в своих инструментах

...