我正在使用 Azure DevOps 管道构建我的 python 包,然后将生成的工件上传到提要。一切正常,但是,我不喜欢.pypirc
我的存储库中有一个包含上传凭据的文件。
基本上我正在使用以下方式上传工件:
- script: 'twine upload -r imglib --config-file .pypirc dist/imglib-*.tar.gz'
是否有另一种存储凭据的方法,最好不要存储在任何人都可以编辑的文件中?我读了一些关于将凭据存储在密钥库中的内容,但我看不到如何更改管道(yml 文件)来执行此操作。
提前致谢。
编辑:
Shaykis answere 似乎是正确的方法,但是,我无法使用 bash 命令替换 .pypirc 文件中的占位符。当我在替换后打印 .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:
三个星号只是一个占位符。它与EDIT 2$PYPI_CRED_MAPPED
中提到的一样工作。由于另一个原因,构建过程失败了。我还使用答案中提供的 powershell 命令进行了尝试,并且效果也很好。所以谢谢你的帮助。