样本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第三方库


热门话题
java无法使用与Gradle发行版的连接运行生成操作https://services.gradle.org/distributions/gradle4.10.2bin.zip'   java显式定位窗格   java试图在安卓中退出。堆栈未正确清除   Java读取大文件Java堆空间   java如何处理未知的实体引用?   java如何在Spring框架中实现UDP   java在安卓中使用异常   java Android密钥库   java如何在opus文件中添加元数据?   swing无法在Java构建中添加自定义JButton。格拉德尔项目   java如何在MongoDB中按特定字段获取计数组?   基于java网络的屏幕录制器插件   java使用JDBC从Oracle获取唯一索引的所有外键   带有返回值的java simplify方法调用