-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
79 lines (67 loc) · 2.84 KB
/
Makefile
File metadata and controls
79 lines (67 loc) · 2.84 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
# Extract CRD JSON schemas with Datree's CRD Extractor into mozcloud/crdSchemas
# Uses your current kubectl context and should be run against multiple clusters to collect all MozCloud CRDs
# These CRDs are used by our helm CI to validate manifests /w Kubeconform
#
# Usage:
# make update_crds # clone/update CRDs-catalog and run extractor, copy extracted CRDs into crdSchemas
# make clean # remove cloned CRDs-catalog cache
SHELL := /usr/bin/env bash
.ONESHELL:
.SHELLFLAGS := -eu -o pipefail -c
CRDS_CATALOG_REPO ?= https://github.com/datreeio/CRDs-catalog.git
CRDS_CATALOG_REF ?= 808cecce07adf438cde06b413250be548981321c # Pinning to a specific commit
CRDS_CATALOG_DIR ?= .cache/CRDs-catalog
MOZCLOUD_DIR ?= ../mozcloud
MOZCLOUD_SCHEMAS_DIR ?= $(MOZCLOUD_DIR)/crdSchemas
TARGET_DIR ?= $(MOZCLOUD_DIR)/.cache/crdSchemas
# Requirements
GIT ?= git
KUBECTL ?= kubectl
PYTHON3 ?= python3
.PHONY: clone checkout_catalog extract copy clean update_crds help
.DEFAULT_GOAL := help
help:
@echo "Targets:"
@echo " make update_crds - Clone/update CRDs-catalog and copy extracted CRDs into $(MOZCLOUD_SCHEMAS_DIR)"
@echo " make clean - Remove local CRDs-catalog clone"
@echo ""
@echo "Requirements:"
@echo " - python3 (required by CRD extractor script)"
@echo " - kubectl (uses current kube context)"
@echo " - git"
@echo ""
clone:
@if [ ! -d "$(CRDS_CATALOG_DIR)/.git" ]; then \
echo "Cloning $(CRDS_CATALOG_REPO) into $(CRDS_CATALOG_DIR)"; \
$(GIT) clone "$(CRDS_CATALOG_REPO)" "$(CRDS_CATALOG_DIR)"; \
fi
@cd "$(CRDS_CATALOG_DIR)"; \
echo "Checking out pinned ref $(CRDS_CATALOG_REF)"; \
$(GIT) fetch --depth 1 origin $(CRDS_CATALOG_REF); \
$(GIT) checkout -q $(CRDS_CATALOG_REF)
checkout_catalog:
@echo "Resetting CRDs-catalog to pinned ref $(CRDS_CATALOG_REF)"
@cd "$(CRDS_CATALOG_DIR)"; \
$(GIT) fetch --depth 1 origin $(CRDS_CATALOG_REF); \
$(GIT) checkout -q $(CRDS_CATALOG_REF); \
$(GIT) reset --hard $(CRDS_CATALOG_REF)
extract:
@echo "Running CRD extractor with current kubectl context: $$($(KUBECTL) config current-context)"
@test -f "$(CRDS_CATALOG_DIR)/Utilities/crd-extractor.sh" || { \
echo "Extractor not found at: $(CRDS_CATALOG_DIR)/Utilities/crd-extractor.sh"; \
echo "Contents of $(CRDS_CATALOG_DIR):"; ls -la "$(CRDS_CATALOG_DIR)"; \
echo "Contents of $(CRDS_CATALOG_DIR)/Utilities (if present):"; ls -la "$(CRDS_CATALOG_DIR)/Utilities" || true; \
exit 1; \
}
@chmod +x "$(CRDS_CATALOG_DIR)/Utilities/crd-extractor.sh"
@mkdir -p "$(TARGET_DIR)"
@echo "Writing directly to: $(TARGET_DIR)"
@OUTPUT_DIR="$(abspath $(TARGET_DIR))" \
"$(CRDS_CATALOG_DIR)/Utilities/crd-extractor.sh"
copy:
@echo "Copying CRDs from $(TARGET_DIR) into $(MOZCLOUD_SCHEMAS_DIR)"
@cp -r $(TARGET_DIR)/ $(MOZCLOUD_SCHEMAS_DIR)
update_crds: clone extract copy
clean:
@rm -rf "$(CRDS_CATALOG_DIR)"
@echo "Removed $(CRDS_CATALOG_DIR)"