@@ -18,6 +18,7 @@ BUILD_DATE_VAR := $(REPO_PATH)/pkg/version.BuildDate
18
18
BUILD_DATE := $$(date +%Y-%m-%d-%H:%M )
19
19
GIT_VAR := $(REPO_PATH ) /pkg/version.GitCommit
20
20
GIT_HASH := $$(git rev-parse --short HEAD )
21
+ LDFLAGS ?= "-X $(BUILD_DATE_VAR ) =$(BUILD_DATE ) -X $(BUILD_VERSION_VAR ) =$(IMAGE_VERSION ) -X $(GIT_VAR ) =$(GIT_HASH ) "
21
22
22
23
GO_FILES =$(shell go list ./... | grep -v /test/e2e)
23
24
TOOLS_MOD_DIR := ./tools
@@ -30,9 +31,11 @@ export DOCKER_BUILDKIT
30
31
# Testing var
31
32
KIND_VERSION ?= 0.11.0
32
33
KUBERNETES_VERSION ?= v1.21.1
33
- BATS_VERSION ?= 1.2 .1
34
+ BATS_VERSION ?= 1.4 .1
34
35
35
- GO_BUILD_OPTIONS := --tags "netgo osusergo" -ldflags "-s -X $(BUILD_VERSION_VAR ) =$(IMAGE_VERSION ) -X $(GIT_VAR ) =$(GIT_HASH ) -X $(BUILD_DATE_VAR ) =$(BUILD_DATE ) -extldflags '-static'"
36
+ # # --------------------------------------
37
+ # # Linting
38
+ # # --------------------------------------
36
39
37
40
$(TOOLS_DIR ) /golangci-lint : $(TOOLS_MOD_DIR ) /go.mod $(TOOLS_MOD_DIR ) /go.sum $(TOOLS_MOD_DIR ) /tools.go
38
41
cd $(TOOLS_MOD_DIR ) && \
@@ -42,41 +45,69 @@ $(TOOLS_DIR)/golangci-lint: $(TOOLS_MOD_DIR)/go.mod $(TOOLS_MOD_DIR)/go.sum $(TO
42
45
lint : $(TOOLS_DIR ) /golangci-lint
43
46
$(TOOLS_DIR ) /golangci-lint run --timeout=5m -v
44
47
45
- .PHONY : build
46
- build :
47
- $Q GOOS=linux CGO_ENABLED=0 go build $(GO_BUILD_OPTIONS ) -o _output/kubernetes-kms ./cmd/server/
48
-
49
- .PHONY : build-darwin
50
- build-darwin :
51
- $Q GOOS=darwin CGO_ENABLED=0 go build $(GO_BUILD_OPTIONS ) -o _output/kubernetes-kms ./cmd/server/
52
-
53
- build-image : clean build
54
- $Q docker build -t $(IMAGE_TAG ) .
48
+ # # --------------------------------------
49
+ # # Images
50
+ # # --------------------------------------
55
51
56
- push-image : build-image
57
- $Q docker push $(IMAGE_TAG )
52
+ ALL_LINUX_ARCH ?= amd64 arm64
53
+ # Output type of docker buildx build
54
+ OUTPUT_TYPE ?= type=registry
58
55
59
- .PHONY : clean unit-test integration-test
56
+ BUILDX_BUILDER_NAME ?= img-builder
57
+ QEMU_VERSION ?= 5.2.0-2
58
+ # The architecture of the image
59
+ ARCH ?= amd64
60
60
61
- clean :
62
- $Q rm -rf _output/
61
+ .PHONY : build
62
+ build :
63
+ go build -a -ldflags $(LDFLAGS ) -o _output/kubernetes-kms ./cmd/server/
64
+
65
+ .PHONY : docker-build
66
+ docker-build :
67
+ @if ! docker buildx ls | grep $(BUILDX_BUILDER_NAME ) ; then \
68
+ docker run --rm --privileged multiarch/qemu-user-static:$(QEMU_VERSION ) --reset -p yes; \
69
+ docker buildx create --name $(BUILDX_BUILDER_NAME ) --use; \
70
+ docker buildx inspect $(BUILDX_BUILDER_NAME ) --bootstrap; \
71
+ fi
72
+ docker buildx build \
73
+ --build-arg GOARCH=$(ARCH ) \
74
+ --build-arg LDFLAGS=$(LDFLAGS ) \
75
+ --no-cache \
76
+ --platform=" linux/$( ARCH) " \
77
+ --output=$(OUTPUT_TYPE ) \
78
+ -t $(REGISTRY ) /$(IMAGE_NAME ) :$(IMAGE_VERSION ) -linux-$(ARCH ) . \
79
+ --progress=plain; \
80
+
81
+ @if [ " $( ARCH) " = " amd64" ] && [ " $( OUTPUT_TYPE) " = " type=docker" ]; then \
82
+ docker tag $(REGISTRY ) /$(IMAGE_NAME ) :$(IMAGE_VERSION ) -linux-$(ARCH ) $(REGISTRY ) /$(IMAGE_NAME ) :$(IMAGE_VERSION ) ; \
83
+ fi
84
+
85
+ .PHONY : docker-build-all
86
+ docker-build-all :
87
+ @for ARCH in $(ALL_LINUX_ARCH ) ; do \
88
+ $(MAKE ) ARCH=$(ARCH ) docker-build; \
89
+ done
90
+
91
+ .PHONY : docker-push-manifest
92
+ docker-push-manifest :
93
+ docker manifest create --amend $(REGISTRY ) /$(IMAGE_NAME ) :$(IMAGE_VERSION ) $(foreach arch,$(ALL_LINUX_ARCH ) ,$(REGISTRY ) /$(IMAGE_NAME ) :$(IMAGE_VERSION ) -linux-$(arch ) ) ; \
94
+ for arch in $( ALL_LINUX_ARCH) ; do \
95
+ docker manifest annotate --os linux --arch $$ {arch} $(REGISTRY ) /$(IMAGE_NAME ) :$(IMAGE_VERSION ) $(REGISTRY ) /$(IMAGE_NAME ) :$(IMAGE_VERSION ) -linux-$$ {arch}; \
96
+ done ; \
97
+ docker manifest push --purge $(REGISTRY ) /$(IMAGE_NAME ) :$(IMAGE_VERSION ) ; \
63
98
64
- authors :
65
- $Q git log --all --format=' %aN <%cE>' | sort -u | sed -n ' /github/!p' > GITAUTHORS
66
- $Q cat AUTHORS GITAUTHORS | sort -u > NEWAUTHORS
67
- $Q mv NEWAUTHORS AUTHORS
68
- $Q rm -f NEWAUTHORS
69
- $Q rm -f GITAUTHORS
99
+ # # --------------------------------------
100
+ # # Testing
101
+ # # --------------------------------------
70
102
103
+ .PHONY : integration-test
71
104
integration-test :
72
- $Q sudo GOPATH= $( GOPATH ) go test -v -count=1 -failfast github.com/Azure/kubernetes-kms/tests/client
105
+ go test -v -count=1 -failfast github.com/Azure/kubernetes-kms/tests/client
73
106
107
+ .PHONY : unit-test
74
108
unit-test :
75
109
go test -race -v -count=1 -failfast ` go list ./... | grep -v client`
76
110
77
- .PHONY : mod
78
- mod :
79
- @go mod tidy
80
111
81
112
# # --------------------------------------
82
113
# # E2E Testing
0 commit comments