forked from open-edge-platform/geti
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile.shared
More file actions
144 lines (121 loc) · 4.79 KB
/
Makefile.shared
File metadata and controls
144 lines (121 loc) · 4.79 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
# Copyright (C) 2022-2025 Intel Corporation
# LIMITED EDGE SOFTWARE DISTRIBUTION LICENSE
CWD = $(abspath $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
.PHONY: build-image-default list-image-default publish-image publish-chart-default lint-chart-default list-umbrella-chart-default
###
# version
###
PRODUCT_VERSION ?= $(shell cat $(CWD)/VERSION)
TAG ?= $(PRODUCT_VERSION)-$(shell git rev-parse --short HEAD)
###
# registries
###
REGISTRY ?= localhost:5000/open-edge-platform
IMAGES_REGISTRY ?= ${REGISTRY}/geti
CHARTS_REGISTRY ?= ${REGISTRY}/geti/helm
###
# base images versions
###
BASE_OTE_V2_IMAGE_TAG ?= 12.8.1.1.30
###
# component
###
TARGET_DIR := ./.build
CHART_TARGET_DIR := ${TARGET_DIR}/chart
CHART_SRC_DIR := ./chart
EXTRA_CHART_SRC_DIR ?=
###
# docker extra arguments
###
DOCKER_BUILD_CONTEXT ?=
DOCKER_EXTRA_ARGS := \
$(if $(REGISTRY),--build-arg REGISTRY=$(REGISTRY)) \
$(if $(http_proxy),--build-arg http_proxy=$(http_proxy)) \
$(if $(https_proxy),--build-arg https_proxy=$(https_proxy)) \
$(if $(no_proxy),--build-arg no_proxy=$(no_proxy)) \
$(if $(HTTP_PROXY),--build-arg HTTP_PROXY=$(HTTP_PROXY)) \
$(if $(HTTPS_PROXY),--build-arg HTTPS_PROXY=$(HTTPS_PROXY)) \
$(if $(NO_PROXY),--build-arg NO_PROXY=$(NO_PROXY))
DOCKER_IMAGE_DESCRIPTION ?= Geti component: $(COMPONENT_NAME)
###
# docker builder extra arguments
###
DOCKER_PROXY := \
$(if $(http_proxy),-e http_proxy=$(http_proxy)) \
$(if $(https_proxy),-e https_proxy=$(https_proxy)) \
$(if $(no_proxy),-e no_proxy=$(no_proxy)) \
$(if $(HTTP_PROXY),-e HTTP_PROXY=$(HTTP_PROXY)) \
$(if $(HTTPS_PROXY),-e HTTPS_PROXY=$(HTTPS_PROXY)) \
$(if $(NO_PROXY),-e NO_PROXY=$(NO_PROXY))
###
# A space-separated list of build directories to be removed by the 'clean' target
###
CLEAN_DIRS :=
###
# docker images
###
build-image-default:
@echo "Building docker image for component: ${COMPONENT_NAME}"
@docker build \
${DOCKER_EXTRA_ARGS} \
${DOCKER_BUILD_CONTEXT} \
--label "org.opencontainers.image.description=${DOCKER_IMAGE_DESCRIPTION}" \
-t ${IMAGES_REGISTRY}/${COMPONENT_NAME}:${TAG} \
-f ./Dockerfile .
list-image-default:
@echo ${IMAGES_REGISTRY}/${COMPONENT_NAME}:${TAG}
publish-image:
@echo "Pushing docker image for component: ${COMPONENT_NAME}"
@docker push ${IMAGES_REGISTRY}/${COMPONENT_NAME}:${TAG}
###
# helm charts
###
build-chart-default:
mkdir -p ${CHART_TARGET_DIR}
cp -r ${CHART_SRC_DIR}/* ${CHART_TARGET_DIR}/
@if [ -n "$(EXTRA_CHART_SRC_DIR)" ]; then \
cp $(EXTRA_CHART_SRC_DIR) ${CHART_TARGET_DIR}/; \
fi
TAG=$(TAG) COMPONENT_NAME=$(COMPONENT_NAME) envsubst < ${CHART_TARGET_DIR}/Chart.yaml.template > ${CHART_TARGET_DIR}/Chart.yaml
rm "${CHART_TARGET_DIR}/Chart.yaml.template"
helm dependency update ${CHART_TARGET_DIR}
helm package ${CHART_TARGET_DIR} --version ${TAG} --destination ${TARGET_DIR}
list-umbrella-chart-default:
@echo ${CHARTS_REGISTRY}/${COMPONENT_NAME}:${TAG}
lint-chart-default: build-chart
@echo "Running chart linter for component: ${COMPONENT_NAME}"
helm lint --with-subcharts ${CHART_TARGET_DIR}
publish-chart-default: build-chart
@echo "Publishing chart for component: ${COMPONENT_NAME}"
helm push ${TARGET_DIR}/${COMPONENT_NAME}-${TAG}.tgz oci://${CHARTS_REGISTRY}
clean:
@echo "Removing: $(TARGET_DIR)"
rm -rf $(TARGET_DIR)
@if [ -n "$(CLEAN_DIRS)" ]; then \
echo "Removing: $(CLEAN_DIRS)"; \
rm -rf $(CLEAN_DIRS); \
fi
# To suppress warnings when overriding Makefile targets, declare the abstract targets as <name>-default
%: %-default
@ true
# Remove first goal from MAKECMDGOALS when using "make builder <goals_list>"
ifeq (builder,$(firstword $(MAKECMDGOALS)))
BUILDER_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
$(eval $(BUILDER_ARGS):;@:)
ROOT_DIR=$(shell git rev-parse --show-toplevel)
RELATIVE_PATH=$(shell python3 -c "import os.path; print(os.path.relpath('$(CURDIR)', '$(ROOT_DIR)'))")
endif
# Run builder container when do "make builder -C <directory> <args>"
builder-default:
@if [ -n "$(BUILDER_IMAGE)" ]; then \
echo "Running make -C $(RELATIVE_PATH) $(BUILDER_ARGS) in the container: $(BUILDER_IMAGE)"; \
docker run --rm -u $(shell id -u):$(shell getent group docker | cut -d: -f3) \
-v "$(ROOT_DIR):/app" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.docker/config.json:/home/bulider/.docker/config.json \
-w "/app" ${DOCKER_PROXY} ${BUILDER_IMAGE} make -C $(RELATIVE_PATH) $(BUILDER_ARGS); \
else \
echo "Running make $(BUILDER_ARGS) locally"; \
make $(BUILDER_ARGS); \
fi
@exit 0