1818
1919BINDIR := $(CURDIR ) /bin
2020DIST_DIRS := find * -type d -exec
21- TARGETS ?= darwin/amd64 linux/amd64 linux/386 linux/arm linux/arm64 linux/ppc64le windows/amd64
22- IMAGE_BUILD_TOOL ?= docker
21+ TARGETS ?= linux/amd64 linux/arm64
22+ IMAGE_BUILD_TOOL ?= podman
23+ GOX_PARALLEL ?= 3
2324
2425GOPATH = $(shell go env GOPATH)
2526GOX = $(GOPATH ) /bin/gox
@@ -61,14 +62,26 @@ endif
6162LDFLAGS += -X ${BASE_PKG}/internal/version.commit=${GIT_COMMIT}
6263LDFLAGS += -X ${BASE_PKG}/internal/version.treestate=${GIT_DIRTY}
6364
65+ IMAGE_TAG := ${GIT_BRANCH}
66+ ifneq ($(GIT_TAG ) ,)
67+ IMAGE_TAG = ${GIT_TAG}
68+ endif
69+
70+ ARCH := $(shell uname -m)
71+ ifeq ($(ARCH ) ,x86_64)
72+ LOCAL_TARGET =linux/amd64
73+ else ifeq ($(ARCH),arm64)
74+ LOCAL_TARGET =linux/arm64
75+ endif
76+
6477.PHONY : all
6578all : build
6679
6780# ------------------------------------------------------------------------------
6881# build
6982
70- .PHONY : build
71- build : $( BINDIR ) /csi-cvmfsplugin $( BINDIR ) /automount-runner $( BINDIR ) /singlemount-runner
83+ build : TARGETS = $( LOCAL_TARGET )
84+ build : build-cross
7285
7386$(BINDIR ) /csi-cvmfsplugin : $(SRC )
7487 go build $(GOFLAGS ) -tags ' $(TAGS)' -ldflags ' $(LDFLAGS)' -o $@ ./cmd/csi-cvmfsplugin
@@ -79,98 +92,34 @@ $(BINDIR)/automount-runner: $(SRC)
7992$(BINDIR ) /singlemount-runner : $(SRC )
8093 go build $(GOFLAGS ) -tags ' $(TAGS)' -ldflags ' $(LDFLAGS)' -o $@ ./cmd/singlemount-runner
8194
95+ .PHONY : build-cross
96+ build-cross : LDFLAGS += -extldflags "-static"
97+ build-cross : $(GOX ) $(SRC )
98+ CGO_ENABLED=0 $(GOX ) -parallel=$(GOX_PARALLEL ) -output=" $( BINDIR) /{{.OS}}-{{.Arch}}/csi-cvmfsplugin" -osarch=' $(TARGETS)' $(GOFLAGS ) -tags ' $(TAGS)' -ldflags ' $(LDFLAGS)' ./cmd/csi-cvmfsplugin
99+ CGO_ENABLED=0 $(GOX ) -parallel=$(GOX_PARALLEL ) -output=" $( BINDIR) /{{.OS}}-{{.Arch}}/automount-runner" -osarch=' $(TARGETS)' $(GOFLAGS ) -tags ' $(TAGS)' -ldflags ' $(LDFLAGS)' ./cmd/automount-runner
100+ CGO_ENABLED=0 $(GOX ) -parallel=$(GOX_PARALLEL ) -output=" $( BINDIR) /{{.OS}}-{{.Arch}}/singlemount-runner" -osarch=' $(TARGETS)' $(GOFLAGS ) -tags ' $(TAGS)' -ldflags ' $(LDFLAGS)' ./cmd/singlemount-runner
101+
82102# ------------------------------------------------------------------------------
83- # test
84-
85- .PHONY : test
86- test : build
87- test : TESTFLAGS += -race -v
88- test : test-style
89- test : test-unit
90-
91- .PHONY : test-unit
92- test-unit :
93- @echo
94- @echo " ==> Running unit tests <=="
95- go test $(GOFLAGS ) -run $(TESTS ) $(PKG ) $(TESTFLAGS )
96-
97- .PHONY : test-coverage
98- test-coverage :
99- @echo
100- @echo " ==> Running unit tests with coverage <=="
101- @ ./scripts/coverage.sh
102-
103- .PHONY : test-style
104- test-style :
105- golangci-lint run
106- @scripts/validate-license.sh
107-
108- .PHONY : coverage
109- coverage :
110- @scripts/coverage.sh
111-
112- .PHONY : format
113- format : $(GOIMPORTS )
114- go list -f ' {{.Dir}}' ./... | xargs $(GOIMPORTS ) -w
103+ # image
104+
105+ image : build
106+ $(IMAGE_BUILD_TOOL ) build \
107+ --build-arg RELEASE=$(IMAGE_TAG ) \
108+ --build-arg GITREF=$(GIT_COMMIT ) \
109+ --build-arg CREATED=$(shell date -u +"% Y-% m-% dT% H:% M:% SZ") \
110+ -t registry.cern.ch/kubernetes/cvmfs-csi:$(IMAGE_TAG ) \
111+ -f ./deployments/docker/Dockerfile .
115112
116113# ------------------------------------------------------------------------------
117114# dependencies
118115
119116$(GOX ) :
120117 go install github.com/mitchellh/
[email protected] 121118
122- $(GOIMPORTS ) :
123- go install golang.org/x/tools/cmd/
[email protected] 124-
125- # ------------------------------------------------------------------------------
126- # release
127-
128- .PHONY : build-cross
129- build-cross : LDFLAGS += -extldflags "-static"
130- build-cross : $(GOX )
131- CGO_ENABLED=0 $(GOX ) -parallel=3 -output=" _dist/{{.OS}}-{{.Arch}}/csi-cvmfsplugin_{{.OS}}_{{.Arch}}" -osarch=' $(TARGETS)' $(GOFLAGS ) -tags ' $(TAGS)' -ldflags ' $(LDFLAGS)' ./cmd/csi-cvmfsplugin
132- CGO_ENABLED=0 $(GOX ) -parallel=3 -output=" _dist/{{.OS}}-{{.Arch}}/automount-runner_{{.OS}}_{{.Arch}}" -osarch=' $(TARGETS)' $(GOFLAGS ) -tags ' $(TAGS)' -ldflags ' $(LDFLAGS)' ./cmd/automount-runner
133- CGO_ENABLED=0 $(GOX ) -parallel=3 -output=" _dist/{{.OS}}-{{.Arch}}/singlemount-runner_{{.OS}}_{{.Arch}}" -osarch=' $(TARGETS)' $(GOFLAGS ) -tags ' $(TAGS)' -ldflags ' $(LDFLAGS)' ./cmd/singlemount-runner
134-
135- .PHONY : dist
136- dist :
137- ( \
138- cd _dist && \
139- $(DIST_DIRS ) cp ../LICENSE {} \; && \
140- $(DIST_DIRS ) cp ../README.md {} \; && \
141- $(DIST_DIRS ) tar -zcf cvmfs-csi-${VERSION} -{}.tar.gz {} \; && \
142- $(DIST_DIRS ) zip -r cvmfs-csi-${VERSION} -{}.zip {} \; \
143- )
144-
145- .PHONY : checksum
146- checksum :
147- for f in _dist/* .{gz,zip} ; do \
148- shasum -a 256 " $$ {f}" | awk ' {print $$1}' > " $$ {f}.sha256" ; \
149- done
150-
151- .PHONY : changelog
152- changelog :
153- @./scripts/changelog.sh
154-
155- # ------------------------------------------------------------------------------
156- # docker
157- DOCKER_TAG =${GIT_BRANCH}
158- ifneq ($(GIT_TAG ) ,)
159- DOCKER_TAG = ${GIT_TAG}
160- endif
161-
162- .PHONY : image
163- image : build-cross
164- mkdir -p bin
165- cp _dist/linux-amd64/csi-cvmfsplugin_linux_amd64 bin/csi-cvmfsplugin
166- cp _dist/linux-amd64/automount-runner_linux_amd64 bin/automount-runner
167- cp _dist/linux-amd64/singlemount-runner_linux_amd64 bin/singlemount-runner
168- sudo $(IMAGE_BUILD_TOOL ) build -t cvmfs-csi:${DOCKER_TAG} -f deployments/docker/Dockerfile .
169-
170119# ------------------------------------------------------------------------------
171120.PHONY : clean
172121clean :
173- @rm -rf $(BINDIR ) ./_dist
122+ @rm -rf $(BINDIR )
174123
175124.PHONY : info
176125info :
0 commit comments