13

我目前在公共 GitHub 存储库中的 PR 上构建 TravisCI。工作服的说明说要把它放在一个 .coveralls.yml 文件中:

service_name: travis-pro
repo_token: <my_token>

这对我不起作用,因为 .coveralls.yml 文件将是公开的——签入 GitHub。我的 TravisCI 被集成到我的 GitHub 存储库中,连接到一个分支并在 PR 上触发。

所以我尝试了这个:

在 TravisCI 的站点中,我设置了一个环境变量:

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 的控制台中看到覆盖测试运行并生成文件的输出。但是当我去 Coveralls 时,我什么也没看到——“这个 repo 没有构建。”

我该如何设置?

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

4

2 回答 2

22

我该如何设置?

第 1 步 - 启用工作服

首先要做的是为您的存储库启用工作服。

您可以在他们的网站http://coveralls.io上执行此操作:

  • 访问http://coveralls.io
  • 使用您的 GitHub 凭据登录
  • 单击“存储库”,然后单击“添加存储库”
    • 如果尚未列出 repo,则“同步 GitHub Repos”
  • 最后,将“启用工作服”开关切换到“开”

在此处输入图像描述

第 2 步 - 设置 Travis-CI 以将覆盖信息推送到工作服

.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 存储库不需要此配置文件,因为 Coveralls 可以通过其 API 获取信息(通过访问令牌交换)
  • (可在 Coveralls的repo_tokenrepo 页面上找到)仅用于私人 repo 并应保密。如果您发布它,那么任何人都可以为您的回购提交一些覆盖数据。

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

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

    service_name: travis-pro
    repo_token: ...
    
于 2016-10-15T13:21:24.113 回答
0

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

这个过程对于 PHP 来说尤其难以捉摸,因为Travis-CI 网站上的 PHP 链接指向 Coveralls 网站的一个受密码保护的页面,与 Coveralls 主站点不同,该页面不提供使用 GitHub 登录的方式。

同样令人困惑的是,Coveralls 网站上的主要 PHP 页面似乎包含过于复杂的指令,这些指令需要另一个名为的库atoum/atoum(看起来已经失效),而且还不完整。

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

  1. 为您的存储库启用工作服(请参阅已接受答案中的步骤 1)。

  2. 确保xdebug在 Travis-CI 构建环境中的 PHP 中安装并启用它(默认情况下应该是),这是 PHPUnit 中代码覆盖支持所必需的。

  3. 使用 Composerphpunit将库添加到项目中:php-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 获取分支数据、评论拉取请求等等

  1. 将上述更改推送到 GitHub 上的远程存储库并触发 Travis-CI 构建(如果您还没有钩子使其自动发生)。

  2. README在您的(或您想要的任何其他地方)贴上工作服代码覆盖徽章。可以在相关存储库的 Coveralls 页面的 Badge 列中找到所需的标记。

于 2019-02-08T21:28:19.617 回答