From 1c21dcab686863bafdd0d7aec448ada2b96a0258 Mon Sep 17 00:00:00 2001 From: Onur Filiz Date: Wed, 4 Jan 2017 16:21:14 -0800 Subject: [PATCH] Added containerized build --- Dockerfile | 12 ------------ Dockerfile.build | 6 ++++++ Makefile | 22 ++++++++++++++++++---- build/build.sh | 2 ++ 4 files changed, 26 insertions(+), 16 deletions(-) delete mode 100644 Dockerfile create mode 100644 Dockerfile.build create mode 100755 build/build.sh diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 8a31b44543..0000000000 --- a/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM golang:latest - -# Install dependencies. -RUN apt-get update && apt-get install -y ebtables - -RUN go get -d -v golang.org/x/sys/unix - -COPY . /go/src/github.com/Azure/azure-container-networking -WORKDIR /go/src/github.com/Azure/azure-container-networking - -RUN make azure-cnm-plugin -RUN make azure-cni-plugin diff --git a/Dockerfile.build b/Dockerfile.build new file mode 100644 index 0000000000..54f3b7f435 --- /dev/null +++ b/Dockerfile.build @@ -0,0 +1,6 @@ +FROM golang:1.7.4 + +RUN go get -d golang.org/x/sys/unix +RUN go get -d github.com/containernetworking/cni/pkg/skel + +WORKDIR /go/src/github.com/Azure/azure-container-networking diff --git a/Makefile b/Makefile index 0c8e127c28..0cc43d93a6 100644 --- a/Makefile +++ b/Makefile @@ -25,10 +25,12 @@ CNIFILES = \ $(COREFILES) CNMDIR = cnm/plugin - CNIDIR = cni/plugin - OUTPUTDIR = out +REPO_PATH = /go/src/github.com/Azure/azure-container-networking + +BUILD_CONTAINER_IMAGE = acn-build +BUILD_USER ?= $(shell id -u) VERSION ?= $(shell git describe --tags --always --dirty) @@ -37,6 +39,7 @@ ENSURE_OUTPUTDIR_EXISTS := $(shell mkdir -p $(OUTPUTDIR)) # Shorthand target names for convenience. azure-cnm-plugin: $(OUTPUTDIR)/azure-cnm-plugin azure-cni-plugin: $(OUTPUTDIR)/azure-cni-plugin +all-binaries: azure-cnm-plugin azure-cni-plugin # Clean all build artifacts. .PHONY: clean @@ -51,5 +54,16 @@ $(OUTPUTDIR)/azure-cnm-plugin: $(CNMFILES) $(OUTPUTDIR)/azure-cni-plugin: $(CNIFILES) go build -v -o $(OUTPUTDIR)/azure-cni-plugin -ldflags "-X main.version=$(VERSION) -s -w" $(CNIDIR)/*.go -install: - go install github.com/Azure/azure-container-networking/cnm +# Build all binaries in a container. +.PHONY: build-containerized +build-containerized: + docker build -f Dockerfile.build -t $(BUILD_CONTAINER_IMAGE):$(VERSION) . + docker run --rm \ + -v ${PWD}:$(REPO_PATH):ro \ + -v ${PWD}/$(OUTPUTDIR):$(REPO_PATH)/$(OUTPUTDIR) \ + $(BUILD_CONTAINER_IMAGE):$(VERSION) \ + bash -c '\ + make all-binaries && \ + chown -R $(BUILD_USER):$(BUILD_USER) $(OUTPUTDIR) \ + ' + diff --git a/build/build.sh b/build/build.sh new file mode 100755 index 0000000000..4bdfb40600 --- /dev/null +++ b/build/build.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +make build-containerized \ No newline at end of file