Gulp-Coveralls返回422,没有找到TravisCI构建

时间:2014-08-21 19:52:31

标签: javascript angularjs gulp travis-ci coveralls

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。知道会发生什么事吗?

3 个答案:

答案 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"