Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

使用强大的Travis CI实现自动化部署,使用coveralls搭配测试代码覆盖率展示 #5

Open
zp1112 opened this issue Apr 19, 2018 · 0 comments
Labels

Comments

@zp1112
Copy link
Owner

zp1112 commented Apr 19, 2018

早些时候想知道人家开源的github上面的这俩badge是咋来的,大概知道是个代码编译成功,并测试通过,且展示测试代码覆盖率的东东,绿绿的看起来感觉很舒服很放心。

image

那么我们如何让自己的小代码也可以带上这看起来高大上,其实也没啥的东西呢。

首先我们的源码需要包含一些测试代码,并需要配置一些生成覆盖率的玩意。不想多说,随着tdd/bdd的流行,开源项目,不仅仅只是意味着贡献了一个开源项目,想要获得大家的信任和使用,对自己的源码就要有高要求,所以需要加测试,要把每一个函数都测试到(即代码覆盖率),让别人相信我的代码没有任何问题。而目前比较流行的测试栈一般为macha+istanbul+chai或者ava+istanbul+nyc等各种组合。

具体如何对源码进行测试并生成报告,可以参考这篇文章

持续部署工具Travish CI

Travish CI的意思是持续集成,在团队开发中,每个成员每天都会随时随地的进行代码的提交,如何防止提交的代码没有通过测试就成功提交,如何使得每次提交都能让每个成员得知,Travish CI让每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。

测试不通过的代码不能部署,配置了持续集成后,代码提交到服务器上,就可以自动跑测试,测试通过后,就可以部署到服务器上了。且Travis脚本可以做很多事情,可以模拟生产环境,进行项目的打包和其他编译操作,如果编译或者打包不通过,将无法成功提交到服务器,这里将要说的实际就是github服务器。

首先在项目根目录下添加.travis.yml文件

language: node_js
repo_token: COVERALLS.IO_TOKEN
node_js:
- '7'
cache:
  directories:
  - node_modules
script: npm run nyc

这里表示当push代码到github的时候,travis会自执行了测试命令npm run nyc

"nyc": "nyc ava -vs && nyc report --reporter=html",

npm run nyc执行了测试代码并生成测试报告.

travis CI的官网,打开想要实施自动持续部署的项目。
image

然后执行git的push操作,就能发现,travis该repo下已经开始自动部署测试了。可以看到控制台日志。
image

并且会发现,标题那里,出现了你想要的这玩意
image

点击这个badge,选择md格式,复制这个链接到你的项目的readme开头

image

再试这提交一次,你会发现,你的readme就多了这个绿色的表示passing的

测试覆盖率badge工具coveralls

本地安装coveralls工具

npm i -D coveralls

script里面添加一句coveralls命令

"coverage": "node ./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- --compilers js:babel-core/register --reporter mochawesome -R spec --timeout 5000 --recursive",
"coveralls": "npm run-script coverage && node ./node_modules/coveralls/bin/coveralls.js < coverage/lcov.info"

npm run coveralls`执行了代码覆盖率生成,并且将生成的数据发送到coveralls官网的服务器,关联到自己的对应的仓库。

然后在travis.yml末尾添加两句

after_script:  npm run coveralls
env:
  global:
    secure: 你的coveralls token加密后的

这里说一下这个secure怎么来的,首先到coveralls官网,使用github登陆,在ADD REPOS里面选择该repo

image

完了在repos里面该仓库下就能找到token

image

在项目根目录下新建.coveralls.yml,复制

service_name: travis-pro
repo_token: 你的token

由于这个token不要暴露在代码中,我们先在.gitignore里面把这个文件ignore掉,然后安装travis将token加密一下,具体方法是,

ruby -v  # 确保安装了ruby
gem install travis
# 注意: 在项目根目录下执行
travis encrypt COVERALLS_TOKE=你的token

就能得到很长的一段secure。

同时在界面底部找到badge图标,拿到md格式,粘贴到readme开头

image

然后提交代码,看到travis自动执行了两个脚本,一个是测试脚本,一个是代码覆盖率生成脚本,最后看到的界面是

travis:

image

coveralls:

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant