-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathMakefile
123 lines (107 loc) · 3.98 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
# this is the server version for cluster-in-a-box
SERVER_VERSION=8.7.14-4c3ad9de46
CLIENT_VERSION=1.0.5
TOOLBOX_VERSION=1.17.18
STUDIO_VERSION=4.1.0
KUBE_CLIENT_VERSION=v1.11.6
REVISION=$(shell git describe --dirty=-dirty --always --long --abbrev=40 --match='')
VARIANT ?= alma
BASE_IMAGE_REGISTRY ?= gcr.io/internal_freya
BASE_IMAGE ?= almalinux:8.6
ifeq (${VARIANT},redhat)
BASE_IMAGE=registry.access.redhat.com/ubi8/ubi:8.6-903
else
ifneq (${BASE_IMAGE_REGISTRY},)
BASE_IMAGE:=${BASE_IMAGE_REGISTRY}/${BASE_IMAGE}
endif
endif
CIAB_TAG=${VARIANT}-${SERVER_VERSION}-${STUDIO_VERSION}-${TOOLBOX_VERSION}
TOOLS_TAG=${VARIANT}-${KUBE_CLIENT_VERSION}-${TOOLBOX_VERSION}-${REVISION}
.PHONY: test
test:
# cluster-in-a-box (ciab)
${MAKE} build-ciab
${MAKE} test-ciab
${MAKE} test-ciab-no-license
.PHONY: build-base
build-base:
docker build \
--build-arg BASE_IMAGE=${BASE_IMAGE} \
--build-arg RELEASE_CHANNEL=production \
-t s2-base:${VARIANT} \
-f Dockerfile-base .
.PHONY: build-base-dev
build-base-dev:
docker build \
--build-arg BASE_IMAGE=${BASE_IMAGE} \
--build-arg RELEASE_CHANNEL=dev \
-t s2-base-dev:${VARIANT} \
-f Dockerfile-base .
.PHONY: build-tools
build-tools: build-base
docker build \
--build-arg BASE_IMAGE=s2-base:${VARIANT} \
--build-arg TOOLBOX_VERSION=${TOOLBOX_VERSION} \
--build-arg KUBE_CLIENT_VERSION=${KUBE_CLIENT_VERSION} \
-t singlestore/tools:${TOOLS_TAG} \
-f Dockerfile-tools .
docker tag singlestore/tools:${TOOLS_TAG} singlestore/tools:latest
docker tag singlestore/tools:${TOOLS_TAG} memsql/tools:${TOOLS_TAG}
docker tag singlestore/tools:${TOOLS_TAG} memsql/tools:latest
.PHONY: build-ciab
build-ciab: build-base
docker build \
--build-arg BASE_IMAGE=s2-base:${VARIANT} \
--build-arg SERVER_PACKAGE=singlestoredb-server \
--build-arg SERVER_VERSION=${SERVER_VERSION} \
--build-arg CLIENT_VERSION=${CLIENT_VERSION} \
--build-arg STUDIO_VERSION=${STUDIO_VERSION} \
--build-arg TOOLBOX_VERSION=${TOOLBOX_VERSION} \
--build-arg JRE_PACKAGES="java-21-openjdk" \
-t singlestore/cluster-in-a-box:${CIAB_TAG} \
-f Dockerfile-ciab .
docker tag singlestore/cluster-in-a-box:${CIAB_TAG} singlestore/cluster-in-a-box:latest
docker tag singlestore/cluster-in-a-box:${CIAB_TAG} memsql/cluster-in-a-box:${CIAB_TAG}
docker tag memsql/cluster-in-a-box:${CIAB_TAG} memsql/cluster-in-a-box:latest
.PHONY: build-ciab-dev
build-ciab-dev: build-base-dev
docker build \
--build-arg BASE_IMAGE=s2-base-dev:${VARIANT} \
--build-arg SERVER_PACKAGE=memsql-server \
--build-arg SERVER_VERSION=${SERVER_VERSION} \
--build-arg CLIENT_VERSION=${CLIENT_VERSION} \
--build-arg STUDIO_VERSION=${STUDIO_VERSION} \
--build-arg TOOLBOX_VERSION=${TOOLBOX_VERSION} \
--build-arg JRE_PACKAGES="java-21-openjdk" \
-t singlestore/cluster-in-a-box-dev:${CIAB_TAG} \
-f Dockerfile-ciab .
docker tag singlestore/cluster-in-a-box-dev:${CIAB_TAG} singlestore/cluster-in-a-box-dev:latest
docker tag singlestore/cluster-in-a-box-dev:${CIAB_TAG} memsql/cluster-in-a-box-dev:${CIAB_TAG}
docker tag memsql/cluster-in-a-box-dev:${CIAB_TAG} memsql/cluster-in-a-box-dev:latest
.PHONY: test-ciab
test-ciab: test-destroy
IMAGE=singlestore/cluster-in-a-box:${CIAB_TAG} ./test/ciab ${LICENSE_KEY}
.PHONY: test-ciab-no-license
test-ciab-no-license: test-destroy
IMAGE=singlestore/cluster-in-a-box:${CIAB_TAG} ./test/ciab
.PHONY: publish-ciab
publish-ciab:
docker push singlestore/cluster-in-a-box:${CIAB_TAG}
docker push singlestore/cluster-in-a-box:latest
docker push memsql/cluster-in-a-box:${CIAB_TAG}
docker push memsql/cluster-in-a-box:latest
.PHONY: test-destroy
test-destroy:
@-docker rm -f memsql-node-ma memsql-node-leaf memsql-ciab
@-docker volume rm memsql-node-ma memsql-node-leaf memsql-ciab
.PHONY: publish-tools
publish-tools:
docker push singlestore/tools:${TOOLS_TAG}
docker push singlestore/tools:latest
docker push memsql/tools:${TOOLS_TAG}
docker push memsql/tools:latest
.PHONY: requires-license
requires-license:
ifndef LICENSE_KEY
$(error LICENSE_KEY is required)
endif