TravisCI构建正在为我的开源项目做准备,而我现在正在努力整合gulp-coveralls。在Coveralls.io上,我的存储库中找不到任何构建版本,即使Travis构建版已成功运行,因为我将我的回购添加到了Coveralls。
'There have been no builds for this repo.'
当我尝试运行gulp-coveralls gulp任务时,我收到此错误:
'Repo token could not be determined. Continuing without it.'
Error in plugin 'gulp-coveralls'
Bad response:422 {"message":"Couldn't find a repository matching this job.","error":true}
at handleError (/Users/sarah.green/angular-embedly/node_modules/gulp-coveralls/index.js:11:30)
at sendToCoverallsCallback (/Users/sarah.green/angular-embedly/node_modules/gulp-coveralls/index.js:19:9)
at /Users/sarah.green/angular-embedly/node_modules/gulp-coveralls/index.js:31:13
at Request._callback (/Users/sarah.green/angular-embedly/node_modules/gulp-coveralls/node_modules/coveralls/lib/sendToCoveralls.js:7:5)
at Request.self.callback (/Users/sarah.green/angular-embedly/node_modules/gulp-coveralls/node_modules/coveralls/node_modules/request/index.js:142:22)
at Request.EventEmitter.emit (events.js:98:17)
at Request.<anonymous> (/Users/sarah.green/angular-embedly/node_modules/gulp-coveralls/node_modules/coveralls/node_modules/request/index.js:856:14)
at Request.EventEmitter.emit (events.js:117:20)
at IncomingMessage.<anonymous> (/Users/sarah.green/angular-embedly/node_modules/gulp-coveralls/node_modules/coveralls/node_modules/request/index.js:808:12)
at IncomingMessage.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:919:16
at process._tickCallback (node.js:419:13)
这是我到目前为止所得到的:
我在package.json中的dev依赖项中的gulp-coveralls
gulpfile.js:
var coveralls = require('gulp-coveralls');
...
gulp.task('coveralls', function () {
gulp.src('coverage/**/lcov.info')
.pipe(coveralls());
});
karma.conf.js:
coverageReporter: {
type : 'lcov',
dir : 'coverage/'
}
Github:https://github.com/lithiumtech/angular-embedly
我使用Karma和PhantomJS来运行我的测试。肯定会生成文件coverage / lcov.info。知道会发生什么事吗?
答案 0 :(得分:4)
萨拉,
您缺少的是工作服存储库令牌。您必须前往coveralls.io并使用您的GitHub帐户创建登录。这将把你所有的回购拉成工作服。然后对于你想要使用工作服的回购,你可以通过点击“关闭”开关打开工作服。
现在点击“工作服上的视图”按钮,它会显示你的回购键。然后,您可以通过创建.coveralls.yml文件并将密钥复制到该文件中来进行设置。这应该可以解决你的问题。
答案 1 :(得分:0)
也许你的.coveralls.yml文件中有错误。如果您使用的是Travis CI,请尝试以下操作:
service_name: travis-ci
repo_token: token_given
如果您使用的是Travis Pro:
service_name: travis-pro
repo_token: token_given
我希望这会有用。
答案 2 :(得分:0)
对于在travis-ci.org中运行的GitHub版本,您不需要.coveralls.yml文件中的服务名称,只需要令牌。您也不需要在Travis中传递构建,只需成功生成LCOV数据和发送它的插件。
当我使用gulp.src
从文件中读取LCOV数据时,LCOV数据未正确发送到工作服,我遇到了一个问题。我最终工作的唯一方法是将LCOV数据直接发送到插件,而不是使用中间文件将其存储到第一个。
要将LCOV数据传输到gulp-coveralls 和都有JSON / HTML报告,最后我使用lazy-pipe
来创建可重复使用的步骤。
完整的项目可以在GitHub的angular-logger
找到// .coveralls.yml
repo_token: the_token
var jasmine = require('gulp-jasmine');
var cover = require('gulp-coverage');
var coveralls = require('gulp-coveralls');
var lazypipe = require('lazypipe');
(..)
// gulpfile.js
var testAndGather = lazypipe()
.pipe(cover.instrument, {
pattern: ['src/**/*.js'],
debugDirectory: 'debug'
})
.pipe(jasmine, {includeStackTrace: true})
.pipe(cover.gather);
gulp.task('test', ['build'], function () {
gulp.src('spec/**/*spec.js')
.pipe(testAndGather())
.pipe(cover.format(['html']))
.pipe(gulp.dest('reports'));
});
gulp.task('travis', ['build'], function () {
gulp.src('spec/**/*spec.js')
.pipe(testAndGather())
.pipe(cover.format(['lcov']))
.pipe(coveralls()); // directly pipe into coveralls
});
使用:
"gulp-jasmine": "~2.0.1",
"gulp-coverage": "~0.3.35",
"gulp-coveralls": "~0.1.4",
"lazypipe": "~0.2.3"