样本travis ci+pypi积分

travis-pypi-integration的Python项目详细描述


这是在GitHub托管的代码库中使用Travis CI的一个非常简短的指南 将python包自动部署到pypi。 如果你对持续集成还不熟悉,或者想了解更多关于travis ci的信息, 先读Travis CI Core Concepts for Beginners

在本指南中,我们将创建一个travis ci管道以自动:

  • 启动MongoDB服务。需要mongo>=4.0
  • 运行pytest测试
  • 将包分发给pypi

所有代码都可以在https://github.com/musyoka-morris/travis-pypi-integration

先决条件

若要继续,请确保您有Travis CI帐户。 您可以通过访问https://travis-ci.org/然后单击Sign in with Github按钮轻松创建一个。

一。安装travis cli

首先我们需要安装Travis CLI,它是用ruby编写并作为gem发布的。 我们将使用这个工具来加密pypi密码。

安装gem:

sudo gem install travis

错误:找不到ruby的头文件…

如果遇到错误找不到ruby的头文件, 然后还需要安装ruby头文件。

那张stack overflow answer 救了我。总之,您需要按如下方式安装ruby开发头:

对于Debian和其他使用Debian风格打包的发行版:

sudo apt-get install ruby-dev

对于ubuntu:

sudo apt-get install ruby-all-dev

2.创建.travis.yml文件

.travis.yml

language:python# We are using Python languageinstall:pip install -r requirements.txt# Install requirementsscript:pytest# Run pytest tests

MongoDB服务

添加启动MongoDB服务的说明。

如果您对MongoDB服务不感兴趣,此部分是可选的。 我只是把它留在这里作为其他感兴趣的服务的指南。

...services:-mongodbbefore_script:-sleep 15# Sleep for 15 seconds to ensure the service is started before we issue any commands

默认情况下,travis加载mongo v2.4。我们指示travis加载mongo v4.0

...dist:xenialaddons:apt:sources:-mongodb-4.0-xenial# As defined on Travis Source safelist

PYPI部署

向pypi添加部署说明

...deploy:provider:pypiuser:musyoka-morris# Replace this with your pypi username. Password will be provided laterdistributions:sdist bdist_wheelskip_existing:true

三。添加加密的PYPI密码

注意到目前为止我们还没有指定pypi密码。 添加用公钥加密的密码的最简单方法是使用travis cli:

travis encrypt Your-Password-Here –add deploy.password

注意:这假设您正在项目目录中运行该命令。否则,添加-r owner/project

该命令会自动将加密密码添加到.travis.yml文件中。 .travis.yml文件应该如下所示:

...deploy:...user:musyoka-morrispassword:secure:YourEncryptedPasswordHere

四。按下git

Travis配置就绪。 只需将代码推到主分支,travis就会处理其余部分。

完整的.travis.yml文件可以在github上找到https://github.com/musyoka-morris/travis-pypi-integration

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

推荐PyPI第三方库


热门话题
mysql java语言非法参数异常?   java绘制控制流图   无法通过java eclipse中的ssh隧道远程连接到mysql数据库   直接在@SuppressWarnings之后出现java Eclipse错误(“未选中”)   java如何使用远程api google应用程序引擎api客户端?   工具栏中的java导航图标颜色未更改?   java返回带有映射子集的实体   java Spring重新加载属性Bean未更新   fileoutputstream正在获取java。木卫一。IOException:流关闭错误,但未显式关闭它   jsp标记显示java。时间使用jstl的LocalDateTime   java如何设置onFailure事件(Spring,Kafka)的超时?   将java元素添加到多个线程中的列表时,会跳过这些元素   JAVAutil。扫描程序Java读取空格后的整数值   java JMonkey过滤器着色器获取片段的世界位置   java从mongodb获取随机值   java如何使用Intent。标记\u活动\u清除\u顶部以清除活动堆栈?   多线程如何控制在多个端口上监听的java服务器应用程序   在具有复合键的相关实体之间插入数据时发生java Hibernate错误