因为我个人维护了几个 Python 的 Pypi 包,所以有时在修复完 Bug 之后,总是会忘记推送到 Pypi 上,导致一些使用的人对我的 package 不是太满意,要发 issue 来问我是不是不维护了,事实上,我都是在维护的,只是因为个人疏忽忘记了更新 pypi 上的 tag,所以为了减少这种失误给其他的开发者带来困扰,我决定在我的 python 代码中加入 travis 集成,当我打完 tag 之后,自动推送到 pypi 上,这样就不用每次都自己手动提交一遍了。

如果你不知道如何手动提交代码到 pypi,可以先看一下我之前写过的一篇内容:搭建自己的 pip 源,这里就不赘述了,同时,对于如何编写一个 python 项目的 setup.py

我也不多说了,但是继续下面的步骤之前,我希望你已经有了一个完整的项目了,并且可以手动发布到 pypi 上。

第一步:配置项目的 travis 文件

travis 看一个项目是否被支持就看这个项目的根目录下面是否存在一个名字为: .travis.yml 的文件,然后里面的内容你可以参照这么写:

language: python
python:
- '2.7'
- '3.6'
install:
- pip install -r example/requirements.txt
script: python setup.py 

 test
deploy:
  - provider: pypi
    user: yylucifer
    password: ${PYPI_PASSWORD}
    on:
      python: 2.7
      tags: true
      branch: master
  - provider: pypi
    user: yylucifer
    password: ${PYPI_PASSWORD}
    on:
      python: 3.6
      tags: true
      branch: master

这里我选择了我的项目支持 Python2.7 和 Python 3.6 两个版本,然后选择了同时发布到 Python 2 和 Python 3 的 pypi 仓库中,然后将项目提交到 Github。

第二步:集成 Github

Travis 和 Github 集成有两种方式,分别是在 Github 上添加 App在 Travis 上同步 Github,我比较习惯于后者,下面就以后者的方式进行:

  1. 打开 https://travis-ci.org/

  2. 同时 Github 授权登录:

  3. 点击 settings,配置上你的 pypi 的密码,然后打开启动 travis:

  4. 等待触发构建

当你提交了新的代码或者推送了新的 Tag 的时候,travis 就会触发一次构建,这个构建的代码是你配置在 .travis.yml 文件里面的,例如我就是执行一下:python setup.py test,如果没有异常,并且是一个 tag 那么就发布到 Pypi 里面去了。