将控制盘上载到libcloud支持的任何云存储
wheelhouse-uploader的Python项目详细描述
使用apache libcloud将控制盘上传/下载到云存储/从云存储下载控制盘。 帮助包维护人员为其包构建轮子并上载 他们去找皮皮。
云存储容器通常由连续的 集成服务器,在不同的 平台(多个版本的Windows和OSX以及 Python)。在发布时,项目维护人员可以收集 为项目的特定版本生成包并上载它们 马上给皮皮。
安装
pip install wheelhouse-uploader
用法
典型的用例是:
- 持续集成(ci)工作人员构建和测试项目 例如,各种平台和python版本的包 使用命令:
[删除:bash pip install wheel python setup.py bdist戋wheel]
- ci工作者使用wheelhouse-uploader上载生成的 一个或多个云存储容器(例如,一个容器)的工件 每个平台,或一个用于主分支,另一个用于释放 标签:
[删除:bash python-m wheelhouse_uploader upload 容器名称]
- 项目维护者使用wheelhouse-uploaderdistutils 用于获取特定 版本号到它的本地dist文件夹,并将它们全部上载到 一次给Pypi发布。
[删除:bash python setup.py sdist fetch_工件 全部上传]
将工件上载到云存储容器
使用以下命令:
python -m wheelhouse_uploader upload \ --username=mycloudaccountid --secret=xxx \ --local-folder=dist/ my_wheelhouse
或:
exportWHEELHOUSE_UPLOADER_USERNAME=mycloudaccountid exportWHEELHOUSE_UPLOADER_SECRET=xxx python -m wheelhouse_uploader upload --local-folder dist/ my_wheelhouse
在诸如http://travis-ci.org或 http://appveyor.com,环境变量通常配置为 在诸如.travis.yml或 appveyor.yml。秘密api密钥通常是加密和公开的 在这些文件中使用前缀secure:。
dist/文件夹中的文件将上载到名为 my_wheelhouse在CLOUDFILES(机架空间)云存储上 供应商。
您可以传递自定义的--providerparam来选择云存储 从supported providers列表中。
假设容器将使用 云提供程序cdn选项,upload命令还维护 index.html文件,其中包含以前上载到的所有文件的链接 集装箱。
建议将容器cdn缓存ttl配置为较短的 比通常的持续时间,如15分钟,能够快速执行 在ci服务器上载完所有工件后发布。
手动获取工件
下面的命令下载以前 发布到带有指向项目的HTML链接的索引的网页 文件:
python -m wheelhouse_uploader fetch \ --version=X.Y.Z --local-folder=dist/ \ project-name http://wheelhouse.example.org/
将以前存档的工件上载到pypi(已弃用)
deprecation notice:当以下操作仍然有效时,建议您 使用替代工具: twine这使得 脚本将包上传到pypi,而不需要处理distutils 以及setup.py。
确保项目的setup.py文件注册了 wheelhouse-uploaderdistutils扩展名:
cmdclass={}try:# Used by the release manager of the project to add support for:# python setup.py sdist fetch_artifacts upload_allimportwheelhouse_uploader.cmdcmdclass.update(vars(wheelhouse_uploader.cmd))exceptImportError:pass...setup(...cmdclass=cmdclass,)
放置由ci填充的公共工件存储库的url 项目的setup.cfg文件中的工人:
[wheelhouse_uploader]artifact_indexes= http://wheelhouse.site1.org/ http://wheelhouse.site2.org/
获取与项目当前版本匹配的所有工件 在本地setup.py文件中配置并将它们全部上载到pypi:
python setup.py fetch_artifacts upload_all
注意:这将重用存储在$HOME/.pypircif中的pypi凭据 python setup.py register或upload以前被调用过。
待办事项
- 在尽可能多的云存储提供商上进行测试(请发送 如果您可以让它在 非机架空间提供商),
- 检查cdn激活是否在任何地方都有效(在rackspace上失败 目前:需要调查)否则解决方法是布尔 在管理Web用户界面中手动创建CDN,
- 使使用云存储获取私有工件成为可能 协议而不是HTML索引页。