CORD-1551 - updated maas makefiles and multi-stage dockerfile
Change-Id: I0bab86e0207edb12f553ddcfe040882f04f34f25
diff --git a/provisioner/Dockerfile b/provisioner/Dockerfile
deleted file mode 100644
index 91f697b..0000000
--- a/provisioner/Dockerfile
+++ /dev/null
@@ -1,30 +0,0 @@
-## Copyright 2016 Open Networking Laboratory
-##
-## Licensed under the Apache License, Version 2.0 (the "License");
-## you may not use this file except in compliance with the License.
-## You may obtain a copy of the License at
-##
-## http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing, software
-## distributed under the License is distributed on an "AS IS" BASIS,
-## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-## See the License for the specific language governing permissions and
-## limitations under the License.
-FROM golang:1.7-alpine
-MAINTAINER Open Networking Laboratory <info@onlab.us>
-
-RUN mkdir -p /root/.ssh /service
-COPY ssh-config /root/.ssh/config
-ADD . /go/src/gerrit.opencord.org/maas/cord-provisioner
-
-WORKDIR /go
-RUN go build -o /service/entry-point gerrit.opencord.org/maas/cord-provisioner
-
-LABEL org.label-schema.name="provisioner" \
- org.label-schema.description="Provides provisioning of compute and switch nodes for CORD" \
- org.label-schema.vcs-url="https://gerrit.opencord.org/maas" \
- org.label-schema.vendor="Open Networking Laboratory" \
- org.label-schema.schema-version="1.0"
-
-ENTRYPOINT ["/service/entry-point"]
diff --git a/provisioner/Dockerfile.release b/provisioner/Dockerfile.provisioner
similarity index 77%
rename from provisioner/Dockerfile.release
rename to provisioner/Dockerfile.provisioner
index 188896c..1aa5742 100644
--- a/provisioner/Dockerfile.release
+++ b/provisioner/Dockerfile.provisioner
@@ -1,4 +1,4 @@
-## Copyright 2017 Open Networking Laboratory
+## Copyright 2016 Open Networking Laboratory
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
@@ -11,15 +11,21 @@
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
+FROM golang:1.7-alpine as builder
+MAINTAINER Open Networking Laboratory <info@onlab.us>
+
+WORKDIR /go
+ADD . /go/src/gerrit.opencord.org/maas/cord-provisioner
+RUN go build -o /build/entry-point gerrit.opencord.org/maas/cord-provisioner
+
FROM alpine:3.5
MAINTAINER Open Networking Laboratory <info@onlab.us>
# Base image information borrowed by official golang wheezy Dockerfile
RUN apk --update add ansible openssh-client sshpass curl py2-netaddr rsync
-RUN mkdir -p /root/.ssh /service /etc/ansible
COPY ssh-config /root/.ssh/config
COPY ansible.cfg /etc/ansible/ansible.cfg
-ADD entry-point /service/entry-point
+COPY --from=builder /build/entry-point /service/entry-point
LABEL org.label-schema.name="provisioner" \
org.label-schema.description="Provides provisioning of compute and switch nodes for CORD" \
diff --git a/provisioner/Makefile b/provisioner/Makefile
index 0a8bdcf..95e1504 100644
--- a/provisioner/Makefile
+++ b/provisioner/Makefile
@@ -1,38 +1,5 @@
-IMAGE_NAME=cord-provisioner
-BINARY=entry-point
-BUILD_TAG=build
-PACKAGE_TAG=candidate
+IMAGES+=provisioner
-.PHONY: help
-help:
- @echo "build - create the binary"
- @echo "package - package the binary into a docker container"
- @echo "clean - remove tempory files and build artifacts"
- @echo "help - this message"
+provisioner.image: ssh-config ansible.cfg Dockerfile.provisioner *.go vendor/vendor.json
-BUILD_DATE=$(shell date -u +%Y-%m-%dT%TZ)
-VCS_REF=$(shell git log --pretty=format:%H -n 1)
-VCS_REF_DATE=$(shell git log --pretty=format:%cd --date=format:%FT%T%z -n 1)
-BRANCHES=$(shell repo --color=never --no-pager branches 2>/dev/null | wc -l)
-STATUS=$(shell repo --color=never --no-pager status . | tail -n +2 | wc -l)
-MODIFIED=$(shell test $(BRANCHES) -eq 0 && test $(STATUS) -eq 0 || echo "[modified]")
-BRANCH=$(shell repo --color=never --no-pager info -l -o | grep 'Manifest branch:' | awk '{print $$NF}')
-VERSION=$(BRANCH)$(MODIFIED)
-
-.PHONY: build
-build:
- docker build -t $(IMAGE_NAME):$(BUILD_TAG) .
-
-.PHONY: package
-package:
- $(eval BUILD_ID := $(shell docker create $(IMAGE_NAME):$(BUILD_TAG)))
- $(eval BINDIR := $(shell mktemp -d))
- docker cp $(BUILD_ID):/service/$(BINARY) $(BINDIR)/$(BINARY)
- cp Dockerfile.release ssh-config ansible.cfg $(BINDIR)
- docker build -f $(BINDIR)/Dockerfile.release -t $(IMAGE_NAME):$(PACKAGE_TAG) --label org.label-schema.build-date=$(BUILD_DATE) --label org.label-schema.vcs-ref=$(VCS_REF) --label org.label-schema.vcs-ref-date=$(VCS_REF_DATE) --label org.label-schema.version=$(VERSION) $(BINDIR)
- docker rm -f $(BUILD_ID)
- rm -r $(BINDIR)
-
-.PHONY: clean
-clean:
- @echo ""
+include ../rules.mk