On Mon, Mar 11, 2019 at 3:51 AM Kenneth Knowles <[email protected]> wrote:

> I have never actually tried to run a full build recently. It takes a long
> time and usually isn't what is needed for a particular change. FWIW I view
> Beam at this point as a mini-monorepo, so each directory and target can be
> healthy/unhealthy on its own.
>

Fair Point. Totally agree.


>
> But it does seem like we should at least know what is unhealthy and why.
> Have you been filing Jiras about the failures? Are they predictable? Are
> they targets that pass in Jenkins but not in vanilla build? That would mean
> our Jenkins environment is too rich and should be slimmed down probably.
>
> Kenn
>

Unfortunately those failures are not really predictable. Usually, I start
with plain './gradlew build' and keep adding some '-x
:beam-sdks-python:testPy2Gcp -x :beam-sdks-python:testPython' until build
succeeds. Afterwards it seems to be possible to remove this exclusions step
by step, thereby filling the build cache, which on next reruns might have
some impact on how tasks are executed.

Most of failures are python related. Had not much success getting into
those. From time to time I see 'seemingly' similar failures on Jenkins, but
tracing on python is more difficult coming from the more java background.
Also using Mac I believe to remember that preinstalled python had some
issues/differences compared with private installs. Others are those
Elasticsearch - which were worked on lately - and ClickHouse tests which
seem to be still flaky.

So I mainly blamed my setup and did not yet have the time to further track
those failures down. But

As I did use a vanilla system and was not able to get beam to build, i got
thinking about

1. The release process
The release manager has lot of stuff to take care for, but is also supposed
to run a full gradle build on her local machine [1]. Apart from that being
a long lasting task, if it keeps failing this puts additional burden on the
release manager. So I was wondering, why we can not push that to Jenkins as
we do with all these other tests [2]. Here I did not find any existing Job
doing such, so wanted to ask for feedback here.

If a full build has to be run - and of course it makes some sense on
release - I would suggest to get that running on a regular base on Jenkins
just to ensure not to be surprised during release. And as a sideeffect
enable the release manager to also delegate this to Jenkins to free her
time (and dev box).

Until now I had not yet have the time to investigate, whether all this
pre/Post/elseJobs cover all our tests on all modules. Hoped someone else
could point to the list of jobs which cover all tests.

2. Those newcomers
As a naive newcomer to a project I usually deal with those jars. After
problems arose, I might download corresponding sources and try to
investigate. First thing I usually do here is a make/build/install to get
those private builds in. Also on our contributor site [3] we recommend
ensuring to be able to run all tests with 'gradlew check' which is not to
far away from full build. Probably no one would expect a full build to fail
here, which again makes me think we need an equivalent Job on Jenkins here?

Of course it is also fully reasonable to not support this full build in
line with that mini-monorepo.

On the other hand, after filling the build cache - and enable more task for
caching - a full build should not be to expensive in general. Although I d
prefer some more granularity like e.g. 'gradlew -p sdks/java build' to
build all java, which, if I understand correctly, would be a side effect of
fixing [4].

[1]
https://github.com/apache/beam/blob/master/release/src/main/scripts/verify_release_build.sh#L142
[2]
https://github.com/apache/beam/blob/master/release/src/main/scripts/verify_release_build.sh#L168-L190
[3] https://beam.apache.org/contribute/
[4] https://issues.apache.org/jira/browse/BEAM-4046


>
> On Sun, Mar 10, 2019 at 7:05 PM Michael Luckey <[email protected]>
> wrote:
>
>> Hi,
>>
>> while fiddling with beams release process and trying to get that working
>> on my machine, I again stumbled about 'gradlew build'
>>
>> Till now I am unable to get a full build run successfully on my machine.
>> Keeps failing. After setting up a clean docker instance and trying to run
>> there, I also failed miserably. Which of kind is expected as part of the
>> tests rely on docker itself which probably does not work  out of the box.
>> But apart from these expected failures, there were also tons of other
>> failures. Need to setup a full blown vm and test again, but wanted to ask
>> here first as after looking into Jenkins setup, I was also unable to find a
>> job which actually executes a full build.
>>
>> So I am wondering, whether
>> - anyone is actually able to successfully execute a full build
>> (preferable without build cache)
>> - it is intended we do only run a 'gradlew build' during release on
>> release managers box
>> - if that full build is somehow implicit in Jenkins setup, and I am just
>> not finding my way to the job/list of jobs which execute this full build
>>
>> Any help/insights appreciated here.
>>
>> michel
>>
>>
>>

Reply via email to