-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathMakefile
More file actions
158 lines (123 loc) · 4.34 KB
/
Copy pathMakefile
File metadata and controls
158 lines (123 loc) · 4.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# This project applies to ppc64le only
ARCH ?= ppc64le
REGISTRY ?= quay.io/powercloud
REPOSITORY ?= power-dra-driver
TAG ?= v0.1.1
CONTAINER_RUNTIME ?= $(shell command -v podman 2> /dev/null || echo docker)
GOLANG_VERSION ?= 1.24.0
DRIVER_NAME := power-dra-driver
MODULE := github.com/IBM/$(DRIVER_NAME)
REGISTRY ?= quay.io/powercloud/power-dra-driver
VERSION ?= v0.1.1
GIT_COMMIT ?= $(shell git describe --match="" --dirty --long --always --abbrev=40 2> /dev/null || echo "")
# Kind configuration
ifeq ($(ARCH),ppc64le)
KIND_IMAGE := quay.io/powercloud/kind-node:v1.34.1
else
KIND_IMAGE := docker.io/kindest/node:v1.34.1
endif
KIND_CLUSTER_NAME:="power-dra-driver-cluster"
KIND_CLUSTER_CONFIG_PATH:="hack/kind-cluster-config.yaml"
KIND_EXPERIMENTAL_PROVIDER:="podman"
########################################################################
# Go Targets
.PHONY: build
build: fmt vet
GOOS=linux GOARCH=$(ARCH) go build -ldflags "-s -w -X $(MODULE)/internal/info.gitCommit=$(GIT_COMMIT) -X $(MODULE)/internal/info.version=$(VERSION)" -o bin/power-dra-kubeletplugin cmd/power-dra-kubeletplugin/*.go
CONTROLLER_GEN := $(shell which controller-gen 2>/dev/null || echo "$$(go env GOPATH)/bin/controller-gen")
.PHONY: controller-gen
controller-gen:
@if [ ! -x "$(CONTROLLER_GEN)" ]; then \
echo "Installing controller-gen..."; \
go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.14.0; \
fi
.PHONY: generate
generate: controller-gen
$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."
.PHONY: fmt
fmt:
go fmt ./...
.PHONY: vet
vet:
go vet ./...
.PHONY: clean
clean:
rm -f ./bin/power-dra-driver
rm -rf vendor
BUILDIMAGE_TAG ?= golang$(GOLANG_VERSION)
BUILDIMAGE ?= $(IMAGE_NAME)-build:$(BUILDIMAGE_TAG)
CMDS := $(patsubst ./cmd/%/,%,$(sort $(dir $(wildcard ./cmd/*/))))
CMD_TARGETS := $(patsubst %,cmd-%, $(CMDS))
GOOS ?= linux
GOARCH ?= ppc64le
ifeq ($(VERSION),)
CLI_VERSION = $(LIB_VERSION)$(if $(LIB_TAG),-$(LIB_TAG))
else
CLI_VERSION = $(VERSION)
endif
CLI_VERSION_PACKAGE = $(MODULE)/internal/info
CMDS := $(patsubst ./cmd/%/,%,$(sort $(dir $(wildcard ./cmd/*/))))
CMD_TARGETS := $(patsubst %,cmd-%, $(CMDS))
.PHONY: binaries
binaries: cmds
ifneq ($(PREFIX),)
cmd-%: COMMAND_BUILD_OPTIONS = -o $(PREFIX)/$(*)
endif
.PHONY: cmds
cmds: $(CMD_TARGETS)
$(CMD_TARGETS): cmd-%:
CGO_LDFLAGS_ALLOW='-Wl,--unresolved-symbols=ignore-in-object-files' \
CC=$(CC) CGO_ENABLED=1 GOOS=$(GOOS) GOARCH=$(GOARCH) \
go build -ldflags "-s -w -X $(CLI_VERSION_PACKAGE).gitCommit=$(GIT_COMMIT) -X $(CLI_VERSION_PACKAGE).version=$(VERSION)" $(COMMAND_BUILD_OPTIONS) $(MODULE)/cmd/$(*)
########################################################################
# Testing Targets
.PHONY: dev-install-kind
dev-install-kind:
mkdir -p dev-cache
GOBIN=$(PWD)/dev-cache/ go install sigs.k8s.io/kind@v0.29.0
.PHONY: dev-setup
dev-setup: dev-install-kind
KIND_EXPERIMENTAL_PROVIDER=$(KIND_EXPERIMENTAL_PROVIDER) dev-cache/kind create cluster \
--image $(KIND_IMAGE) \
--name $(KIND_CLUSTER_NAME) \
--config $(KIND_CLUSTER_CONFIG_PATH) \
--wait 5m
.PHONY: dev-teardown
dev-teardown:
dev-cache/kind delete cluster \
--name $(KIND_CLUSTER_NAME)
########################################################################
# Configuration for IBM Development only
.PHONY: dev-config-linux
dev-config-linux: dev-stop-linux-named dev-stop-linux-haproxy dev-config-linux-resolv
.PHONY: dev-stop-linux-named
dev-stop-linux-named:
ifneq ("inactive", "$(shell systemctl is-failed named)")
@systemctl stop named
endif
.PHONY: dev-stop-linux-haproxy
dev-stop-linux-haproxy:
ifneq ("inactive","$(shell systemctl is-failed haproxy)")
@systemctl stop haproxy
endif
.PHONY: dev-config-linux-resolv
dev-config-linux-resolv:
ifneq ("", "$(shell grep 10.0.10.4 /etc/resolv.conf)")
@echo "nameserver 10.0.10.4" >> /etc/resolv.conf
endif
########################################################################
# Container Targets
.PHONY: image-build
image-build: image-build
$(CONTAINER_RUNTIME) buildx build \
-t $(REGISTRY)/$(REPOSITORY):$(TAG) \
--platform linux/$(ARCH) -f Dockerfile .
.PHONY: image-push
image-push:
$(info push Container image...)
$(CONTAINER_RUNTIME) push $(REGISTRY)/$(REPOSITORY):$(TAG)
.PHONY: image-ci
image-ci: build
$(CONTAINER_RUNTIME) buildx build \
-t $(REGISTRY)/$(REPOSITORY):$(TAG) \
--platform linux/$(ARCH) -f build/Containerfile-build .