Я собираю свой пакет Python с помощью конвейера Azure DevOps, и сгенерированный артефакт затем загружается в фид.Все работает нормально, однако мне не нравится тот факт, что у меня есть файл .pypirc
, содержащий учетные данные для загрузки, которые хранятся в моем хранилище.
В основном я загружаю артефакт, используя:
- script: 'twine upload -r imglib --config-file .pypirc dist/imglib-*.tar.gz'
Есть ли другой способ сохранить учетные данные, желательно не в файле, который кто-либо может редактировать?Я читал кое-что о хранении учетных данных в хранилище ключей, но не вижу, как изменить конвейер (файл yml) для этого.
Заранее спасибо.
РЕДАКТИРОВАТЬ:
Ответ Shaykis кажется правильным, однако я не могу заменить заполнитель в файле .pypirc с помощью команды bash.Все, что я получаю, это три звездочки, когда я печатаю содержимое .pypirc после замены.Для замены я использую:
- script: 'sed -i "s/__password__/$PYPI_CRED_MAPPED/g" .pypirc'
displayName: 'Setting PyPI credentials'
env:
PYPI_CRED_MAPPED: $(pypi_cred)
Содержимое .pypirs (отображается во время задачи сборки с использованием bash cat .pypirc
. Есть ли более простой способ отладки процесса сборки?):
[distutils]
Index-servers =
pypi
imglib
[imglib]
Repository = https://pkgs.dev.azure.com/XXX/_packaging/imglib/pypi/upload
username = imglib
password = ***
Кто-нибудь знает, что там происходит?
РЕДАКТИРОВАТЬ 2:
Я также пытался использовать $env:PYPI_CRED_MAPPED
, но в этом случае только $env заменяется ничем, и все, что мне осталось, это :PYPI_CRED_MAPPED
.Кроме того, я смотрю на документы , и они используют переменную напрямую (например, $PYPI_CRED_MAPPED
, см. Внизу страницы).
РЕДАКТИРОВАТЬ 3:
Три звёздочки - просто заполнитель.Он работал с $PYPI_CRED_MAPPED
, как указано в EDIT 2 .Процесс сборки не удался по другой причине.Я также попробовал это с командой powershell, предоставленной в ответе, и это работало также.Так что спасибо вам за помощь.