[ https://issues.apache.org/jira/browse/BIGTOP-1323?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14168059#comment-14168059 ]
stanley shi edited comment on BIGTOP-1323 at 10/13/14 2:44 AM: --------------------------------------------------------------- Thanks Roman, this make sense. Just came to my mind: for example, for build hadoop, previously the protoc version is 2.4.1 and now it's 2.5.0; they are not exactly compatible, how are we going to handle this case? was (Author: stanley_shi): Thanks Roman, this make sense. > provide an option to containerize Bigtop package build > ------------------------------------------------------- > > Key: BIGTOP-1323 > URL: https://issues.apache.org/jira/browse/BIGTOP-1323 > Project: Bigtop > Issue Type: Improvement > Components: build > Affects Versions: 0.8.0 > Reporter: Roman Shaposhnik > Assignee: Roman Shaposhnik > Fix For: 0.9.0 > > Attachments: Dockerfile.sh > > > Looking at the state of our Jenkins made me scream "I'm mad as Hell and I'm > not going to take this anymore". The basic problem is simple: our build > slaves are not actually managed by Puppet (even though we do have Puppet code > to do that) and they seem to bitrot quite a bit (e.g. git clone from ASF > repos on SLES and CentOS5 is totally borked). > There's another, somewhat subtler, problem: currently we have to keep as many > slaves as we've got platforms to support. This leads to a pretty poor > utilization and if a slave goes down requires manual intervention. > What I'd like to introduce in this JIRA is a notion of decoupling OS > environment dependency from the base OS. The technology I'm proposing here is > Docker (which really is just a prettier UI on top of Linux Containers). IOW, > regardless of what OS you'd be running on your host -- as long as you've got > docker you can have an exact replica of a target os running in a container. > Here's my plan for simplifying the management aspect of what's going on. > Note, that this is a complimentary plan. Whatever is happening (or not > happening!) today on our Jenkins can remain there for as long as we need it. > # make our build slaves be 100% uniform and fungible instances of CoreOS > VMs https://coreos.com/ The benefit of CoreOS is pretty much 0 administration > cost, quick boot up time, full integration with Docker (see bellow) and full > integration with things like VirtualBox, etc (so that you can replicate > exactly the kind of process that we will setup on the Jenkins). > # make the actual builds happen in a container using CoreOS's integration > with Docker. IOW, instead of running: make foo on the slave the actual > command will look like: docker run -i -t -v `pwd`:/workspace:rw BUILD-ENV > bash -c 'cd /workspace ; make foo' > # add jobs to the jenkins that would maintain images of BUILD-ENV > containers. Each image will be a base-line OS (RHEL, Ubuntu, etc) plus all > the build dependencies of a given source package (but nothing else!). > All of these 3 steps are pretty easy to automate and they do have an added > benefit of being 100% replicatable on your workstation. IOW, as long as you > have docker running on your host OS you can build packages for any OS with a > simple command. > Thoughts? -- This message was sent by Atlassian JIRA (v6.3.4#6332)