如何在GitHub中连接Coveralls和Travis?

问题描述 投票:5回答:2

我目前在公共GitHub回购中使用TravisCI构建PR。 Coveralls的说明将其放在.coveralls.yml文件中:

service_name: travis-pro
repo_token: <my_token>

这对我不起作用,因为.coveralls.yml文件将公开 - 检入GitHub。我的TravisCI被集成到我的GitHub回购连接到分支机构并在PR上激活。

所以我尝试了这个:

在TravisCI的网站中,我设置了一个环境var:

COVERALLS_REPO_TOKEN到我的令牌的值。

然后修改我的.travis.yml看起来像这样:

language: scala
scala:
   - 2.11.7
notifications:
  email:
    recipients:
      - me@my_email.com
jdk:
  - oraclejdk8
script: "sbt clean coverage test"
after_success: "sbt coverageReport coveralls"
script:
  - sbt clean coverage test coverageReport &&
    sbt coverageAggregate
after_success:
  - sbt coveralls

现在,当我在分支上创建一个PR时,运行正常 - 没有错误,我在Travis的控制台中看到了覆盖测试运行和生成文件的输出。但是当我去工作服时我什么都没看到 - “这个回购没有构建。”

我怎么设置它?

编辑:我也尝试用service_name: travis-ci创建一个.coveralls.yml没有骰子,可悲的是。

github travis-ci coveralls
2个回答
13
投票

我怎么设置它?

第1步 - 启用工作服

首先要做的是为您的存储库启用Coveralls。

你可以在他们的网站http://coveralls.io上做到这一点:

  • http://coveralls.io
  • 使用您的GitHub凭据登录
  • 点击“存储库”,然后“添加回购” 如果没有列出回购,那么“Sync GitHub Repos”
  • 最后,将“启用工作服”开关翻到“开”

enter image description here

第2步 - 设置Travis-CI将覆盖范围信息推送到Coveralls

.travis.yml文件包含scriptafter_success部分的多个条目。所以,让我们清理一下:

language: scala
scala:    2.11.7
jdk:      oraclejdk8

script: "sbt clean coverage test"

after_success: "sbt coveralls"

notifications:
  email:
    recipients:
      - me@my_email.com

现在,当您按下时,脚本部分中的命令将被执行。这是您生成的覆盖率数据。

命令成功完成后,执行after_success部分。这是将覆盖数据推送到工作服。

.coveralls配置文件

.coveralls文件只需要:

  • 公共Travis-CI repos不需要此配置文件,因为Coveralls可以通过其API获取信息(通过访问令牌交换)
  • 私人回购只需要repo_token(在工作服的回购页面上找到),应该保密。如果您发布它,那么任何人都可以为您的回购提交一些覆盖数据。

归结为:仅在两种情况下需要该文件:

  • 为包含coverage数据的文件指定自定义位置
  • 或者当您使用Travis-Pro和私人存储库时。然后你必须配置“travis-pro”并添加令牌: service_name: travis-pro repo_token: ...

0
投票

我认为解释如何为PHP设置它可能会有所帮助,因为该问题基本上适用于Coveralls支持的任何语言(而不仅仅是Lua)。

这个过程对于PHP来说尤其难以捉摸,因为PHP link on Travis-CI's website指向a password-protected page on Coveralls' site,它不提供使用GitHub登录的方法,这与主要的Coveralls网站不同。

同样令人困惑的是,primary PHP page on Coveralls' site似乎包含过于复杂的指令,需要另一个名为atoum/atoum的库(它看起来已经不存在了)并且不完整。

最终为我完美工作的是https://github.com/php-coveralls/php-coveralls/。文档非常详尽,但归结为:

  1. 为您的存储库启用Coverall(请参阅接受的答案中的步骤1)。
  2. 确保在Travis-CI构建环境中安装并启用了PHP中的xdebug(默认情况下应该是这样),这是PHPUnit中代码覆盖支持所必需的。
  3. 使用Composer将phpunitphp-coveralls库添加到项目中:
composer require phpunit/phpunit php-coveralls/php-coveralls
  1. 更新项目根目录中的travis.yml以包含以下指令:
script:
  - mkdir -p build/logs
  - vendor/bin/phpunit tests --coverage-clover build/logs/clover.xml

after_success:
  - travis_retry php vendor/bin/php-coveralls
  1. 在项目的根目录下创建.coveralls.yml并使用以下命令填充:
service_name: travis-ci

我并不认为这一步对于公共存储库是必要的(接受的答案暗示它不是),但是php-coveralls文档说明了这个指令(强调我的):

service_name:允许您指定工作服的外观,以查找有关构建的其他信息。这可以是任何字符串,但使用travis-ci或travis-pro将允许Coveralls获取分支数据,对pull请求发表评论等。

  1. 将上述更改推送到GitHub上的远程存储库并触发Travis-CI构建(如果您还没有挂钩以使其自动发生)。
  2. 在你的README(或你想要的任何其他地方)中拉一个Coveralls代码覆盖徽章。可以在徽章列的相关存储库的Coveralls页面上找到所需的标记。
© www.soinside.com 2019 - 2024. All rights reserved.