| 
									
										
										
										
											2018-04-19 17:07:10 +08:00
										 |  |  | # Copyright 2018 The Prometheus Authors
 | 
					
						
							| 
									
										
										
										
											2012-11-27 03:11:34 +08:00
										 |  |  | # Licensed under the Apache License, Version 2.0 (the "License");
 | 
					
						
							|  |  |  | # you may not use this file except in compliance with the License.
 | 
					
						
							|  |  |  | # You may obtain a copy of the License at
 | 
					
						
							| 
									
										
										
										
											2013-02-07 18:38:01 +08:00
										 |  |  | #
 | 
					
						
							| 
									
										
										
										
											2012-11-27 03:11:34 +08:00
										 |  |  | # http://www.apache.org/licenses/LICENSE-2.0
 | 
					
						
							| 
									
										
										
										
											2013-02-07 18:38:01 +08:00
										 |  |  | #
 | 
					
						
							| 
									
										
										
										
											2012-11-27 03:11:34 +08:00
										 |  |  | # Unless required by applicable law or agreed to in writing, software
 | 
					
						
							|  |  |  | # distributed under the License is distributed on an "AS IS" BASIS,
 | 
					
						
							|  |  |  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
					
						
							|  |  |  | # See the License for the specific language governing permissions and
 | 
					
						
							|  |  |  | # limitations under the License.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-15 20:27:00 +08:00
										 |  |  | # Needs to be defined before including Makefile.common to auto-generate targets
 | 
					
						
							| 
									
										
										
										
											2020-03-29 21:11:22 +08:00
										 |  |  | DOCKER_ARCHS ?= amd64 armv7 arm64 ppc64le s390x | 
					
						
							| 
									
										
										
										
											2019-04-15 20:27:00 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-10 22:27:23 +08:00
										 |  |  | UI_PATH = web/ui | 
					
						
							| 
									
										
										
										
											2021-09-10 23:38:53 +08:00
										 |  |  | UI_NODE_MODULES_PATH = $(UI_PATH)/node_modules | 
					
						
							| 
									
										
										
										
											2019-10-17 20:38:09 +08:00
										 |  |  | REACT_APP_NPM_LICENSES_TARBALL = "npm_licenses.tar.bz2" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-24 02:35:50 +08:00
										 |  |  | PROMTOOL = ./promtool | 
					
						
							| 
									
										
										
										
											2019-08-13 16:34:14 +08:00
										 |  |  | TSDB_BENCHMARK_NUM_METRICS ?= 1000 | 
					
						
							| 
									
										
										
										
											2020-07-24 02:35:50 +08:00
										 |  |  | TSDB_BENCHMARK_DATASET ?= ./tsdb/testdata/20kseries.json | 
					
						
							|  |  |  | TSDB_BENCHMARK_OUTPUT_DIR ?= ./benchout | 
					
						
							| 
									
										
										
										
											2019-08-13 16:34:14 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-12 17:43:34 +08:00
										 |  |  | GOLANGCI_LINT_OPTS ?= --timeout 4m | 
					
						
							| 
									
										
										
										
											2021-02-10 21:02:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-19 17:07:10 +08:00
										 |  |  | include Makefile.common | 
					
						
							| 
									
										
										
										
											2015-11-11 22:44:15 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-19 17:07:10 +08:00
										 |  |  | DOCKER_IMAGE_NAME       ?= prometheus | 
					
						
							| 
									
										
										
										
											2015-10-10 06:49:08 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-05 17:49:22 +08:00
										 |  |  | .PHONY: update-npm-deps | 
					
						
							|  |  |  | update-npm-deps: | 
					
						
							|  |  |  | 	@echo ">> updating npm dependencies" | 
					
						
							|  |  |  | 	./scripts/npm-deps.sh "minor" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PHONY: upgrade-npm-deps | 
					
						
							|  |  |  | upgrade-npm-deps: | 
					
						
							|  |  |  | 	@echo ">> upgrading npm dependencies" | 
					
						
							|  |  |  | 	./scripts/npm-deps.sh "latest" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-10 22:27:23 +08:00
										 |  |  | .PHONY: ui-install | 
					
						
							|  |  |  | ui-install: | 
					
						
							|  |  |  | 	cd $(UI_PATH) && npm install | 
					
						
							| 
									
										
										
										
											2019-10-17 20:38:09 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-10 22:27:23 +08:00
										 |  |  | .PHONY: ui-build | 
					
						
							|  |  |  | ui-build: | 
					
						
							|  |  |  | 	cd $(UI_PATH) && npm run build | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PHONY: ui-build-module | 
					
						
							|  |  |  | ui-build-module: | 
					
						
							|  |  |  | 	cd $(UI_PATH) && npm run build:module | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PHONY: ui-test | 
					
						
							|  |  |  | ui-test: | 
					
						
							| 
									
										
										
										
											2022-04-05 17:49:22 +08:00
										 |  |  | 	cd $(UI_PATH) && CI=true npm run test | 
					
						
							| 
									
										
										
										
											2021-09-10 22:27:23 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | .PHONY: ui-lint | 
					
						
							|  |  |  | ui-lint: | 
					
						
							|  |  |  | 	cd $(UI_PATH) && npm run lint | 
					
						
							| 
									
										
										
										
											2019-10-17 20:38:09 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-11 23:51:28 +08:00
										 |  |  | .PHONY: assets | 
					
						
							| 
									
										
										
										
											2021-09-10 22:27:23 +08:00
										 |  |  | assets: ui-install ui-build | 
					
						
							| 
									
										
										
										
											2022-03-09 17:21:31 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | .PHONY: assets-compress | 
					
						
							|  |  |  | assets-compress: | 
					
						
							|  |  |  | 	@echo '>> compressing assets' | 
					
						
							|  |  |  | 	scripts/compress_assets.sh | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-17 20:38:09 +08:00
										 |  |  | .PHONY: test | 
					
						
							| 
									
										
										
										
											2021-08-10 22:50:09 +08:00
										 |  |  | # If we only want to only test go code we have to change the test target
 | 
					
						
							|  |  |  | # which is called by all.
 | 
					
						
							|  |  |  | ifeq ($(GO_ONLY),1) | 
					
						
							|  |  |  | test: common-test | 
					
						
							|  |  |  | else | 
					
						
							| 
									
										
										
										
											2021-09-10 22:27:23 +08:00
										 |  |  | test: common-test ui-build-module ui-test ui-lint | 
					
						
							| 
									
										
										
										
											2021-08-10 22:50:09 +08:00
										 |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-17 20:38:09 +08:00
										 |  |  | .PHONY: npm_licenses | 
					
						
							| 
									
										
										
										
											2021-09-10 22:27:23 +08:00
										 |  |  | npm_licenses: ui-install | 
					
						
							| 
									
										
										
										
											2019-10-17 20:38:09 +08:00
										 |  |  | 	@echo ">> bundling npm licenses" | 
					
						
							|  |  |  | 	rm -f $(REACT_APP_NPM_LICENSES_TARBALL) | 
					
						
							| 
									
										
										
										
											2021-09-10 23:38:53 +08:00
										 |  |  | 	find $(UI_NODE_MODULES_PATH) -iname "license*" | tar cfj $(REACT_APP_NPM_LICENSES_TARBALL) --transform 's/^/npm_licenses\//' --files-from=- | 
					
						
							| 
									
										
										
										
											2019-10-17 20:38:09 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | .PHONY: tarball | 
					
						
							|  |  |  | tarball: npm_licenses common-tarball | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PHONY: docker | 
					
						
							|  |  |  | docker: npm_licenses common-docker | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-29 20:44:39 +08:00
										 |  |  | plugins/plugins.go: plugins.yml plugins/generate.go | 
					
						
							|  |  |  | 	@echo ">> creating plugins list" | 
					
						
							|  |  |  | 	$(GO) generate -tags plugins ./plugins | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PHONY: plugins | 
					
						
							|  |  |  | plugins: plugins/plugins.go | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-17 20:38:09 +08:00
										 |  |  | .PHONY: build | 
					
						
							| 
									
										
										
										
											2022-03-29 20:44:39 +08:00
										 |  |  | build: assets assets-compress common-build plugins | 
					
						
							| 
									
										
										
										
											2019-08-13 16:34:14 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-15 15:33:38 +08:00
										 |  |  | .PHONY: bench_tsdb | 
					
						
							| 
									
										
										
										
											2020-07-24 02:35:50 +08:00
										 |  |  | bench_tsdb: $(PROMU) | 
					
						
							|  |  |  | 	@echo ">> building promtool" | 
					
						
							|  |  |  | 	@GO111MODULE=$(GO111MODULE) $(PROMU) build --prefix $(PREFIX) promtool | 
					
						
							| 
									
										
										
										
											2019-08-13 16:34:14 +08:00
										 |  |  | 	@echo ">> running benchmark, writing result to $(TSDB_BENCHMARK_OUTPUT_DIR)" | 
					
						
							| 
									
										
										
										
											2020-07-24 02:35:50 +08:00
										 |  |  | 	@$(PROMTOOL) tsdb bench write --metrics=$(TSDB_BENCHMARK_NUM_METRICS) --out=$(TSDB_BENCHMARK_OUTPUT_DIR) $(TSDB_BENCHMARK_DATASET) | 
					
						
							|  |  |  | 	@$(GO) tool pprof -svg $(PROMTOOL) $(TSDB_BENCHMARK_OUTPUT_DIR)/cpu.prof > $(TSDB_BENCHMARK_OUTPUT_DIR)/cpuprof.svg | 
					
						
							|  |  |  | 	@$(GO) tool pprof --inuse_space -svg $(PROMTOOL) $(TSDB_BENCHMARK_OUTPUT_DIR)/mem.prof > $(TSDB_BENCHMARK_OUTPUT_DIR)/memprof.inuse.svg | 
					
						
							|  |  |  | 	@$(GO) tool pprof --alloc_space -svg $(PROMTOOL) $(TSDB_BENCHMARK_OUTPUT_DIR)/mem.prof > $(TSDB_BENCHMARK_OUTPUT_DIR)/memprof.alloc.svg | 
					
						
							|  |  |  | 	@$(GO) tool pprof -svg $(PROMTOOL) $(TSDB_BENCHMARK_OUTPUT_DIR)/block.prof > $(TSDB_BENCHMARK_OUTPUT_DIR)/blockprof.svg | 
					
						
							|  |  |  | 	@$(GO) tool pprof -svg $(PROMTOOL) $(TSDB_BENCHMARK_OUTPUT_DIR)/mutex.prof > $(TSDB_BENCHMARK_OUTPUT_DIR)/mutexprof.svg |