From eb8b4b0d41c427608a45ca64089cbab4250b3cbe Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Tue, 26 Aug 2014 00:33:19 -0700 Subject: [PATCH] dashboard: start of Dockeritization of Linux builders Good checkpoint. Can now do builds by hand. Next step is coordinator server in front of this, and things to fire up beefy GCE instances running CoreOS and each build in its own Docker container. See README for how to do a single build. LGTM=adg R=adg CC=golang-codereviews https://golang.org/cl/134870043 --- dashboard/env/linux-x86-base/Dockerfile | 44 +++++++++++++++++++++++++ dashboard/env/linux-x86-base/Makefile | 9 +++++ dashboard/env/linux-x86-base/README | 11 +++++++ 3 files changed, 64 insertions(+) create mode 100644 dashboard/env/linux-x86-base/Dockerfile create mode 100644 dashboard/env/linux-x86-base/Makefile create mode 100644 dashboard/env/linux-x86-base/README diff --git a/dashboard/env/linux-x86-base/Dockerfile b/dashboard/env/linux-x86-base/Dockerfile new file mode 100644 index 00000000..e1db702b --- /dev/null +++ b/dashboard/env/linux-x86-base/Dockerfile @@ -0,0 +1,44 @@ +# Copyright 2014 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +# Base builder image: gobuilders/linux-x86-base + +FROM debian:wheezy +MAINTAINER golang-dev + +ENV DEBIAN_FRONTEND noninteractive +RUN apt-get update && apt-get upgrade -y + +# For running curl to get the hg starter tarballs (faster than hg clone). +RUN apt-get install -y --no-install-recommends curl ca-certificates + +# Optionally used by some net/http tests: +RUN apt-get install -y --no-install-recommends strace + +# For building Go's bootstrap 'dist' program: +RUN apt-get install -y --no-install-recommends gcc libc6-dev + +# For 32-bit builds: +RUN apt-get install -y --no-install-recommends libc6-dev-i386 + +# For interacting with the Go source & subrepos: +RUN apt-get install -y --no-install-recommends mercurial git-core subversion + +ENV GOPATH /gopath +ENV GOROOT /goroot + +RUN mkdir -p $GOROOT +RUN cd $GOROOT && curl -s https://storage.googleapis.com/gobuilder/go-snap.tar.gz | tar x --no-same-owner -zv + +ENV GO_TOOLS $GOPATH/src/code.google.com/p/go.tools +RUN mkdir -p $GO_TOOLS +RUN cd $GO_TOOLS $ && curl -s https://storage.googleapis.com/gobuilder/go.tools-snap.tar.gz | tar x --no-same-owner -zv + +RUN cd $GOROOT && hg update -C b8ff0ec2a724 +RUN cd $GOROOT/src && ./make.bash +RUN mkdir -p /usr/local/bin + +RUN cd $GO_TOOLS && hg update -C 881a2f3130de +ENV GOBIN /usr/local/bin +RUN /goroot/bin/go install code.google.com/p/go.tools/dashboard/builder diff --git a/dashboard/env/linux-x86-base/Makefile b/dashboard/env/linux-x86-base/Makefile new file mode 100644 index 00000000..9e8171ed --- /dev/null +++ b/dashboard/env/linux-x86-base/Makefile @@ -0,0 +1,9 @@ +# Copyright 2014 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +docker: Dockerfile + docker build -t gobuilders/linux-x86-base . + +push: docker + docker push gobuilders/linux-x86-base diff --git a/dashboard/env/linux-x86-base/README b/dashboard/env/linux-x86-base/README new file mode 100644 index 00000000..a5119090 --- /dev/null +++ b/dashboard/env/linux-x86-base/README @@ -0,0 +1,11 @@ +For now, you can at least do a single build of a single revision: + +$ export BUILD=linux-amd64-temp +$ docker run \ + -v $HOME/keys/$BUILD.buildkey:/.gobuildkey \ + gobuilders/linux-x86-base \ + /usr/local/bin/builder -rev=50ac9eded6ad -buildroot=/ -v $BUILD + +TODO(bradfitz): automate with CoreOS + GCE, ala: + https://github.com/bradfitz/camlistore/blob/master/misc/gce/create.go +