Hi Luke,
just curious (and maybe I missed it): did we do a formal vote to merge the
gradle build ?
Gradle is now on master, we have some Jira to update the release guide with
gradle. It's fine, but I remember only a discussion, not a vote.
In order to embrace the community and avoid to have some contributors
"frustrated" (meaning that "this project doesn't care about contributor, they
just do whatever they want"), I would have love to see a formal vote about
Gradle more than just a discussion.
My $0.01
Regards
JB
On 11/27/2017 07:46 PM, Lukasz Cwik wrote:
I have collected data by running several builds against master using Gradle
and Maven without using Gradle's support for incremental builds.
Gradle (mins)
min: 25.04
max: 160.14
median: 45.78
average: 52.19
stdev: 30.80
Maven (mins)
min: 56.86
max: 216.55 (actually > 240 mins because this data does not include
timeouts)
median: 87.93
average: 109.10
stdev: 48.01
I excluded a few timeouts (240 mins) that happened during the Maven build
from its numbers but we can see conclusively that Gradle is twice as fast
for the build when compared to Maven when run using Jenkins.
On my desktop, I have enabled incremental builds and have seen a major
improvement on the above numbers but it doesn't yet work correctly because
of incorrectly specified inputs/outputs for certain tasks.
The data is available here
https://docs.google.com/spreadsheets/d/1MHVjF-xoI49_NJqEQakUgnNIQ7Qbjzu8Y1q_h3dbF1M/edit?usp=sharing
With this data, I feel confident that we should swap and have opened the
following issue https://issues.apache.org/jira/browse/BEAM-3249 and related
sub-tasks.
On Sun, Nov 19, 2017 at 11:23 AM, Jean-Baptiste Onofré <[email protected]>
wrote:
Thanks for the update Luke.
I'm updating my local working copy to do new tests.
Regards
JB
On 11/19/2017 08:21 PM, Lukasz Cwik wrote:
The gradle build rules have been merged, I'm adding a precommit[1] to
start
collecting data about the build times. It currently only mirrors the Java
mvn install precommit. I'll gather data over the next two weeks and
provide
a summary here.
You can rerun the precommit by issuing "Run Java Gradle PreCommit"
1: https://github.com/apache/beam/pull/4146
On Mon, Nov 13, 2017 at 9:08 AM, Lukasz Cwik <[email protected]> wrote:
There has been plenty of time for comments on the PR and the approach.
So far Ken Knowles has provided the most feedback on the PR, Ken would
you
like to finish the review?
On Fri, Nov 10, 2017 at 1:22 PM, Romain Manni-Bucau <
[email protected]
wrote:
This is only a setup thing and better to not break the master history for
poc/tests, in particular when no very localized. Alternative can be to
ask
another temp repo to infra and have a synchro between both but dont
think
it does worth it personally.
Le 10 nov. 2017 18:57, "Lukasz Cwik" <[email protected]> a
écrit :
The reason to get it on master is because that is where all the PRs
are. An
upstream branch without any development means no data.
Also, our Jenkins setup via job-dsl doesn't honor using the Jenkins
configuration on the branch because the seed job always runs against
master.
On Thu, Nov 9, 2017 at 9:59 PM, Romain Manni-Bucau <
[email protected]>
wrote:
What about pushing it on a "upstream" branch and testing it for 1
week in
parallel of the maven reference build? If gradle is always 50% faster
on
jenkins then it could become master setup without much discussion I
guess.
We can even have 2 jenkins jobs: one with the daemon etc and one
without.
Also noticed yesterday that gradle build is killing my machine (all 8
cores
are 100%) during the first minutes vs maven build which let me do
something
else. Then all the consumed time which makes gradle not that fast is
about
python. Will try to send figures later today.
Le 10 nov. 2017 00:10, "Lukasz Cwik" <[email protected]> a
écrit
:
I wouldn't mind merging this change in so I could setup those Gradle
Jenkins precommits.
As per our contribution guidelines, any committer willing to sign
off
on
the PR?
On Thu, Nov 9, 2017 at 2:12 PM, Romain Manni-Bucau <
[email protected]>
wrote:
Le 9 nov. 2017 21:31, "Kenneth Knowles" <[email protected]>
a
écrit :
Keep in mind that a clean build is unusual during development (it
is
common
for mvn use and that is a bug) and also not necessary for
precommits
if
the
build tool is correct enough that caching is safe. So while this
number
matters, it is not the most important.
Not sure, in dev you bypass the build tool most of the time
anyway -
thanks
to IDE or other shortcuts - but not on PR and CI. Keep in mind
that
not
doing a clean and killing gradle daemon makes the build not
reproducible
and therefore useful :(. Starting to build from a subpart of the
reactor
-
with the mentionned mvn plugin for instance - can be nice on some
CI
like
travis if the caching is well configured but still not a guarantee
the
build is "green".
My trade off is to ensure an easy build and relevant result over
the
time
criteria. Do you share it as well or prefer time over other
criteria
-
which leads to other conclusions and options indeed and can make
us
not
understanding each other?
On Thu, Nov 9, 2017 at 11:30 AM, Romain Manni-Bucau <
[email protected]
wrote:
I will try next week yes but the 2 runs i did were 28mn vs 32mn
from
memory
- after having downloaded all deps once.
Le 9 nov. 2017 19:45, "Lukasz Cwik" <[email protected]>
a
écrit :
If Gradle was slow, do you mind running the build with
--profile
and
sharing that and also sharing the Maven build log?
On Thu, Nov 9, 2017 at 10:43 AM, Lukasz Cwik <
[email protected]>
wrote:
Romain, I don't understand your last comment, were you
trying
to
say
that
you had the same Gradle build times like I did and it was an
improvement
over Maven or that you did not and you experienced build
times
that
were
equivalent to Maven?
On Thu, Nov 9, 2017 at 9:51 AM, Romain Manni-Bucau <
[email protected]>
wrote:
2017-11-09 18:38 GMT+01:00 Kenneth Knowles
<[email protected]
:
On Thu, Nov 9, 2017 at 9:11 AM, Romain Manni-Bucau <
[email protected]>
wrote:
(this is another topic so we can maybe open another
thread)
issue
is
not much about python but more about the fact the build
is
not
self
contained. it is a maven build and maven should be
sufficient
without
having to install python + dependencies.
Let's leave out the topic of whether our build should
install
things
like
JDKs, Python, Golang, Docker, protoc, findbugs, RAT, etc.
That
issue
is
somewhat independent of build tool, and the new build
isn't
worse
than
the
old one as far as it goes.
Yep, globally the same time with clean and killing the
daemon.
Kenn
I don't see any technical
blockers to do it (except time ;)) but it is always a
bit
annoying
to
git clone then not be able to build.
Romain Manni-Bucau
@rmannibucau | Blog | Old Blog | Github | LinkedIn
2017-11-09 18:07 GMT+01:00 Lukasz Cwik
<[email protected]
:
Hmm, I have had good luck when following the Python
quick
start
setup
<https://beam.apache.org/get-started/quickstart-py/>
on
multiple
machines
by ensuring the installed version of setuptools,
virtualenv
and
pip
are
new
enough versions.
You can always skip the Python portion of the build by
excluding
the
build
task as so:
./gradlew build -x ":beam-sdks-parent:beam-sdks-
python:build"
On Thu, Nov 9, 2017 at 8:58 AM, Romain Manni-Bucau <
[email protected]>
wrote:
The 1.3.5 file is when i installed the python
dependencies
manually
to make the build passing (the pip command never
passed
on
my
computer
and therefore the build always has been broken until
i
installed
it
manually - independently from the build tool).
Romain Manni-Bucau
@rmannibucau | Blog | Old Blog | Github | LinkedIn
2017-11-09 17:51 GMT+01:00 Lukasz Cwik
<[email protected]
:
It turns out that the Apache Rat Ant task and the
Apache
Rat
Maven
plugin
differ in that the plugin automatically excludes
certain
files
by
default
while the Ant task does not.
See:
http://creadur.apache.org/rat/
apache-rat-plugin/check-mojo.
html#useDefaultExcludes
I fixed the list to exclude ".idea/" instead of
"idea/"
since
there
was a
typo.
I have no idea what the file "=1.3.5" is. Can you
take a
look
at
the
contents?
On Thu, Nov 9, 2017 at 12:03 AM, Romain
Manni-Bucau <
[email protected]>
wrote:
Ok, the rat issues I got were:
== File: /home/rmannibucau/1_dev/beam/.idea/*
== File: /home/rmannibucau/1_dev/beam/
sdks/python/=1.3.5
The first one could be in my default exclude -
even
if
eclipse/idea
files should be in the default exclude set of beam
rat
config
IMHO,
the last one is more a "?" can probably be
exclude as
well
if
created
by the build at some point.
Romain Manni-Bucau
@rmannibucau | Blog | Old Blog | Github |
LinkedIn
2017-11-08 19:17 GMT+01:00 Jean-Baptiste Onofré <
[email protected]
:
Thanks for the update. I was swamped on some
meetings.
I'm
back to
test
the latest changes.
Regards
JB
On Nov 8, 2017, 18:56, at 18:56, Lukasz Cwik
<[email protected]
wrote:
Thanks everyone for trying this build out in
different
workspaces /
configurations. This will help make sure the
build
works
for
more
people
and will get rid of any rough edges.
Performance (All):
Maven performs parallelization at the module
level,
an
entire
module
needs
to complete before any dependent modules can
start,
this
means
running
all
the checks like findbugs, checkstyle, tests
need to
finish.
Gradle
has
task
level parallelism between subprojects which
means
that
as
soon
as
the
compile and shade steps are done for a project,
and
dependent
subprojects
can typically start. This means that we get
increased
parallelism
due
to
not needing to wait for findbugs, checkstyle,
tests
to
run. I
typically
see
~20 tasks (at peak) running on my desktop in
parallel.
Apache Rat (JB / Romain):
What files are in the rat report that fail (its
likely
that
I'm
missing
some exclusion for a build time artifact)? Also,
please
try
the
build
again
after running `git clean -fdx` in your
workspace.
Python (JB):
As for the Python SDK, you'll need to share more
details
about
the
failure.
Gradle 4.3:
I would like to defer the swap to Gradle 4.3
until
after
this
PR
since
it
will be a much smaller set of changes.
On Wed, Nov 8, 2017 at 12:54 AM, Jean-Baptiste
Onofré <
[email protected]>
wrote:
Same for me for rat and python build too:
FAILURE: Build completed with 2 failures.
1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':rat'.
Found 905 files with unapproved/unknown
licenses.
See
file:/home/jbonofre/Workspace/
beam/build/reports/rat/rat-
report.txt
* Try:
Run with --stacktrace option to get the stack
trace.
Run
with
--info
or
--debug option to get more log output.
==============================
==============================
==================
2: Task failed with an exception.
-----------
* Where:
Build file '/home/jbonofre/Workspace/
beam/sdks/python/build.gradle'
line:
64
* What went wrong:
Execution failed for task
':beam-sdks-parent:beam-sdks-
python:lint'.
Process 'command 'tox'' finished with
--
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com