让你的Github项目持续集成,基于Travis-CI Coveralls

Travis-CI是国外新兴的开源持续集成构建项目,支持Github项目,使用了小清新的yml语法,通过yml语法来驱动执行。Github项目的支持非常简单,开通Travis后只需编写.travis.yml就能完成持续集成。

Coveralls是一个自动化测试覆盖率的服务,它能提供代码覆盖率并友好的展现。

让我们现在开始吧!

持续集成Travis CI

travis对Github的支持非常好,而且是免费使用。当然它也提供私有的专业服务,有点小贵。

开通Travis

浏览器中输入travis网址https://travis-ci.org/。

Alt text

使用github账号授权登录。添加项目,这里使用我写的Golang示例项目common。

Alt text

编写.travis.yml

在Github项目根目录下添加.travis.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
language: go

go:
- 1.7.x
- master

notifications:
email:
recipients:
- gunsluo@gmail.com
on_success: change
on_failure: always

install:

before_install:

script:
- go build

before_deploy:

deploy:

说明

  1. language指定开发语言
  2. notifications持续集成后邮件通知设置
  3. install依赖安装
  4. before_install依赖安装前执行
  5. script集成脚本
  6. before_deploy部署脚本前执行
  7. deploy部署脚本

其它配置项

提交.travis.yml

提交.travis.yml到Github,自动触发持续集成,到https://travis-ci.org/gunsluo/common查看结果

Alt text

到这里就用travis完成了持续集成,简单吧。

测试覆盖率Coveralls

首先编写自己的单元测试代码,我提供的实例项目已经实现。如何编写单元测试不是这里的重点,先忽略过吧。

开通Coveralls

coveralls官方网站使用github账号登录授权。

Alt text

添加项目

Alt text

加密repo_token

查看coveralls的repo_token。
Alt text

repo_token涉及安全不应该提交到.travis.yml,coveralls提供了非对称加密repo_token的方法。

加密命令travis是用ruby编写的。ruby gem的国外下载源很慢,更改安装源,提高下载速度。

1
2
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
gem sources -l

安装加密命令travis

1
gem install travis

加密

1
travis encrypt COVERALLS_TOKEN=your_repo_token

Alt text

修改.travis.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
language: go

go:
- master

notifications:
email:
recipients:
- gunsluo@gmail.com
on_success: change
on_failure: always

install:
- go get github.com/mattn/goveralls

before_install:

script:
- go test -v -covermode=count -coverprofile=coverage.out
- $HOME/gopath/bin/goveralls -coverprofile=coverage.out -service=travis-ci -repotoken $COVERALLS_TOKEN

before_deploy:

deploy:

env:
global:
secure: "q1OEufKH4mGRxto7qyrBQKmuEXUZl/JKJWEx2zLMNkSVI9xxEvDSFfpiyNlQevq8ZND34xsOH1+jVQMmAttFc5Ry6cDT/Lgb9F6Cc4WSjPVEpW69dYoyGAPvQNPhWQf8M5yYbUfEQqq088TPrvcIqoheZtdjEg4jRGzrOEu2cOubX5xFTBeRowfilzzOsHCfYIofpWFsEug0ffeo5RrgxYxN7w9utpHmIGU0vDaUZ/Ui0P4zxLQ1gG/18GAykj4+QnYVGDip+kOwCa/EevvmS0OZmwIkujgu1Xul3Dm5M9A1LoyCWaa5NKQh8SBqU4XZErhXlTIl5BKnLI6f7sElcFrH0ShFXosbfbgmmpwDB2et5RHYXoFAOE2qsitV3ZD2WvzGOwNtJNxYB//LCroza1JcGZe/PF+5Vkfzb9JwDcxCi2hP6HcA+oCSp3hvLkmQOgbANPa2ALCIi4r+PaGP5LNAfP4Izn9dEqRB/whGja1zYh8xgT+Yoo7useiMlYl0RcajkZ5EDJadR+UzCqqHxoTHiVw0qqO0EmN+N3wKDHYYfMebn9GSpLcWReZJajZxyzQ+6MHVbFrjJqKRgu4T+OePCv57vLp+gYjxDMqVsyIdlRTWzvaGmf+6IHUJMGztEc7QvOUPabNOawSEtquY2s2Q+IWiBrt/KjtofaJOIBA="

说明

  1. go get github.com/mattn/goveralls goveralls是coveralls对golang的测试覆盖率支持命令
  2. go test -v -covermode=count -coverprofile=coverage.out golang生成测试覆盖率文件
  3. $HOME/gopath/bin/goveralls -coverprofile=coverage.out -service=travis-ci -repotoken $COVERALLS_TOKEN 将测试覆盖率文件提交给coveralls
  4. env环境变量设置,travis提供的repo_token安全方式之一

Github项目添加图标

travis页面复制图标标签
Alt text

coveralls页面复制图标标签
Alt text

将标签写入README.md

1
[![Build Status](https://travis-ci.org/gunsluo/common.svg?branch=master)](https://travis-ci.org/gunsluo/common) [![Coverage Status](https://coveralls.io/repos/github/gunsluo/common/badge.svg?branch=master)](https://coveralls.io/github/gunsluo/common?branch=master)

提交后检查下效果吧

Alt text

ok, 项目可以直观看到编译和覆盖率的情况。