经常混迹于 GitHub 的话就会发现很多项目都有一些徽章,出现最多的就数这两个了:
这些徽章都是可以点击的,第一个点进去是 travis-ci.org/,travis-ci 是一个 CI(Continuous integration,持续集成) 平台,主要提供集群编译、单测、集成测试的环境。.org 的服务对公有仓库免费,.com 面向私人、团队、公司的项目提供商业支持(收费)。使用起来非常简单,使用 Github
帐号登录进去,就能看见开始界面:
核心就是.travis.yml的文件配置,一开始可以根据自己的语言选择初始的配置文件:docs.travis-ci.com/user/custom…。我这边的项目使用的是
Python,初始配置是:
language: python
python:
- "2.6"
- "2.7"
- "3.2"
- "3.3"
- "3.4"
# PyPy versions
- "pypy" # PyPy2 2.5.0
- "pypy3" # Pypy3 2.4.0
- "pypy-5.3.1"
# command to install dependencies
install:
- pip install .
- pip install -r requirements.txt
# command to run tests
script: pytest
官方注释可以说非常详细,我就不画蛇添足做说明了,根据自己代码实际情况做调整即可:
language: python
python:
- "2.7"
# command to install dependencies
install:
- pip install -r requirements.txt
# command to run tests
script:
- nosetests -sv tests
- nosetests -c demo/nose.cfg demo
配置好之后再 push 代码,就能在 travis-ci 页面上看见项目的构建、测试结果了:
点击图标就能生成我们需要的 MD 语法的代码了,粘贴进 README.MD 中就能显示了。
第二个徽章是 codecov.io(单测覆盖率统计平台),接入过程也很简单,也是不同语言选择不同的配置文件,codecov 可以无缝衔接 travis-ci,只需要在原来的配置文件上稍作修改即可,核心就是生成单测的结果文件。修改后的 .travis.yml
language: python
python:
- "2.7"
# command to install dependencies
install:
- pip install -r requirements.txt
- pip install codecov
# command to run tests
script:
- nosetests -sv --with-coverage --cover-tests --cover-package=py_http_api_test tests
- nosetests -c demo/nose.cfg demo
after_success:
- codecov
在原来的基础上多了 codecov nose 插件的下载和运行单测时多了--with-coverage等参数。最后还是再次 push 代码就能看见单测覆盖率报告了:
codecov 还有自己的配置文件:codecov.yml。用来实现一些定制化需求,比如说我需要排除一些模块,不进入覆盖率统计:
# https://docs.codecov.io/docs/ignoring-paths
ignore:
- "tests/*"
- "demo/*"
- "py_http_api_test/http_test.py"
徽章生成代码的话在setting中可以找到:
除了上面介绍的这两个徽章,还可以通过 shields.io 平台生成一些其它的徽章,甚至可以自定义,比如 img.shields.io/badge/Pytho… 就可以生成一个表示 Python 版本的徽章,别人能看懂就行。
[](https://www.python.org/)
当然徽章不是重点,不是越多的越牛逼,重要的是规范整个研发流程。上面说的两个其实都是属于 CI(持续集成)中最具代表性的两个环节,算是入门了。关于 CI 是一个很大的话题了,这个有机会以后再说一下。
参考资料:
开源项目徽章集锦,segmentfault.com/a/119000000…






