-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
93 lines (70 loc) · 2.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
# Exclude vendor and dot directories, but do include the `.gitlab` directory
VERIFY_PATH_SELECTOR := \( -not \( -path "*/vendor/*" -o -path "*/.*/*" \) -o -path "*/.gitlab/*" \)
JSONNET_FMT_FLAGS := --string-style s -n 2
JSONNET_FILES = $(shell find . \( -name "*.jsonnet" -o -name "*.libsonnet" \) -type f $(VERIFY_PATH_SELECTOR) )
SHELL_FMT_FLAGS := -i 2 -ci
SHELL_FILES = $(shell find . -type f \( -perm -u=x -o -name "*.sh" \) $(VERIFY_PATH_SELECTOR) -print0|xargs -0 file -n |grep 'Bourne-Again'|cut -d: -f1)
YAML_FILES = $(shell find . \( -name "*.yml" -o -name "*.yaml" \) -type f $(VERIFY_PATH_SELECTOR) )
AMTOOL = $(shell which amtool || echo "/alertmanager/amtool")
AMTOOL_PATH=$(dir $(AMTOOL))
JSONET_COMMAND = $(shell which jsonnetfmt || (which jsonnet && echo " fmt"))
PROMTOOL_COMMAND = $(shell which promtool || echo "/prometheus/promtool")
SHELLCHECK_FLAGS := -e SC1090,SC1091
.PHONY: all
all: verify
.PHONY: verify
verify: verify-shellcheck verify-fmt
.PHONY: verify-fmt
verify-fmt:
if ! $(JSONET_COMMAND) $(JSONNET_FMT_FLAGS) --test $(JSONNET_FILES) ; then $(JSONET_COMMAND) $(JSONNET_FMT_FLAGS) -i $(JSONNET_FILES); git --no-pager diff; exit 1; fi
shfmt $(SHELL_FMT_FLAGS) -l -d $(SHELL_FILES)
.PHONY: verify-shellcheck
verify-shellcheck:
shellcheck $(SHELLCHECK_FLAGS) $(SHELL_FILES)
.PHONY: fmt
fmt: jsonnet-fmt shell-fmt
git diff --exit-code
.PHONY: jsonnet-fmt
jsonnet-fmt:
$(JSONET_COMMAND) $(JSONNET_FMT_FLAGS) -i $(JSONNET_FILES)
.PHONY: shell-fmt
shell-fmt:
shfmt $(SHELL_FMT_FLAGS) -w $(SHELL_FILES)
.PHONY: generate
generate:
rm -rf rules/autogenerated-* thanos-rules/autogenerated-*
./scripts/generate-jsonnet-rules.sh
./scripts/generate-docs
./scripts/generate-gitlab-dashboards.sh
alertmanager/alertmanager.yml: alertmanager/alertmanager.jsonnet
./alertmanager/generate.sh
test-alertmanager: alertmanager/alertmanager.yml
$(AMTOOL) check-config alertmanager/alertmanager.yml
PATH=$(AMTOOL_PATH):$(PATH) alertmanager/test-routing.sh alertmanager/alertmanager.yml
.PHONY: test
test: validate-service-mappings validate-prom-rules validate-kibana-urls validate-alerts validate-yaml jsonnet-bundle test-jsonnet
.PHONY: validate-service-mappings
validate-service-mappings:
./scripts/validate-service-mappings
.PHONY: validate-prom-rules
validate-prom-rules:
# TODO: Add rules/*/*.yml when valid rules are created.
$(PROMTOOL_COMMAND) check rules rules/*.yml thanos-rules/*.yml
# Prometheus config checks are stricter than rules checks, so use a fake config to check this too
$(PROMTOOL_COMMAND) check config scripts/prometheus.yml
.PHONY: validate-kibana-urls
validate-kibana-urls:
./scripts/validate_kibana_urls
.PHONY: validate-alerts
validate-alerts:
./scripts/validate-alerts
.PHONY:validate-yaml
validate-yaml:
if ! $$(command -v yaml-lint); then echo "Please install yaml-lint with 'gem install -N yaml-lint'"; exit 1; fi
yaml-lint $(YAML_FILES)
.PHONY: test-jsonnet
test-jsonnet:
./scripts/jsonnet_test.sh
.PHONY: jsonnet-bundle
jsonnet-bundle:
./scripts/bundler.sh