From 4617c01aaf1836ae0c17465d8c731a7c6b316a3a Mon Sep 17 00:00:00 2001
From: Richard Mitchell <richard.j.mitchell@gmail.com>
Date: Sun, 5 Aug 2018 09:30:56 +0100
Subject: [PATCH] Build and distribution support

---
 .dockerignore                  |  6 ++++++
 Dockerfile => Dockerfile.amd64 |  8 +++++---
 Dockerfile.arm7                | 11 +++++++++++
 Dockerfile.build.amd64         |  7 +++++++
 Dockerfile.build.arm7          |  7 +++++++
 Makefile                       | 36 +++++++++++++++++++++++++++-------
 build/.gitignore               |  2 ++
 7 files changed, 67 insertions(+), 10 deletions(-)
 create mode 100644 .dockerignore
 rename Dockerfile => Dockerfile.amd64 (50%)
 create mode 100644 Dockerfile.arm7
 create mode 100644 Dockerfile.build.amd64
 create mode 100644 Dockerfile.build.arm7
 create mode 100644 build/.gitignore

diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..dab5c2d
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,6 @@
+Dockerfile*
+*.md
+Gopkg.*
+hue_exporter
+LICENSE
+Makefile
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile.amd64
similarity index 50%
rename from Dockerfile
rename to Dockerfile.amd64
index e7a28b8..a5e4c2a 100644
--- a/Dockerfile
+++ b/Dockerfile.amd64
@@ -1,8 +1,10 @@
-FROM        quay.io/prometheus/busybox:latest
+FROM        amd64/busybox:musl
 MAINTAINER  Richard Mitchell <hue-exporter@mitch.org.uk>
 
-COPY hue_exporter  /bin/hue_exporter
-COPY hue_exporter.example.yml       /etc/hue_exporter/config.yml
+COPY ./build/hue_exporter.amd64 /bin/hue_exporter
+COPY hue_exporter.example.yml   /etc/hue_exporter/config.yml
+
+VOLUME /etc/hue_exporter
 
 EXPOSE      9366
 ENTRYPOINT  [ "/bin/hue_exporter" ]
diff --git a/Dockerfile.arm7 b/Dockerfile.arm7
new file mode 100644
index 0000000..515b735
--- /dev/null
+++ b/Dockerfile.arm7
@@ -0,0 +1,11 @@
+FROM        arm32v7/busybox:latest
+MAINTAINER  Richard Mitchell <hue-exporter@mitch.org.uk>
+
+COPY ./build/hue_exporter.arm7 /bin/hue_exporter
+COPY hue_exporter.example.yml   /etc/hue_exporter/config.yml
+
+VOLUME /etc/hue_exporter
+
+EXPOSE      9366
+ENTRYPOINT  [ "/bin/hue_exporter" ]
+CMD         [ "--config.file=/etc/hue_exporter/config.yml" ]
\ No newline at end of file
diff --git a/Dockerfile.build.amd64 b/Dockerfile.build.amd64
new file mode 100644
index 0000000..facfbb2
--- /dev/null
+++ b/Dockerfile.build.amd64
@@ -0,0 +1,7 @@
+FROM amd64/golang:stretch
+
+COPY . /go/src/github.com/mitchellrj/hue_exporter
+WORKDIR /go/src/github.com/mitchellrj/hue_exporter
+
+VOLUME /build
+CMD go build -o /build/hue_exporter.amd64
diff --git a/Dockerfile.build.arm7 b/Dockerfile.build.arm7
new file mode 100644
index 0000000..afa956b
--- /dev/null
+++ b/Dockerfile.build.arm7
@@ -0,0 +1,7 @@
+FROM arm32v7/golang:stretch
+
+COPY . /go/src/github.com/mitchellrj/hue_exporter
+WORKDIR /go/src/github.com/mitchellrj/hue_exporter
+
+VOLUME /build
+CMD go build -o /build/hue_exporter.arm7
diff --git a/Makefile b/Makefile
index 5d80863..f80bc56 100644
--- a/Makefile
+++ b/Makefile
@@ -1,24 +1,46 @@
 all: style staticcheck build test
 
 style:
-  gofmt -d $$(find . -path ./vendor -prune -o -name '*.go' -print) | grep '^'
+	! gofmt -d $$(find . -path ./vendor -prune -o -name '*.go' -print) | grep '^'
 
 test:
-  go test ./...
+	go test ./...
 
 format:
-  go fmt ./...
+	go fmt ./...
 
 vet:
-  go vet ./...
+	go vet ./...
 
 staticcheck:
-  staticcheck ./...
+	staticcheck ./...
 
 build:
-  go build
+	go build
 
-docker:
+dist: darwin amd64 arm7 docker
+
+darwin:
+	cp hue_exporter build/hue_exporter.darwin
+
+amd64:
+	docker build --pull -f Dockerfile.build.amd64 -t hue_exporter_builder:latest .
+	docker run -v $$(pwd)/build:/build hue_exporter_builder:latest
 
+arm7:
+	docker build --pull -f Dockerfile.build.arm7 -t hue_exporter_builder:latest-arm .
+	docker run -v $$(pwd)/build:/build hue_exporter_builder:latest-arm
+
+docker:
+	docker build --pull -f Dockerfile.amd64 -t mitchellrj/hue_exporter:latest .
+	docker tag mitchellrj/hue_exporter:latest mitchellrj/hue_exporter:$$(build/hue_exporter.darwin -V)
+	docker build --pull -f Dockerfile.arm7 -t mitchellrj/hue_exporter:latest-arm7 .
+	docker tag mitchellrj/hue_exporter:latest mitchellrj/hue_exporter:$$(build/hue_exporter.darwin -V)-arm7
+
+push:
+	docker push mitchellrj/hue_exporter:latest
+	docker push mitchellrj/hue_exporter:$$(build/hue_exporter.darwin -V)
+	docker push mitchellrj/hue_exporter:latest-arm7
+	docker push mitchellrj/hue_exporter:$$(build/hue_exporter.darwin -V)-arm7
 
 .PHONY: all style test format vet staticcheck build
\ No newline at end of file
diff --git a/build/.gitignore b/build/.gitignore
new file mode 100644
index 0000000..c96a04f
--- /dev/null
+++ b/build/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
\ No newline at end of file
-- 
GitLab