[ 
https://issues.apache.org/jira/browse/AVRO-1537?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14253656#comment-14253656
 ] 

Niels Basjes commented on AVRO-1537:
------------------------------------

Hi [~tomwhite],

I checked your current patch and I really like it.
I did a test on CentOS 6.5 x86_64 inside a Virtual Box in Windows 7 and this 
works really great.
The first build takes a while and then subsequent runs are within a second on 
the screen.
The Java build went perfect and I let it run for a while and it all seems to 
work fine (until it all stops with the known bug {{./build.sh: line 25: 
node_modules/grunt/bin/grunt: No such file or directory}}).

A few feedback points:
# Using the naming like {{avro-build}} and {{avro-build-$USER}} means that 
there can only be a single images at a time with that name.
So in the scenario where you want to enhance the image (i.e. edit the 
Dockerfile) and then a different user on the same system cannot use the build 
system reliably; there will be conflicts between those two users. I realize 
this is an extremely unlikely scenario in normal development situations. I'm 
sure not how unlikely it becomes when we make this docker part of the normal 
build and run it on a shared CI environment (i.e. Jenkins) where everything 
runs as the same user.
I think it is fine to do this form as long as we realize (and preferably 
document) this caveat. Perhaps something a comment as simple as "The "build.sh 
docker" environment is intended for use on personal development systems." 
should suffice.
# The Dockerfile does the installation of the various things by means of naming 
the tool that needs to be installed. Then this docker image will be different 
if for one of the tools a new version is released. So I was wondering; 
## What happens if in the future one of those tools creates a regression or a 
incompatible change in their API? Like the PHP NaN example? Is that a good 
thing because you're actually building and testing against what end users will 
be using too? Or is this a bad thing because you have a changing build 
environment?
## What happens if in the future one of those tools is updated and it is an 
update that is really needed for the build to succeed? How can it be 
validated/ensured that the image is updated too on the desktop of the 
developers? Perhaps the project can be enhanced to ensure/enforce minimal 
versions of the tools that are needed?
# I vote you push back the improvements towards HBase where you based the 
original on (at least make a ticket in HBase {{Evaluate Docker improvements 
from AVRO project}}).


> Make it easier to set up a multi-language build environment
> -----------------------------------------------------------
>
>                 Key: AVRO-1537
>                 URL: https://issues.apache.org/jira/browse/AVRO-1537
>             Project: Avro
>          Issue Type: Improvement
>            Reporter: Martin Kleppmann
>            Assignee: Tom White
>         Attachments: AVRO-1537.patch, AVRO-1537.patch, AVRO-1537.patch, 
> AVRO-1537.patch, AVRO-1537.patch, AVRO-1537.patch, AVRO-1537.patch
>
>
> It's currently quite tedious to set up an environment in which the Avro test 
> suites for all supported languages can be run, and in which release 
> candidates can be built. This is especially so when we need to test against 
> several different versions of a programming language or VM (e.g. 
> JDK6/JDK7/JDK8, Ruby 1.8.7/1.9.3/2.0/2.1).
> Our shared Hudson server isn't an ideal solution, because it only runs tests 
> on changes that are already committed, and maintenance of the server can't 
> easily be shared across the community.
> I think a Docker image might be a good solution, since it could be set up by 
> one person, shared with all Avro developers, and maintained by the community 
> on an ongoing basis. But other VM solutions (Vagrant, for example?) might 
> work just as well. Suggestions welcome.
> Related resources:
> * Using AWS (setting up an EC2 instance for Avro build and release): 
> https://cwiki.apache.org/confluence/display/AVRO/How+To+Release#HowToRelease-UsingAWSforAvroBuildandRelease
> * Testing multiple versions of Ruby in CI: AVRO-1515



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to