|
1 |
| -JSONNET = https://github.com/google/jsonnet/releases/download/v0.17.0/jsonnet-bin-v0.17.0-linux.tar.gz |
| 1 | +JB = https://github.com/jsonnet-bundler/jsonnet-bundler/releases/latest/download/jb-linux-amd64 |
2 | 2 | BINDIR = bin
|
3 | 3 | TEMPLATESDIR = templates
|
4 | 4 | OUTPUTDIR = rendered
|
5 | 5 | ALLDIRS = $(BINDIR) $(OUTPUTDIR)
|
6 | 6 | SYNCER_IMG_TAG ?= quay.io/cloud-bulldozer/dittybopper-syncer:latest
|
7 | 7 | PLATFORM = linux/amd64,linux/arm64,linux/ppc64le,linux/s390x
|
8 | 8 |
|
9 |
| -# Get all templates at $(TEMPLATESDIR) |
10 |
| -TEMPLATES := $(wildcard $(TEMPLATESDIR)/**/*.jsonnet) |
| 9 | +ifeq ($(filter v2,$(MAKECMDGOALS)),v2) |
| 10 | + # Set variables and instructions for v2 |
| 11 | + TEMPLATES := $(wildcard $(TEMPLATESDIR)/**/*-v2.jsonnet) |
| 12 | + LIBRARY_PATH := $(TEMPLATESDIR)/vendor |
| 13 | + JSONNET := https://github.com/cloud-bulldozer/utils/releases/download/v0.0.0/jsonnet-bin-v0.20.0-linux.tar.gz |
| 14 | +else |
| 15 | + # Get all templates at $(TEMPLATESDIR) |
| 16 | + TEMPLATES := $(filter-out %-v2.jsonnet, $(wildcard $(TEMPLATESDIR)/**/*.jsonnet)) |
| 17 | + LIBRARY_PATH := $(TEMPLATESDIR)/grafonnet-lib |
| 18 | + JSONNET := https://github.com/google/jsonnet/releases/download/v0.17.0/jsonnet-bin-v0.17.0-linux.tar.gz |
| 19 | +endif |
11 | 20 |
|
12 | 21 | # Replace $(TEMPLATESDIR)/*.jsonnet by $(OUTPUTDIR)/*.json
|
13 | 22 | outputs := $(patsubst $(TEMPLATESDIR)/%.jsonnet, $(OUTPUTDIR)/%.json, $(TEMPLATES))
|
14 | 23 |
|
15 | 24 | all: deps format build
|
16 | 25 |
|
17 |
| -deps: $(ALLDIRS) $(TEMPLATESDIR)/grafonnet-lib $(BINDIR)/jsonnet |
| 26 | +deps: $(ALLDIRS) $(BINDIR)/jsonnet $(LIBRARY_PATH) |
18 | 27 |
|
19 | 28 | $(ALLDIRS):
|
20 | 29 | mkdir -p $(ALLDIRS)
|
21 | 30 |
|
22 | 31 | format: deps
|
23 | 32 | $(BINDIR)/jsonnetfmt -i $(TEMPLATES)
|
24 | 33 |
|
25 |
| -build: deps $(TEMPLATESDIR)/grafonnet-lib $(outputs) |
| 34 | +build: deps $(LIBRARY_PATH) $(outputs) |
26 | 35 |
|
27 | 36 | clean:
|
28 | 37 | @echo "Cleaning up"
|
29 |
| - rm -rf $(ALLDIRS) $(TEMPLATESDIR)/grafonnet-lib |
30 |
| - |
31 |
| -$(TEMPLATESDIR)/grafonnet-lib: |
32 |
| - git clone --depth 1 https://github.com/grafana/grafonnet-lib.git $(TEMPLATESDIR)/grafonnet-lib |
| 38 | + rm -rf $(ALLDIRS) $(TEMPLATESDIR)/vendor $(TEMPLATESDIR)/grafonnet-lib |
33 | 39 |
|
34 | 40 | $(BINDIR)/jsonnet:
|
35 | 41 | @echo "Downloading jsonnet binary"
|
36 | 42 | curl -s -L $(JSONNET) | tar xz -C $(BINDIR)
|
| 43 | + @echo "Downloading jb binary" |
| 44 | + curl -s -L $(JB) -o $(BINDIR)/jb |
| 45 | + chmod +x $(BINDIR)/jb |
| 46 | + |
| 47 | +$(TEMPLATESDIR)/grafonnet-lib: |
| 48 | + git clone --depth 1 https://github.com/grafana/grafonnet-lib.git $(TEMPLATESDIR)/grafonnet-lib |
| 49 | + |
| 50 | +$(TEMPLATESDIR)/vendor: |
| 51 | + @echo "Downloading vendor files" |
| 52 | + cd $(TEMPLATESDIR) && ../$(BINDIR)/jb install && cd ../ |
37 | 53 |
|
38 | 54 | # Build each template and output to $(OUTPUTDIR)
|
39 | 55 | $(OUTPUTDIR)/%.json: $(TEMPLATESDIR)/%.jsonnet
|
40 | 56 | @echo "Building template $<"
|
41 | 57 | mkdir -p $(dir $@)
|
42 |
| - $(BINDIR)/jsonnet $< > $@ |
| 58 | + $(BINDIR)/jsonnet -J ./$(LIBRARY_PATH) $< > $@ |
| 59 | + |
| 60 | +v2: all |
| 61 | + @echo "Rendered the v2 dashboards with latest grafonnet library" |
43 | 62 |
|
44 | 63 | build-syncer-image: build
|
45 | 64 | podman build --platform=${PLATFORM} -f Dockerfile --manifest=${SYNCER_IMG_TAG} .
|
|
0 commit comments