18
18
19
19
BINDIR := $(CURDIR ) /bin
20
20
DIST_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
23
24
24
25
GOPATH = $(shell go env GOPATH)
25
26
GOX = $(GOPATH ) /bin/gox
@@ -61,14 +62,26 @@ endif
61
62
LDFLAGS += -X ${BASE_PKG}/internal/version.commit=${GIT_COMMIT}
62
63
LDFLAGS += -X ${BASE_PKG}/internal/version.treestate=${GIT_DIRTY}
63
64
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
+
64
77
.PHONY : all
65
78
all : build
66
79
67
80
# ------------------------------------------------------------------------------
68
81
# build
69
82
70
- .PHONY : build
71
- build : $( BINDIR ) /csi-cvmfsplugin $( BINDIR ) /automount-runner $( BINDIR ) /singlemount-runner
83
+ build : TARGETS = $( LOCAL_TARGET )
84
+ build : build-cross
72
85
73
86
$(BINDIR ) /csi-cvmfsplugin : $(SRC )
74
87
go build $(GOFLAGS ) -tags ' $(TAGS)' -ldflags ' $(LDFLAGS)' -o $@ ./cmd/csi-cvmfsplugin
@@ -79,98 +92,34 @@ $(BINDIR)/automount-runner: $(SRC)
79
92
$(BINDIR ) /singlemount-runner : $(SRC )
80
93
go build $(GOFLAGS ) -tags ' $(TAGS)' -ldflags ' $(LDFLAGS)' -o $@ ./cmd/singlemount-runner
81
94
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
+
82
102
# ------------------------------------------------------------------------------
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 .
115
112
116
113
# ------------------------------------------------------------------------------
117
114
# dependencies
118
115
119
116
$(GOX ) :
120
117
go install github.com/mitchellh/
[email protected]
121
118
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
-
170
119
# ------------------------------------------------------------------------------
171
120
.PHONY : clean
172
121
clean :
173
- @rm -rf $(BINDIR ) ./_dist
122
+ @rm -rf $(BINDIR )
174
123
175
124
.PHONY : info
176
125
info :
0 commit comments