java - 如何将连体衣集成到开源项目中?

标签 java maven code-coverage travis-ci coveralls

我想为一个开源项目(具体来说, this one )做出贡献,项目所有者已经在该项目中设置了 Travis。我想将 Coveralls 集成到该项目中并发送拉取请求。当我拥有该项目时,过程很简单:

  • 使用 .travis.yml 和特定于语言的工具配置构建/测试系统
  • 从工作服中获取 repoToken
  • repoToken 作为环境变量添加到项目的 Travis 系统
  • 将特定于语言的配置添加到 .travis.ymlafter_success 周期中。

但是,当我不拥有存储库时,我会遇到问题。

  • 由于我不拥有该存储库,因此我只能使用我的 fork 副本在 Coveralls 上添加项目。我的意思是,我的 fork 的覆盖 URL 将是 Coveralls 中的 /github/myusername/forkedrepo ,当我将该 PR 发送给存储库所有者时,它将是相同的,但它必须是 /github/ownersusername/originalrepo.
  • 我无法将环境变量 repoToken 添加到所有者的 Travis 构建系统,因为我不拥有它。

所以我的问题是:

  • 是否可以使该过程自动化?比如将我的 fork Travis 系统合并到所有者的原始系统中以获取 repoToken 环境变量和/或为所有者创建一个 Coveralls 系统?
  • 或者我应该直接联系所有者,自己为我的 fork 项目创建单独的 Travis/Coveralls,并在代码库中留下一些待办事项,以便他可以找到这些并稍后进行更改?

提前致谢。


环境

  • Java
  • Maven
  • 用于覆盖的 Covertura Maven 插件
  • Coveralls Maven 插件,用于将覆盖率结果发送到 Coveralls

最佳答案

您可能需要根据您想要使用的覆盖率工具修改您自己的 pom.xml,请参阅 https://github.com/trautonen/coveralls-maven-plugin一些解释。

您可以避免将 repo token 放入您在 github 上发布的 pom.xml 文件中!

您可以从命令行运行覆盖率报告。

这是一个小帮助程序脚本,允许从命令行运行 converalls。只需将您的 token 放在 $HOME/.coveralls 或任何类似位置之类的位置即可。

#!/bin/bash
# WF 2019-06-26
# create test coverage report for coveralls
tokenpath=$HOME/.coveralls/coveralls.token
if [ ! -f $tokenpath ]
then
  echo "Script needs coveralls token in $tokenpath to work" 1>&2
  echo "Script can only be run successfully by project admins" 1>&2
  echo "see https://github.com/trautonen/coveralls-maven-plugin" 1>&2
  exit 1
else
  token=$(cat $tokenpath)
  # comment out to use jacoco
  #mvn clean test jacoco:report coveralls:report -D jacoco=true -DrepoToken=$token
  # comment out to use cobertura
  mvn cobertura:cobertura coveralls:report -DrepoToken=$token
fi

更新 这是使用 COVERALLS_TOKEN 环境变量的版本:

#!/bin/bash
# WF 2019-06-26
# create test coverage report for coveralls

# is the environment variable not set?
if [ "$COVERALLS_TOKEN" = "" ]
then
  tokenpath=$HOME/.dukes/coveralls.token
  if [ ! -f $tokenpath ]
  then
    echo "Script needs coveralls token in $tokenpath to or COVERALLS_TOKEN environment variable to work" 1>&2
    echo "Script can only be run successfully by project admins" 1>&2
    echo "see https://github.com/trautonen/coveralls-maven-plugin" 1>&2
    echo "see https://stackoverflow.com/a/56815300/1497139" 1>&2
    exit 1
  fi
else
  export COVERALLS_TOKEN=$(cat $tokenpath)
fi
# the jacoco variable tries triggering a profile - check your pom.xml
# for any profile being in use
mvn clean test jacoco:report coveralls:report -D jacoco=true
#mvn clean test jacoco:report coveralls:report -D jacoco=true -DrepoToken=$token
#mvn cobertura:cobertura coveralls:report
#mvn cobertura:cobertura coveralls:report -DrepoToken=$COVERALLS_TOKEN

关于java - 如何将连体衣集成到开源项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52628775/

相关文章:

java - ThreadPoolExecutor$Worker 中的奇怪代码

java - 数组排序、ArrayList 排序、使用集合

java - jar 中的自定义文件类型

java - 使用 Maven 从 HTML 模板中删除注释

c++ - 使用 C++ 编译器运行 gcov 工具

java - 通过java连接到电话系统

java - 为什么我的 Jenkins 插件找不到我的 pom.xml 依赖项?

maven - 像kotlin-gradle-plugin一样,如何将kotlin-js-library更新到1.1.3?

python - SonarQube 没有正确导入 Python 项目的 coverage.xml 文件

c++ - gcov:从共享库生成 .gcda 输出?