4

TravisCI 构建正在通过我的开源项目,我现在正在尝试集成 gulp-coveralls。在 Coveralls.io 上,找不到我的存储库的构建,即使自从我将我的存储库添加到 Coveralls 以来,Travis 构建已经成功运行。

'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 中的开发依赖项中的 gulp-coveralls

gulpfile.js:

var coveralls = require('gulp-coveralls');
...
gulp.task('coveralls', function () {
gulp.src('coverage/**/lcov.info')
  .pipe(coveralls());
});

业力.conf.js:

coverageReporter: {
    type : 'lcov',
    dir : 'coverage/'
}

Github:https ://github.com/lithiumtech/angular-embedly

我使用 Karma 和 PhantomJS 来运行我的测试。文件coverage/lcov.info 肯定正在生成。知道会发生什么吗?

4

3 回答 3

4

莎拉,

您缺少的是工作服存储库令牌。您必须访问 coveralls.io 并使用您的 GitHub 帐户创建登录。然后,这会将您的所有存储库拉入工作服。然后,对于要使用工作服的仓库,您可以通过单击“关闭”开关打开工作服。

现在单击“查看工作服”按钮,它将显示您的回购密钥。然后,您可以通过创建一个 .coveralls.yml 文件并将您的密钥复制到该文件中来进行设置。这应该可以解决您的问题。

于 2014-09-01T23:46:35.347 回答
0

也许您的 .coveralls.yml 文件中有错误。如果您使用的是 Travis CI,请尝试以下操作:

service_name: travis-ci
repo_token: token_given

如果您使用的是 Travis Pro:

service_name: travis-pro
repo_token: token_given

我希望这会有用。

于 2014-12-17T17:45:49.107 回答
0

对于在travis-ci.org中运行的 GitHub 构建,您的 .coveralls.yml 文件中不需要服务名称,只需要令牌即可。您也不需要在 Travis 中进行传递构建,只需成功生成 LCOV 数据和发送它的插件即可。

我有一个 gulp-coveralls 问题,当使用gulp.src. 我最终可以工作的唯一方法是直接将 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"
于 2015-05-26T07:40:08.163 回答