We do have a CI server:
https://ci.apache.org/builders/tomee-trunk-ubuntu-jvm8
Our build is massive though - it takes between 2 and 5 hours, depending on
hardware. 6+ PRs being updated per day would mean it would be potentially
running all the time with a growing queue. Commons-lang on the other hand,
takes 15 minutes:
https://travis-ci.org/apache/commons-lang/builds/457567190?utm_source=github_status&utm_medium=notification
.
I'm certainly not against it, but I'm not sure it'll be a trivial setup
either. For those interested, the relevant parts of our buildbot build are
here:
f = util.BuildFactory()
f.addStep(steps.Git(repourl="<git url>/tomee.git", mode='full',
method='clobber', submodules=True, branch="" + scm_path))
f.addStep(steps.ShellCommand(command=["rm", "-rf", tmpdir],
name="remove-tmpdir"))
f.addStep(steps.ShellCommand(command=["mkdir", "-p", tmpdir],
name="create-tmpdir"))
f.addStep(steps.Compile(
command=[
"mvn",
"-e",
"--show-version",
"--update-snapshots",
"--fail-at-end",
"-Djava.io.tmpdir=" + tmpdir,
"clean",
"install",
"-Dhttps.protocols=TLSv1.1,TLSv1.2",
"-DfailIfNoTests=false",
"-DskipTests",
],
env={'MAVEN_OPTS': mopts},
warningPattern="(^WARN) | (^WARNING) | (^warning) |
(.*warning[:].*)",
warnOnWarnings=False,
timeout=2400,
name="compile"
))
f.addStep(steps.ShellCommand(
command=[
"mvn",
"-U",
"-Dhttps.protocols=TLSv1.1,TLSv1.2",
"checkstyle:check",
"-Pstyle"
],
name="check-formatting"
))
f.addStep(steps.ShellCommand(
command=[
"mvn",
"-Dhttps.protocols=TLSv1.1,TLSv1.2",
"pmd:check",
"-Pstyle"
],
name="check-pmd"
))
f.addStep(steps.ShellCommand(command=["rm", "-rf", tmpdir],
name="remove-tmpdir"))
f.addStep(steps.ShellCommand(command=["mkdir", "-p", tmpdir],
name="create-tmpdir"))
f.addStep(steps.Compile(
command=[
"mvn",
"-U",
"--show-version",
"--fail-at-end",
"-Djava.io.tmpdir=" + tmpdir,
"clean",
"install",
"-Pall-adapters",
"-Dmaven.test.error.ignore=true",
"-Dmaven.test.failure.ignore=true",
"-Dhttps.protocols=TLSv1.1,TLSv1.2",
"-Dsurefire.useFile=false",
"-DdisableXmlReport=true",
"-Dopenejb.arquillian.debug=true",
"-DTOMEE_LOCK_FILE=/tmp/" + name + "-tomee.port.lock",
],
env={'MAVEN_OPTS': mopts},
warningPattern="(^WARN) | (^WARNING) | (^warning) |
(.*warning[:].*)",
warnOnWarnings=False,
timeout=18000,
name="test"
))
f.addStep(steps.ShellCommand(
command=["bash", "-c", "find . -name 'org.*.txt' | xargs cat"],
alwaysRun=True,
name="test-results"
))
There's quite a lot going on. Short version:
* checkout
* quick build, no tests
* check style
* PMD
* full build with all tests.
I personally run a server at home and it has a VM just for running builds
before opening PRs. I don't know how much control we get over the build
with Travis or how much power it has. I'm happy to donate some machine
cycles to running builds if we want to try it out.
Jon
On Thu, Nov 22, 2018 at 1:56 PM Otávio Gonçalves de Santana <
Post by Otávio Gonçalves de SantanaHello everyone, I have a question about PR and continuous integrations.
Why we don't have a plugin to run the tests when we open a PR?
I'm also helping in another Apache Project such as Apache TinkerPop
<https://github.com/apache/tinkerpop/pull/1000> and Apache Commons
<https://github.com/apache/commons-lang/pull/384> Lang and both have this.
I also did a small search about, and I find more projects such as Zeppelin,
Commons-IO, Commons Collection those use the Travis plugin
<https://travis-ci.org>.