1
1
PKG_NAME := github.com/docker/lunchbox
2
2
BIN_NAME := docker-app
3
+ E2E_NAME := $(BIN_NAME ) -e2e
3
4
4
5
# Enable experimental features. "on" or "off"
5
6
EXPERIMENTAL := off
@@ -15,7 +16,6 @@ GO_VERSION := 1.10.1
15
16
IMAGE_BUILD_ARGS := \
16
17
--build-arg ALPINE_VERSION=$(ALPINE_VERSION ) \
17
18
--build-arg GO_VERSION=$(GO_VERSION ) \
18
- --build-arg BIN_NAME=$(BIN_NAME ) \
19
19
--build-arg COMMIT=$(COMMIT ) \
20
20
--build-arg TAG=$(TAG )
21
21
@@ -25,17 +25,21 @@ LDFLAGS := "-s -w \
25
25
-X $(PKG_NAME ) /internal.Experimental=$(EXPERIMENTAL ) "
26
26
27
27
GO_BUILD := CGO_ENABLED=0 go build
28
- GO_TEST := go test
28
+ GO_TEST := CGO_ENABLED=0 go test
29
29
30
30
# ####################
31
31
# Local Development #
32
32
# ####################
33
33
34
+ OS_LIST ?= darwin linux windows
35
+
34
36
EXEC_EXT :=
35
37
ifeq ($(OS ) ,Windows_NT)
36
38
EXEC_EXT := .exe
37
39
endif
38
40
41
+ PKG_PATH := /go/src/$(PKG_NAME )
42
+
39
43
all : bin test
40
44
41
45
check_go_env :
@@ -46,20 +50,23 @@ bin: check_go_env
46
50
@echo " Building _build/$( BIN_NAME) $( EXEC_EXT) ..."
47
51
$(GO_BUILD ) -ldflags=$(LDFLAGS ) -i -o _build/$(BIN_NAME )$(EXEC_EXT )
48
52
49
- OS_LIST ?= darwin linux windows
50
53
bin-all : check_go_env
51
54
@echo " Building for all platforms..."
52
- $(foreach OS, $(OS_LIST ) , GOOS=$(OS ) $(GO_BUILD ) -ldflags=$(LDFLAGS ) -i -o _build/$(TAG ) /$(BIN_NAME ) -$(OS )$(if $(filter windows, $(OS ) ) ,.exe,) || exit 1;)
55
+ $(foreach OS, $(OS_LIST ) , GOOS=$(OS ) $(GO_BUILD ) -ldflags=$(LDFLAGS ) -i -o _build/$(BIN_NAME ) -$(OS )$(if $(filter windows, $(OS ) ) ,.exe,) || exit 1;)
56
+
57
+ e2e-all : check_go_env
58
+ @echo " Building for all platforms..."
59
+ $(foreach OS, $(OS_LIST ) , GOOS=$(OS ) $(GO_TEST ) -c -i -o _build/$(E2E_NAME ) -$(OS )$(if $(filter windows, $(OS ) ) ,.exe,) ./e2e || exit 1;)
53
60
54
61
release :
55
- gsutil cp -r _build/ $( TAG ) gs://docker_app
62
+ gsutil cp -r _build gs://docker_app
56
63
57
64
test check : lint unit-test e2e-test
58
65
59
66
lint :
60
67
@echo " Linting..."
61
68
@tar -c Dockerfile.lint gometalinter.json | docker build -t $(IMAGE_NAME ) -lint $(IMAGE_BUILD_ARGS ) -f Dockerfile.lint - --target=lint-volume > /dev/null
62
- @docker run --rm -v $(dir $(realpath $(lastword $(MAKEFILE_LIST ) ) ) ) :/go/src/ $( PKG_NAME ) :ro,cached $(IMAGE_NAME ) -lint
69
+ @docker run --rm -v $(dir $(realpath $(lastword $(MAKEFILE_LIST ) ) ) ) :$( PKG_PATH ) :ro,cached $(IMAGE_NAME ) -lint
63
70
64
71
e2e-test : bin
65
72
@echo " Running e2e tests..."
@@ -72,9 +79,9 @@ unit-test:
72
79
clean :
73
80
rm -Rf ./_build docker-app-* .tar.gz
74
81
75
- # #####
76
- # CI #
77
- # #####
82
+ # #########################
83
+ # Continuous Integration #
84
+ # #########################
78
85
79
86
ci-lint :
80
87
@echo " Linting..."
@@ -87,7 +94,8 @@ ci-test:
87
94
88
95
ci-bin-all :
89
96
docker build -t $(IMAGE_NAME ) -bin-all:$(TAG ) $(IMAGE_BUILD_ARGS ) . --target=bin-build
90
- $(foreach OS, $(OS_LIST ) , docker run --rm $(IMAGE_NAME ) -bin-all:$(TAG ) tar -cz $(BIN_NAME ) -$(OS )$(if $(filter windows, $(OS ) ) ,.exe,) -C /go/src/$(PKG_NAME ) /_build/$(TAG ) / > $(BIN_NAME ) -$(OS ) -$(TAG ) .tar.gz || exit 1;)
97
+ $(foreach OS, $(OS_LIST ) , docker run --rm $(IMAGE_NAME ) -bin-all:$(TAG ) tar -cz -C $(PKG_PATH ) /_build $(BIN_NAME ) -$(OS )$(if $(filter windows, $(OS ) ) ,.exe,) > $(BIN_NAME ) -$(OS ) -$(TAG ) .tar.gz || exit 1;)
98
+ $(foreach OS, $(OS_LIST ) , docker run --rm $(IMAGE_NAME ) -bin-all:$(TAG ) /bin/sh -c "cp $(PKG_PATH ) /_build/* -$(OS ) * $(PKG_PATH ) /e2e && cd $(PKG_PATH ) /e2e && tar -cz * --exclude=* .go" > $(E2E_NAME ) -$(OS ) -$(TAG ) .tar.gz || exit 1;)
91
99
92
- .PHONY : bin bin-all release test check lint e2e-test unit-test clean ci-lint ci-test ci-bin-all
100
+ .PHONY : bin bin-all release test check lint e2e-test e2e-all unit-test clean ci-lint ci-test ci-bin-all ci-e2e -all
93
101
.DEFAULT : all
0 commit comments