经常混迹于 GitHub 的话就会发现很多项目都有一些徽章,出现最多的就数这两个了:
这些徽章都是可以点击的,第一个点进去是 https://www.travis-ci.com/,travis-ci 是一个 CI(Continuous integration,持续集成) 平台,主要提供集群编译、单测、集成测试的环境。.org
的服务对公有仓库免费,.com
面向私人、团队、公司的项目提供商业支持(收费)。使用起来非常简单,使用 Github 帐号登录进去,就能看见开始界面:
核心就是.travis.yml
的文件配置,一开始可以根据自己的语言选择初始的配置文件:https://docs.travis-ci.com/user/customizing-the-build#Specifying-Runtime-Versions。我这边的项目使用的是 Python,初始配置是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 |
官方注释可以说非常详细,我就不画蛇添足做说明了,根据自己代码实际情况做调整即可:
1 2 3 4 5 6 7 8 9 10 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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
。用来实现一些定制化需求,比如说我需要排除一些模块,不进入覆盖率统计:
1 2 3 4 5 | # https://docs.codecov.io/docs/ignoring-paths ignore: - "tests/*" - "demo/*" - "py_http_api_test/http_test.py" |
徽章生成代码的话在setting
中可以找到:
除了上面介绍的这两个徽章,还可以通过 shields.io 平台生成一些其它的徽章,甚至可以自定义,比如 https://img.shields.io/badge/Python-2.7-brightgreen.svg 就可以生成一个表示 Python 版本的徽章,别人能看懂就行。
1 | [![Support Python Version](https://img.shields.io/badge/Python-2.7-brightgreen.svg)](https://www.python.org/) |
当然徽章不是重点,不是越多的越牛逼,重要的是规范整个研发流程。上面说的两个其实都是属于 CI(持续集成)中最具代表性的两个环节,算是入门了。关于 CI 是一个很大的话题了,这个有机会以后再说一下。
参考资料: