1
1
PKG_NAME := github.com/docker/lunchbox
2
2
BIN_NAME := docker-app
3
3
4
- TAG : = ${ shell git describe --always --dirty}
4
+ TAG ? = $( shell git describe --always --dirty)
5
5
6
6
IMAGE_NAME := docker-app
7
7
8
- GO_VERSION := 1.10
9
- RUN_BASE_TAG := 3.7
8
+ ALPINE_VERSION := 3.7
9
+ GO_VERSION := 1.10.1
10
10
11
11
IMAGE_BUILD_ARGS := \
12
+ --build-arg ALPINE_VERSION=$(ALPINE_VERSION ) \
12
13
--build-arg GO_VERSION=$(GO_VERSION ) \
13
- --build-arg RUN_BASE_TAG=$(RUN_BASE_TAG )
14
+ --build-arg BIN_NAME=$(BIN_NAME ) \
15
+ --build-arg TAG=$(TAG )
14
16
15
- LDFLAGS :=
17
+ LDFLAGS := "-s -w"
18
+
19
+ # ####################
20
+ # Local Development #
21
+ # ####################
16
22
17
23
EXEC_EXT :=
18
24
ifeq ($(OS ) ,Windows_NT)
@@ -26,22 +32,18 @@ CHECK_GO_ENV:
26
32
(echo " Invalid Go environment" && false)
27
33
28
34
bin : CHECK_GO_ENV
29
- @echo " Building _build/bin/ $( BIN_NAME) $( EXEC_EXT) ..."
30
- @ go build -ldflags=$(LDFLAGS ) -i -o _build/bin/ $(BIN_NAME )$(EXEC_EXT ) ./
35
+ @echo " Building _build/$( BIN_NAME) $( EXEC_EXT) ..."
36
+ go build -ldflags=$(LDFLAGS ) -i -o _build/$(BIN_NAME )$(EXEC_EXT )
31
37
38
+ OS_LIST ?= darwin linux windows
32
39
bin-all : CHECK_GO_ENV
33
- @echo " Building for all archs in _build/$( TAG) "
34
- GOOS=windows go build -ldflags=$(LDFLAGS ) -i -o _build/$(TAG ) /$(BIN_NAME ) -windows.exe ./
35
- GOOS=linux go build -ldflags=$(LDFLAGS ) -i -o _build/$(TAG ) /$(BIN_NAME ) -linux ./
36
- GOOS=darwin go build -ldflags=$(LDFLAGS ) -i -o _build/$(TAG ) /$(BIN_NAME ) -macos ./
40
+ @echo " Building for all platforms..."
41
+ $(foreach OS, $(OS_LIST ) , GOOS=$(OS ) go build -ldflags=$(LDFLAGS ) -i -o _build/$(TAG ) /$(BIN_NAME ) -$(OS )$(if $(filter windows, $(OS ) ) ,.exe,) || exit 1;)
37
42
38
43
release :
39
44
gsutil cp -r _build/$(TAG ) gs://docker_app
40
45
41
- image :
42
- @docker build -t $(IMAGE_NAME ) $(IMAGE_BUILD_ARGS ) . --target run
43
-
44
- test : lint unit-test e2e-test
46
+ test check : lint unit-test e2e-test
45
47
46
48
lint :
47
49
@echo " Linting..."
@@ -50,14 +52,28 @@ lint:
50
52
51
53
e2e-test :
52
54
@echo " Running e2e tests..."
53
- @ go test ./e2e/
55
+ go test ./e2e/
54
56
55
57
unit-test :
56
58
@echo " Running unit tests..."
57
- @ go test $(shell go list ./... | grep -vE '/vendor/|/e2e')
59
+ go test $(shell go list ./... | grep -vE '/vendor/|/e2e')
58
60
59
61
clean :
60
62
rm -Rf ./_build
61
63
62
- .PHONY : bin image test lint e2e-test unit-test clean
64
+ # #####
65
+ # CI #
66
+ # #####
67
+
68
+ ci-lint : lint
69
+
70
+ ci-test :
71
+ docker build -t $(IMAGE_NAME ) -test $(IMAGE_BUILD_ARGS ) . --target=test
72
+
73
+ ci-bin-% :
74
+ @echo " Building tarball for $* ..."
75
+ docker build -t $(IMAGE_NAME ) -bin-all $(IMAGE_BUILD_ARGS ) . --target=bin-build
76
+ docker run --rm $(IMAGE_NAME ) -bin-all tar -cz $(BIN_NAME ) -$* $(if $(filter windows, $* ) ,.exe,) -C /go/src/$(PKG_NAME ) /_build/$(TAG ) / > $(BIN_NAME ) -$* -$(TAG ) .tar.gz
77
+
78
+ .PHONY : bin bin-all release test check lint e2e-test unit-test clean ci-lint ci-test
63
79
.DEFAULT : all
0 commit comments