travis CI
travis CI 是一个托管的分布式持续集成服务,用来构建并测试托管在Github上的软件项目,其中 CI 就是持续集成(continuous integration)的缩写。持续集成是在小代码变更中频繁合并的实践,而不是在开发周期结束时在大变更中合并。
为什么要使用 travis ?
它可以让你明白自己的项目在一个“空白环境”中,是否能正确运行;也可以让你知道,用不同的 Node.js 版本运行的话,有没有兼容性问题。
travis 默认带有的那些依赖,都是每个用户的机器上都会有,所以一旦你的项目在 travis 上面能够跑通,那么就不用担心别的用户安装不上。
作用:
- Travis CI通过自动构建和测试代码结果来支持开发过程,为代码变动提供即时反馈;
- CI,每次 PR 的代码,都要通过代码格式检查和单元测试;
- 将构建和测试,在一次运行中执行完成。
使用条件:
travis CI 只支持 Github,不支持其他代码托管服务。这意味着,你必须满足以下条件,才能使用 Travis CI:
- 拥有 GitHub 帐号
- 帐号下面有一个项目
- 项目里面有可运行的代码
- 项目还包含构建或测试脚本
travis 要求项目的根目录下面,必须有一个.travis.yml文件。这是配置文件,指定了 Travis 的行为。该文件必须保存在 Github 仓库里面,一旦代码仓库有新的 Commit,Travis 就会去找这个文件,执行里面的命令。
travis与github项目关联:
(1)在github上创建token:
登录github后设置token(用在travis环境变量设置中):settings — developer settings — personal access tokens (勾选repo)
注意:务必要复制
(2)进入 Travis-ci.com 并用github账户来登录;
(3)接受 Travis CI 的授权,就会被重定向到github;
(4)点击激活按钮,选择你想使用Travis CI 的github项目;
(5)设置环境变量:自定义名称、github_token
变量名:token(用在.travis.yml配置中)
(6)给你的项目添加一个 .travis.yml 文件,提交这个文件到你的github仓库。
.travis.yml的配置:
- language——运行环境
- node版本——用不同的 Node.js 版本运行的话,注意兼容性问题
- install命令——用来指定安装脚本(默认值:npm install )
- cache——缓存
- script——用来指定构建或测试脚本(默认值:npm test )
- after_script——上传测试报告至coveralls
- windows与Mac的区别:os——如果有需要在macOS上运行的测试,或者项目使用Swift或Objective-C,使用macOS环境: os: osx
language: node_js #指定运行环境
node_js:
# - '12'
# - '10'
- '8'
# - '6'
# - '4'
install:
- npm install --save-dev jest
- npm install coveralls --save-dev
cache:
directories: node_modules #缓存node_modules文件
script:
- npm run coveralls
after_script:
- cd ./public
- git init
- git config user.name "WangJuYan"
- git config user.email "1411460132@qq.com"
- git add .
- git commit -m "update"
- git push --force --quiet "https://${github_token}@${GH_REF}"
- cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js -repotoken IpUW3kFRlfOij9cYPGF82SmJFz1q9Bbgx
branches:
only:
- master #触发持续集成的分支
env:
global:
- GH_REF: github.com/WangJuYan/wjyTest.git #仓库地址
os: osx
运行状态:
Travis 每次运行,可能会返回四种状态:
- passed:运行成功,所有步骤的退出码都是0
- canceled:用户取消执行
- errored:有非零退出码,运行会立即停止
- failed :script有非零状态码 ,会继续运行
travis运行结果:
README.md文件中设置徽章
[![Build Status][travis-image]][travis-url]
[travis-url]: https://www.travis-ci.org/WangJuYan/wjyTest
[travis-image]: https://www.travis-ci.org/WangJuYan/wjyTest.svg?branch=master
coveralls
coveralls是一个检测代码单元测试覆盖率的工具,能方便的集成github ,可以从Travis CI跑的结果统计出单元测试对代码的覆盖率。
与GitHub绑定设置:
(1)进入 coveralls 并用github账户来登录;
(2)接受 coveralls 的授权,就会被重定向到github;
(3)点击激活按钮,选择你想使用coveralls测试的github项目;
(4)获取 repotoken,用在.travis.yml配置中。
基本应用:
运行测试:
jest --coverage
获取token,与travis关联
after_script:
- cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js -repotoken 7cRO6F7KccTCqDdDtXctp4aXnqveU8OqU
README.md设置徽章——覆盖率(coverage)
[![Coverage Status][coveralls-image]][coveralls-url]
[coveralls-url]: https://coveralls.io/github/WangJuYan/wjyTest?branch=master
[coveralls-image]: https://coveralls.io/repos/github/WangJuYan/wjyTest/badge.svg?branch=master