将控制盘上载到libcloud支持的任何云存储

wheelhouse-uploader的Python项目详细描述


使用apache libcloud将控制盘上传/下载到云存储/从云存储下载控制盘。 帮助包维护人员为其包构建轮子并上载 他们去找皮皮。

云存储容器通常由连续的 集成服务器,在不同的 平台(多个版本的Windows和OSX以及 Python)。在发布时,项目维护人员可以收集 为项目的特定版本生成包并上载它们 马上给皮皮。

安装

pip install wheelhouse-uploader

用法

典型的用例是:

  1. 持续集成(ci)工作人员构建和测试项目 例如,各种平台和python版本的包 使用命令:

[删除:bash pip install wheel python setup.py bdist戋wheel]

  1. ci工作者使用wheelhouse-uploader上载生成的 一个或多个云存储容器(例如,一个容器)的工件 每个平台,或一个用于主分支,另一个用于释放 标签:

[删除:bash python-m wheelhouse_uploader upload 容器名称]

  1. 项目维护者使用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.orghttp://appveyor.com,环境变量通常配置为 在诸如.travis.ymlappveyor.yml。秘密api密钥通常是加密和公开的 在这些文件中使用前缀secure:

dist/文件夹中的文件将上载到名为 my_wheelhouseCLOUDFILES(机架空间)云存储上 供应商。

您可以传递自定义的--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 registerupload以前被调用过。

待办事项

  • 在尽可能多的云存储提供商上进行测试(请发送 如果您可以让它在 非机架空间提供商),
  • 检查cdn激活是否在任何地方都有效(在rackspace上失败 目前:需要调查)否则解决方法是布尔 在管理Web用户界面中手动创建CDN,
  • 使使用云存储获取私有工件成为可能 协议而不是HTML索引页。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中超类的构造函数中获取扩展泛型类的泛型类型?   java如何获取实体A的不同记录,该实体A与另一个实体B有一对多的关联,并按B记录的最新时间戳的最大值排序   JavaJSF导航参数依赖关系   具有短密文的java SecretKey匿名IBE   鼠标事件“找不到符号”错误的java解决方案   调用mediaplayer后使用java。停止我不能再发出声音了。为我解释开发参考?   java如何在序列化Avro消息时传递空值   java Sip Servlet未发送邀请请求   java根据规则访问节点,并删除链表中所有未访问的节点   Java 6上的jmockit测试用例必须使用Java代理吗?   JSF转换器f:convertDateTime是如何工作的?   java如何清除Firebase云数据库中的数组?   基于日期的列表java自定义排序   测量Java对象的内存消耗(完全“在应用程序中”)   故障终止/崩溃时的javafx Java(FX)故障保护警报?   java访问名称编码未知的文件   java如何在BlackBerry中绘制实心正方形?   java从JTextArea中删除边框   java可以使用另一个bean的属性来引用spring容器XML配置   数据透视表中具有相同列索引的java计数列