-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMakefile
152 lines (126 loc) · 5.11 KB
/
Makefile
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
include common.mk
.PHONY: all
all: build
.PHONY: build
build: connector/$(CONNECTOR_FILENAME) plugin/$(PLUGIN_FILENAME)
connector/$(CONNECTOR_FILENAME):
cd connector && \
CGO_ENABLED=0 go build -ldflags \
"-X main.VERSION=$(VERSION) -X main.COMMITID=$(COMMIT_ID) -X main.BUILDTIME=$(BUILD_TIME)" \
-o $(CONNECTOR_FILENAME)
plugin/$(PLUGIN_FILENAME):
cd plugin && \
CGO_ENABLED=0 go build -ldflags \
"-X main.VERSION=$(VERSION) -X main.COMMITID=$(COMMIT_ID) -X main.BUILDTIME=$(BUILD_TIME)" \
-o $(PLUGIN_FILENAME)
.PHONY: clean
clean:
rm -f connector/$(CONNECTOR_FILENAME) \
plugin/$(PLUGIN_FILENAME)
rm -f k8s/kodo.yaml k8s/kodofs.yaml
rm -f docker/rclone docker/kodofs
k8s/kodo.yaml: k8s/kodo/kodo-plugin.yaml k8s/kodo/kodo-rbac.yaml k8s/kodo/kodo-provisioner.yaml common.mk
@cat k8s/kodo/kodo-plugin.yaml \
| sed 's/$${DOCKERHUB_ORGANIZATION}/$(subst /,\/,$(DOCKERHUB_ORGANIZATION))/g' \
| sed 's/$${DOCKERHUB_IMAGE}/$(DOCKERHUB_IMAGE)/g' \
| sed 's/$${DOCKERHUB_TAG}/$(DOCKERHUB_TAG)/g' \
>> k8s/kodo.yaml
@echo --- >> k8s/kodo.yaml
@cat k8s/kodo/kodo-rbac.yaml >> k8s/kodo.yaml
@echo --- >> k8s/kodo.yaml
@cat k8s/kodo/kodo-provisioner.yaml >> k8s/kodo.yaml
k8s/kodofs.yaml: k8s/kodofs/kodofs-plugin.yaml k8s/kodofs/kodofs-rbac.yaml k8s/kodofs/kodofs-provisioner.yaml common.mk
@cat k8s/kodofs/kodofs-plugin.yaml \
| sed 's/$${DOCKERHUB_ORGANIZATION}/$(subst /,\/,$(DOCKERHUB_ORGANIZATION))/g' \
| sed 's/$${DOCKERHUB_IMAGE}/$(DOCKERHUB_IMAGE)/g' \
| sed 's/$${DOCKERHUB_TAG}/$(DOCKERHUB_TAG)/g' \
>> k8s/kodofs.yaml
@echo --- >> k8s/kodofs.yaml
@cat k8s/kodofs/kodofs-rbac.yaml >> k8s/kodofs.yaml
@echo --- >> k8s/kodofs.yaml
@cat k8s/kodofs/kodofs-provisioner.yaml >> k8s/kodofs.yaml
.PHONY: combine_csi_driver_yaml
combine_csi_driver_yaml: k8s/kodo.yaml k8s/kodofs.yaml
.PHONY: install_kodo_csi_driver
install_kodo_csi_driver: k8s/kodo.yaml
kubectl apply -f $<
.PHONY: install_kodofs_csi_driver
install_kodofs_csi_driver: k8s/kodofs.yaml
kubectl apply -f $<
.PHONY: delete_kodo_csi_driver
delete_kodo_csi_driver: k8s/kodo.yaml
kubectl delete -f $<
.PHONY: delete_kodofs_csi_driver
delete_kodofs_csi_driver: k8s/kodofs.yaml
kubectl delete -f $<
.PHONY: install_plugins
install_plugins: install_kodo_csi_driver install_kodofs_csi_driver
.PHONY: delete_plugins
delete_plugins: delete_kodo_csi_driver delete_kodofs_csi_driver
.PHONY: docker/rclone
docker/rclone:
curl -LJO# https://github.com/rclone/rclone/releases/download/$(RCLONE_VERSION)/rclone-$(RCLONE_VERSION)-linux-amd64.zip
unzip rclone-$(RCLONE_VERSION)-linux-amd64.zip
mv rclone-$(RCLONE_VERSION)-linux-amd64/rclone docker/rclone
chmod +x docker/rclone
rm rclone-$(RCLONE_VERSION)-linux-amd64.zip
rm -rf rclone-$(RCLONE_VERSION)-linux-amd64
# 下载kodofs二进制文件,由于kodofs是私有仓库,所以需要携带 Github API Token 才能下载
.PHONY: docker/kodofs
docker/kodofs:
@if [ -z $$GITHUB_API_TOKEN ];\
then \
echo "Please configure environment GITHUB_API_TOKEN"; \
exit 1; \
fi
cd scripts && bash get_gh_asset.sh qbox kodofs $(KODOFS_VERSION) kodofs
mv scripts/kodofs docker/kodofs
chmod +x docker/kodofs
.PHONY: build_image
build_image: docker/rclone docker/kodofs
docker build --pull \
-t="$(DOCKERHUB_ORGANIZATION)/$(DOCKERHUB_IMAGE):$(VERSION)" \
-f Dockerfile .
.PHONY: push_image
push_image: build_image
docker push "$(DOCKERHUB_ORGANIZATION)/$(DOCKERHUB_IMAGE):$(VERSION)"
.PHONY: install_kodo_static_example
install_kodo_static_example: k8s/kodo.yaml
kubectl apply -f k8s/kodo.yaml
kubectl apply -f examples/kodo/static-provisioning/
kubectl apply -f examples/kodo/deploy.yaml
.PHONY: delete_kodo_static_example
delete_kodo_static_example:
kubectl delete -f examples/kodo/deploy.yaml || true
kubectl delete -f examples/kodo/static-provisioning/ || true
kubectl delete -f k8s/kodo.yaml || true
.PHONY: install_kodo_dynamic_example
install_kodo_dynamic_example: k8s/kodo.yaml
kubectl apply -f k8s/kodo.yaml
kubectl apply -f examples/kodo/dynamic-provisioning/
kubectl apply -f examples/kodo/deploy.yaml
.PHONY: delete_kodo_dynamic_example
delete_kodo_dynamic_example:
kubectl delete -f examples/kodo/deploy.yaml || true
kubectl delete -f examples/kodo/dynamic-provisioning/ || true
kubectl delete -f k8s/kodo.yaml || true
.PHONY: install_kodofs_static_example
install_kodofs_static_example: k8s/kodofs.yaml
kubectl apply -f k8s/kodofs.yaml
kubectl apply -f examples/kodofs/static-provisioning/
kubectl apply -f examples/kodofs/deploy.yaml
.PHONY: delete_kodofs_static_example
delete_kodofs_static_example:
kubectl delete -f examples/kodofs/deploy.yaml || true
kubectl delete -f examples/kodofs/static-provisioning/ || true
kubectl delete -f k8s/kodofs.yaml || true
.PHONY: install_kodofs_dynamic_example
install_kodofs_dynamic_example: k8s/kodofs.yaml
kubectl apply -f k8s/kodofs.yaml
kubectl apply -f examples/kodofs/dynamic-provisioning/
kubectl apply -f examples/kodofs/deploy.yaml
.PHONY: delete_kodofs_dynamic_example
delete_kodofs_dynamic_example:
kubectl delete -f examples/kodofs/deploy.yaml || true
kubectl delete -f examples/kodofs/dynamic-provisioning/ || true
kubectl delete -f k8s/kodofs.yaml || true