如何将工作服集成到开源项目中?

时间:2018-10-03 14:00:44

标签: java maven code-coverage travis-ci coveralls

我想为一个开源项目(特别是here (hexchat.c#L191, is_session))做出贡献,该项目的所有者已经建立了Travis。我想将Coveralls集成到该项目中并发送请求请求。当我拥有该项目时,过程很简单:

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

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

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

所以我的问题是:

  • 是否可以自动执行此过程?就像将我的分支Travis系统合并到所有者的repoToken环境变量原始系统和/或为所有者创建Coveralls系统一样?
  • 还是我应该简单地与所有者联系,由我自己为分叉的项目创建单独的Travis / Coverall,然后将一些待办事项留在代码库中,以便他可以找到并稍后进行更改?

谢谢。


环境

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

1 个答案:

答案 0 :(得分:1)

您可能想根据要使用的覆盖率工具修改自己的pom.xml,请参见https://github.com/trautonen/coveralls-maven-plugin以获得一些说明。

您可以避免将回购令牌放在您在github上发布的pom.xml文件中!

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

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

conn=sqlite3.connect('rosterdb.sqlite')
cur=conn.cursor()
cur.execute(
'''
DROP TABLE IF EXISTS USER;
DROP TABLE IF EXISTS Course;
DROP TABLE IF EXISTS Member;

CREATE TABLE User (
    id     INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    name   TEXT UNIQUE
);

CREATE TABLE Course (
    id     INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    title  TEXT UNIQUE
);

CREATE TABLE Member (
    user_id     INTEGER,
    course_id   INTEGER,
    role        INTEGER,
    PRIMARY KEY (user_id, course_id)
)
'''
)
fname=input('Enter file name')
if len(fname)<1:
    fname=roster_data.json
str_data=open(fname).read()
json_data=json.loads(str_data)

for entry in json_data:
    name=entry[0]
    title=entry[1]
    role=entry[2]
    print(name,title,role)

    cur.execute('''INSERT OR IGNORE INTO User (name)
        VALUES ( ? )''', ( name, ) )
    cur.execute('SELECT id FROM User WHERE name = ? ', (name, ))
    user_id = cur.fetchone()[0]

    cur.execute('''INSERT OR IGNORE INTO Course (title)
        VALUES ( ? )''', ( title, ) )
    cur.execute('SELECT id FROM Course WHERE title = ? ', (title, ))
    course_id = cur.fetchone()[0]

    cur.execute('''INSERT OR IGNORE INTO Member(user_id,course_id,role) 
        VALUES(?,?,?)''',(user_id,course_id,role))

    conn.commit()

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

#!/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