From f328c4b81d36269845812a6bd0046e64a9c7d877 Mon Sep 17 00:00:00 2001 From: Daniel Hiltgen Date: Mon, 17 Apr 2017 14:04:49 -0700 Subject: [PATCH] Add new build rigging for multi-OS Given the underlying native library, C lib and other OS lib dependencies sneak in, so this uses a few different Dockerfiles to build binaries targetted at specific OSes. --- .gitignore | 1 + Dockerfile.alpine3.4 | 15 +++++++++++++++ Dockerfile.alpine3.5 | 15 +++++++++++++++ Dockerfile.centos7 | 18 ++++++++++++++++++ Dockerfile.ubuntu14.04 | 18 ++++++++++++++++++ Dockerfile.ubuntu16.04 | 18 ++++++++++++++++++ Makefile | 37 +++++++++++++++++++++++++++++++++++++ 7 files changed, 122 insertions(+) create mode 100644 Dockerfile.alpine3.4 create mode 100644 Dockerfile.alpine3.5 create mode 100644 Dockerfile.centos7 create mode 100644 Dockerfile.ubuntu14.04 create mode 100644 Dockerfile.ubuntu16.04 create mode 100644 Makefile diff --git a/.gitignore b/.gitignore index b8f5b56a86e..96554d125e7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ cmd/docker-machine-driver-kvm/docker-machine-driver-kvm *.sw* +docker-machine-driver-kvm-* diff --git a/Dockerfile.alpine3.4 b/Dockerfile.alpine3.4 new file mode 100644 index 00000000000..afa00740296 --- /dev/null +++ b/Dockerfile.alpine3.4 @@ -0,0 +1,15 @@ +FROM alpine:3.4 + +MAINTAINER Daniel Hiltgen + +ARG MACHINE_VERSION +ENV GOPATH /go + +RUN apk -v add --update libvirt-dev curl go git musl-dev gcc +RUN git clone --branch ${MACHINE_VERSION} https://github.com/docker/machine.git /go/src/github.com/docker/machine + +COPY . /go/src/github.com/dhiltgen/docker-machine-kvm +WORKDIR /go/src/github.com/dhiltgen/docker-machine-kvm +RUN go get -v -d ./... + +RUN go install -v ./cmd/docker-machine-driver-kvm diff --git a/Dockerfile.alpine3.5 b/Dockerfile.alpine3.5 new file mode 100644 index 00000000000..1f42b0e62aa --- /dev/null +++ b/Dockerfile.alpine3.5 @@ -0,0 +1,15 @@ +FROM alpine:3.5 + +MAINTAINER Daniel Hiltgen + +ARG MACHINE_VERSION +ENV GOPATH /go + +RUN apk -v add --update libvirt-dev curl go git musl-dev gcc +RUN git clone --branch ${MACHINE_VERSION} https://github.com/docker/machine.git /go/src/github.com/docker/machine + +COPY . /go/src/github.com/dhiltgen/docker-machine-kvm +WORKDIR /go/src/github.com/dhiltgen/docker-machine-kvm +RUN go get -v -d ./... + +RUN go install -v ./cmd/docker-machine-driver-kvm diff --git a/Dockerfile.centos7 b/Dockerfile.centos7 new file mode 100644 index 00000000000..693d364ee56 --- /dev/null +++ b/Dockerfile.centos7 @@ -0,0 +1,18 @@ +FROM centos:7 + +MAINTAINER Daniel Hiltgen + +ARG MACHINE_VERSION +ARG GO_VERSION +ENV GOPATH /go + +RUN yum install -y libvirt-devel curl git gcc +RUN curl -sSL https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz | tar -C /usr/local -xzf - +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/go/bin +RUN git clone --branch ${MACHINE_VERSION} https://github.com/docker/machine.git /go/src/github.com/docker/machine + +COPY . /go/src/github.com/dhiltgen/docker-machine-kvm +WORKDIR /go/src/github.com/dhiltgen/docker-machine-kvm +RUN go get -v -d ./... + +RUN go install -v ./cmd/docker-machine-driver-kvm diff --git a/Dockerfile.ubuntu14.04 b/Dockerfile.ubuntu14.04 new file mode 100644 index 00000000000..3b1c1cc552d --- /dev/null +++ b/Dockerfile.ubuntu14.04 @@ -0,0 +1,18 @@ +FROM ubuntu:14.04 + +MAINTAINER Daniel Hiltgen + +ARG MACHINE_VERSION +ARG GO_VERSION +ENV GOPATH /go + +RUN apt-get update && apt-get install -y libvirt-dev curl git gcc +RUN curl -sSL https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz | tar -C /usr/local -xzf - +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/go/bin +RUN git clone --branch ${MACHINE_VERSION} https://github.com/docker/machine.git /go/src/github.com/docker/machine + +COPY . /go/src/github.com/dhiltgen/docker-machine-kvm +WORKDIR /go/src/github.com/dhiltgen/docker-machine-kvm +RUN go get -v -d ./... + +RUN go install -v ./cmd/docker-machine-driver-kvm diff --git a/Dockerfile.ubuntu16.04 b/Dockerfile.ubuntu16.04 new file mode 100644 index 00000000000..c6286daaa70 --- /dev/null +++ b/Dockerfile.ubuntu16.04 @@ -0,0 +1,18 @@ +FROM ubuntu:16.04 + +MAINTAINER Daniel Hiltgen + +ARG MACHINE_VERSION +ARG GO_VERSION +ENV GOPATH /go + +RUN apt-get update && apt-get install -y libvirt-dev curl git gcc +RUN curl -sSL https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz | tar -C /usr/local -xzf - +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/go/bin +RUN git clone --branch ${MACHINE_VERSION} https://github.com/docker/machine.git /go/src/github.com/docker/machine + +COPY . /go/src/github.com/dhiltgen/docker-machine-kvm +WORKDIR /go/src/github.com/dhiltgen/docker-machine-kvm +RUN go get -v -d ./... + +RUN go install -v ./cmd/docker-machine-driver-kvm diff --git a/Makefile b/Makefile new file mode 100644 index 00000000000..ce5d680c526 --- /dev/null +++ b/Makefile @@ -0,0 +1,37 @@ +PREFIX=docker-machine-driver-kvm +MACHINE_VERSION=v0.10.0 +GO_VERSION=1.8.1 +DESCRIBE=$(shell git describe --tags) + +TARGETS=$(addprefix $(PREFIX)-, alpine3.4 alpine3.5 ubuntu14.04 ubuntu16.04 centos7) + +build: $(TARGETS) + +$(PREFIX)-%: Dockerfile.% + docker rmi -f $@ >/dev/null 2>&1 || true + docker rm -f $@-extract > /dev/null 2>&1 || true + echo "Building binaries for $@" + docker build --build-arg "MACHINE_VERSION=$(MACHINE_VERSION)" --build-arg "GO_VERSION=$(GO_VERSION)" -t $@ -f $< . + docker create --name $@-extract $@ sh + docker cp $@-extract:/go/bin/docker-machine-driver-kvm ./ + mv ./docker-machine-driver-kvm ./$@ + docker rm $@-extract || true + docker rmi $@ || true + +clean: + rm -f ./$(PREFIX)-* + + +release: build + @echo "Paste the following into the release page on github and upload the binaries..." + @echo "" + @for bin in $(PREFIX)-* ; do \ + target=$$(echo $${bin} | cut -f5- -d-) ; \ + md5=$$(md5sum $${bin}) ; \ + echo "* $${target} - md5: $${md5}" ; \ + echo '```' ; \ + echo " curl -L https://github.com/dhiltgen/docker-machine-kvm/releases/download/$(DESCRIBE)/$${bin} > /usr/local/bin/$(PREFIX) \\ " ; \ + echo " chmod +x /usr/local/bin/$(PREFIX)" ; \ + echo '```' ; \ + done +