| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | ## This is a self-documented Makefile. For usage information, run `make help`:
 | 
					
						
							|  |  |  | ##
 | 
					
						
							|  |  |  | ## For more information, refer to https://suva.sh/posts/well-documented-makefiles/
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-25 21:11:22 +08:00
										 |  |  | WIRE_TAGS = "oss" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-07 18:32:18 +08:00
										 |  |  | -include local/Makefile | 
					
						
							| 
									
										
										
										
											2025-05-21 17:22:24 +08:00
										 |  |  | include .citools/Variables.mk | 
					
						
							| 
									
										
										
										
											2018-05-07 18:32:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-29 16:01:21 +08:00
										 |  |  | GO = go | 
					
						
							| 
									
										
										
										
											2025-08-07 16:27:01 +08:00
										 |  |  | GO_VERSION = 1.24.6 | 
					
						
							| 
									
										
										
										
											2025-09-18 20:07:55 +08:00
										 |  |  | GO_LINT_FILES ?= $(shell ./scripts/go-workspace/golangci-lint-includes.sh) | 
					
						
							| 
									
										
										
										
											2024-08-09 22:25:27 +08:00
										 |  |  | GO_TEST_FILES ?= $(shell ./scripts/go-workspace/test-includes.sh) | 
					
						
							| 
									
										
										
										
											2019-07-23 18:12:33 +08:00
										 |  |  | SH_FILES ?= $(shell find ./scripts -name *.sh) | 
					
						
							| 
									
										
										
										
											2024-06-04 22:02:09 +08:00
										 |  |  | GO_RACE  := $(shell [ -n "$(GO_RACE)" -o -e ".go-race-enabled-locally" ] && echo 1 ) | 
					
						
							| 
									
										
										
										
											2024-05-31 23:30:51 +08:00
										 |  |  | GO_RACE_FLAG := $(if $(GO_RACE),-race) | 
					
						
							| 
									
										
										
										
											2022-04-02 07:01:05 +08:00
										 |  |  | GO_BUILD_FLAGS += $(if $(GO_BUILD_DEV),-dev) | 
					
						
							|  |  |  | GO_BUILD_FLAGS += $(if $(GO_BUILD_TAGS),-build-tags=$(GO_BUILD_TAGS)) | 
					
						
							| 
									
										
										
										
											2024-05-31 23:30:51 +08:00
										 |  |  | GO_BUILD_FLAGS += $(GO_RACE_FLAG) | 
					
						
							| 
									
										
										
										
											2025-03-17 17:47:27 +08:00
										 |  |  | GO_TEST_FLAGS += $(if $(GO_BUILD_TAGS),-tags=$(GO_BUILD_TAGS)) | 
					
						
							| 
									
										
										
										
											2024-10-10 04:32:23 +08:00
										 |  |  | GIT_BASE = remotes/origin/main | 
					
						
							| 
									
										
										
										
											2019-03-28 00:53:49 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-08 20:47:33 +08:00
										 |  |  | # GNU xargs has flag -r, and BSD xargs (e.g. MacOS) has that behaviour by default
 | 
					
						
							|  |  |  | XARGSR = $(shell xargs --version 2>&1 | grep -q GNU && echo xargs -r || echo xargs) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-13 19:08:19 +08:00
										 |  |  | # Test sharding to replicate CI behaviour locally.
 | 
					
						
							|  |  |  | SHARD ?= 1 | 
					
						
							|  |  |  | SHARDS ?= 1 | 
					
						
							| 
									
										
										
										
											2023-02-08 09:34:05 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-13 19:08:19 +08:00
										 |  |  | targets := $(shell echo '$(sources)' | tr "," " ") | 
					
						
							| 
									
										
										
										
											2023-04-18 00:33:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: all | 
					
						
							| 
									
										
										
										
											2016-04-26 00:44:26 +08:00
										 |  |  | all: deps build | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | ##@ Dependencies
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: deps-go | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | deps-go: ## Install backend dependencies.
 | 
					
						
							| 
									
										
										
										
											2024-05-31 23:30:51 +08:00
										 |  |  | 	$(GO) run $(GO_RACE_FLAG) build.go setup | 
					
						
							| 
									
										
										
										
											2016-10-11 14:51:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: deps-js | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | deps-js: node_modules ## Install frontend dependencies.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: deps | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | deps: deps-js ## Install all dependencies.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: node_modules | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | node_modules: package.json yarn.lock ## Install node modules.
 | 
					
						
							|  |  |  | 	@echo "install frontend dependencies" | 
					
						
							| 
									
										
										
										
											2021-10-08 22:19:10 +08:00
										 |  |  | 	YARN_ENABLE_PROGRESS_BARS=false yarn install --immutable | 
					
						
							| 
									
										
										
										
											2016-04-26 00:44:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-08 20:38:43 +08:00
										 |  |  | ##@ Swagger
 | 
					
						
							|  |  |  | SPEC_TARGET = public/api-spec.json | 
					
						
							| 
									
										
										
										
											2023-09-26 03:34:57 +08:00
										 |  |  | ENTERPRISE_SPEC_TARGET = public/api-enterprise-spec.json | 
					
						
							|  |  |  | MERGED_SPEC_TARGET = public/api-merged.json | 
					
						
							| 
									
										
										
										
											2022-05-24 03:08:27 +08:00
										 |  |  | NGALERT_SPEC_TARGET = pkg/services/ngalert/api/tooling/api.json | 
					
						
							| 
									
										
										
										
											2022-02-08 20:38:43 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | $(NGALERT_SPEC_TARGET): | 
					
						
							| 
									
										
										
										
											2022-05-24 03:08:27 +08:00
										 |  |  | 	+$(MAKE) -C pkg/services/ngalert/api/tooling api.json | 
					
						
							| 
									
										
										
										
											2022-02-08 20:38:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-20 17:09:00 +08:00
										 |  |  | $(MERGED_SPEC_TARGET): swagger-oss-gen swagger-enterprise-gen $(NGALERT_SPEC_TARGET)  ## Merge generated and ngalert API specs
 | 
					
						
							| 
									
										
										
										
											2022-07-20 21:09:42 +08:00
										 |  |  | 	# known conflicts DsPermissionType, AddApiKeyCommand, Json, Duration (identical models referenced by both specs) | 
					
						
							| 
									
										
										
										
											2025-05-21 17:22:24 +08:00
										 |  |  | 	GODEBUG=gotypesalias=0 $(swagger) mixin -q $(SPEC_TARGET) $(ENTERPRISE_SPEC_TARGET) $(NGALERT_SPEC_TARGET) --ignore-conflicts -o $(MERGED_SPEC_TARGET) | 
					
						
							| 
									
										
										
										
											2022-02-08 20:38:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: swagger-oss-gen | 
					
						
							| 
									
										
										
										
											2025-03-20 17:09:00 +08:00
										 |  |  | swagger-oss-gen: ## Generate API Swagger specification
 | 
					
						
							| 
									
										
										
										
											2023-09-26 03:34:57 +08:00
										 |  |  | 	@echo "re-generating swagger for OSS" | 
					
						
							|  |  |  | 	rm -f $(SPEC_TARGET) | 
					
						
							| 
									
										
										
										
											2025-05-21 17:22:24 +08:00
										 |  |  | 	SWAGGER_GENERATE_EXTENSION=false GODEBUG=gotypesalias=0 $(swagger) generate spec -q -m -w pkg/server -o $(SPEC_TARGET) \
 | 
					
						
							| 
									
										
										
										
											2022-02-08 20:38:43 +08:00
										 |  |  | 	-x "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" \
 | 
					
						
							| 
									
										
										
										
											2024-06-13 17:41:35 +08:00
										 |  |  | 	-x "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" \
 | 
					
						
							| 
									
										
										
										
											2022-02-08 20:38:43 +08:00
										 |  |  | 	-x "github.com/prometheus/alertmanager" \
 | 
					
						
							| 
									
										
										
										
											2025-09-10 18:12:23 +08:00
										 |  |  | 	-x "github.com/docker/docker" \
 | 
					
						
							| 
									
										
										
										
											2022-10-14 21:51:05 +08:00
										 |  |  | 	-i pkg/api/swagger_tags.json \
 | 
					
						
							| 
									
										
										
										
											2023-09-26 03:34:57 +08:00
										 |  |  | 	--exclude-tag=alpha \
 | 
					
						
							|  |  |  | 	--exclude-tag=enterprise | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # this file only exists if enterprise is enabled
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: swagger-enterprise-gen | 
					
						
							| 
									
										
										
										
											2023-09-26 03:34:57 +08:00
										 |  |  | ENTERPRISE_EXT_FILE = pkg/extensions/ext.go | 
					
						
							|  |  |  | ifeq ("$(wildcard $(ENTERPRISE_EXT_FILE))","") ## if enterprise is not enabled
 | 
					
						
							|  |  |  | swagger-enterprise-gen: | 
					
						
							|  |  |  | 	@echo "skipping re-generating swagger for enterprise: not enabled" | 
					
						
							|  |  |  | else | 
					
						
							| 
									
										
										
										
											2025-03-20 17:09:00 +08:00
										 |  |  | swagger-enterprise-gen: ## Generate API Swagger specification
 | 
					
						
							| 
									
										
										
										
											2023-09-26 03:34:57 +08:00
										 |  |  | 	@echo "re-generating swagger for enterprise" | 
					
						
							|  |  |  | 	rm -f $(ENTERPRISE_SPEC_TARGET) | 
					
						
							| 
									
										
										
										
											2025-05-21 17:22:24 +08:00
										 |  |  | 	SWAGGER_GENERATE_EXTENSION=false GODEBUG=gotypesalias=0 $(swagger) generate spec -q -m -w pkg/server -o $(ENTERPRISE_SPEC_TARGET) \
 | 
					
						
							| 
									
										
										
										
											2023-09-26 03:34:57 +08:00
										 |  |  | 	-x "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" \
 | 
					
						
							| 
									
										
										
										
											2024-06-13 17:41:35 +08:00
										 |  |  | 	-x "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" \
 | 
					
						
							| 
									
										
										
										
											2023-09-26 03:34:57 +08:00
										 |  |  | 	-x "github.com/prometheus/alertmanager" \
 | 
					
						
							| 
									
										
										
										
											2025-09-10 18:12:23 +08:00
										 |  |  | 	-x "github.com/docker/docker" \
 | 
					
						
							| 
									
										
										
										
											2023-09-26 03:34:57 +08:00
										 |  |  | 	-i pkg/api/swagger_tags.json \
 | 
					
						
							| 
									
										
										
										
											2025-06-30 22:39:21 +08:00
										 |  |  | 	-t enterprise \
 | 
					
						
							| 
									
										
										
										
											2023-09-26 03:34:57 +08:00
										 |  |  | 	--exclude-tag=alpha \
 | 
					
						
							|  |  |  | 	--include-tag=enterprise | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2022-02-08 20:38:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: swagger-gen | 
					
						
							| 
									
										
										
										
											2023-09-26 03:34:57 +08:00
										 |  |  | swagger-gen: gen-go $(MERGED_SPEC_TARGET) swagger-validate | 
					
						
							| 
									
										
										
										
											2022-02-08 20:38:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: swagger-validate | 
					
						
							| 
									
										
										
										
											2025-03-20 17:09:00 +08:00
										 |  |  | swagger-validate: $(MERGED_SPEC_TARGET) # Validate API spec
 | 
					
						
							| 
									
										
										
										
											2025-05-21 17:22:24 +08:00
										 |  |  | 	GODEBUG=gotypesalias=0 $(swagger) validate --skip-warnings $(<) | 
					
						
							| 
									
										
										
										
											2022-06-14 18:35:22 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: swagger-clean | 
					
						
							| 
									
										
										
										
											2023-09-26 03:34:57 +08:00
										 |  |  | swagger-clean: | 
					
						
							| 
									
										
										
										
											2023-01-31 19:00:45 +08:00
										 |  |  | 	rm -f $(SPEC_TARGET) $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET) | 
					
						
							| 
									
										
										
										
											2022-02-08 20:38:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-17 17:56:52 +08:00
										 |  |  | .PHONY: cleanup-old-git-hooks | 
					
						
							|  |  |  | cleanup-old-git-hooks: | 
					
						
							|  |  |  | 	./scripts/cleanup-husky.sh | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PHONY: lefthook-install | 
					
						
							| 
									
										
										
										
											2025-03-17 16:48:41 +08:00
										 |  |  | lefthook-install: cleanup-old-git-hooks # install lefthook for pre-commit hooks
 | 
					
						
							| 
									
										
										
										
											2025-05-21 17:22:24 +08:00
										 |  |  | 	$(lefthook) install -f | 
					
						
							| 
									
										
										
										
											2023-08-17 17:56:52 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | .PHONY: lefthook-uninstall | 
					
						
							| 
									
										
										
										
											2025-03-17 16:48:41 +08:00
										 |  |  | lefthook-uninstall: | 
					
						
							| 
									
										
										
										
											2025-05-21 17:22:24 +08:00
										 |  |  | 	$(lefthook) uninstall | 
					
						
							| 
									
										
										
										
											2023-08-17 17:56:52 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-05 00:51:12 +08:00
										 |  |  | ##@ OpenAPI 3
 | 
					
						
							|  |  |  | OAPI_SPEC_TARGET = public/openapi3.json | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: openapi3-gen | 
					
						
							| 
									
										
										
										
											2023-09-26 03:34:57 +08:00
										 |  |  | openapi3-gen: swagger-gen ## Generates OpenApi 3 specs from the Swagger 2 already generated
 | 
					
						
							| 
									
										
										
										
											2024-05-31 23:30:51 +08:00
										 |  |  | 	$(GO) run $(GO_RACE_FLAG) scripts/openapi3/openapi3conv.go $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET) | 
					
						
							| 
									
										
										
										
											2016-10-11 14:51:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-18 23:25:27 +08:00
										 |  |  | ##@ Internationalisation
 | 
					
						
							|  |  |  | .PHONY: i18n-extract-enterprise | 
					
						
							|  |  |  | ENTERPRISE_FE_EXT_FILE = public/app/extensions/index.ts | 
					
						
							|  |  |  | ifeq ("$(wildcard $(ENTERPRISE_FE_EXT_FILE))","") ## if enterprise is not enabled
 | 
					
						
							|  |  |  | i18n-extract-enterprise: | 
					
						
							|  |  |  | 	@echo "Skipping i18n extract for Enterprise: not enabled" | 
					
						
							|  |  |  | else | 
					
						
							| 
									
										
										
										
											2024-05-08 21:01:17 +08:00
										 |  |  | i18n-extract-enterprise: | 
					
						
							| 
									
										
										
										
											2024-04-18 23:25:27 +08:00
										 |  |  | 	@echo "Extracting i18n strings for Enterprise" | 
					
						
							|  |  |  | 	yarn run i18next --config public/locales/i18next-parser-enterprise.config.cjs | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PHONY: i18n-extract | 
					
						
							|  |  |  | i18n-extract: i18n-extract-enterprise | 
					
						
							|  |  |  | 	@echo "Extracting i18n strings for OSS" | 
					
						
							|  |  |  | 	yarn run i18next --config public/locales/i18next-parser.config.cjs | 
					
						
							| 
									
										
										
										
											2025-06-12 17:52:04 +08:00
										 |  |  | 	@echo "Extracting i18n strings for packages" | 
					
						
							|  |  |  | 	yarn run packages:i18n-extract | 
					
						
							| 
									
										
										
										
											2025-05-15 21:31:49 +08:00
										 |  |  | 	@echo "Extracting i18n strings for plugins" | 
					
						
							|  |  |  | 	yarn run plugin:i18n-extract | 
					
						
							| 
									
										
										
										
											2024-04-18 23:25:27 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-05 00:51:12 +08:00
										 |  |  | ##@ Building
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: gen-cue | 
					
						
							| 
									
										
										
										
											2022-05-27 09:21:37 +08:00
										 |  |  | gen-cue: ## Do all CUE/Thema code generation
 | 
					
						
							|  |  |  | 	@echo "generate code from .cue files" | 
					
						
							| 
									
										
											  
											
												Reconcile coremodels, entities, objects under new kind framework (#56492)
* Update thema to latest
* Deal with s/Library/*Runtime/
* Commit new, working results of codegen
* We like pointers now
* Always take runtime arg for NewBase()
* Sketchy handwavy pass at entity meta framework
* Little nibbles
* Update pkg/framework/coremodel/entityframework.cue
Co-authored-by: Artur Wierzbicki <wierzbicki.artur.94@gmail.com>
* Move file into new framework location
* Introduce loaders, Go code
* Complete rename to kind
* Flesh out framework, add svg/dashboard examples
* Cruft removal
* Remove generated kind go files from gitignore
* Refine maturity concept, add SlotKind
* Update embed and go deps
* Export PrefixWithGrafanaCUE
* Make the loader actually work, holy crap
* Many small tweaks to type.cue
* Add Apache 2 licensing exceptions for kinds
* Add new kinds dir, start of generator
* Roll back to earlier oapi-codegen
* Introduce new grafana-specific CUE loaders
* Introduce new tidy code generators framework
* Catch up kind framework with tinkering
* Add slices for the generators
* Add write/verify step to main generator
* Many renames
* Split up kind framework cue files
* Use kind.Decl within generated kinds
* Create kind.SomeDecl wrapper type to cache lineages
* Better names again
* Get one generated implemented, hopefully
* Copy dashboard schema into new kind.cue
* Small fixes to make the initial gen work
* Put svg kind in its new home
* Add generated Go dashboard type
* More renames and cleanups
* Add base kind registry and generator
* Stop blacklisting *_gen.go files
This is not the Go best practice, anyway. All we actually want to ignore
for enterprise is generated wire files.
* Change codegen output directories
pkg/kind -> pkg/kinds
pkg/registry/kindreg -> pkg/registry/corekind
* Rename pkg/framework/kind to pkg/kindsys
* Add core structured kind generator
* Add plural and machine names to kind spec
* Copy playlist over to kind system
* Consolidate kindsys files
* Add raw kind generator
* Update CODEOWNERS for kind framework
* Touch up comments a bit
* More docs tweaks
* Remove generated types to reduce noise for review
* Split each generator into its own file
* Rename Slot kind to Composable kind
* Add handwavy types for customkind loading
* Guard against init calls to framework loader
* First pass at doc on extending the kind system
* Improve attribute example in docs
* Fix wire imports
* Add basic TS types generator
* Fix composable kind category def
* No need for a separate file with generate directive
* Catch dashboard schema up
* Rename generator types to something saner and generic
* Make version configurable in ts/go generators
* Add CommonMeta to ease property access
* Add kindsys prop indicating whether lineage is group
* Put all kind categories back in a single file
* Finish with kindsys group props
* Refactor maturity progression per discussion
- Replace "committed" with "merged"
- All kindcats can use all maturity levels, at least for now
* Convert ts veneer index generator to modular system
* Move over to new jennywrites framework
* Strip down old coremodel generator
* Use public version of jennywrites
* Pull latest thema
* Commit generated Go types
* Add header injection postprocessor
* Move sdboyer/jennywrites to grafana/codejen
* Tweak header output
* Remove dashboard and playlist coremodels
* Fix up backend dashboards devenv test
* Fix TS import patterns to new gen filename
* Update internal imports, remove coremodel registry
* Fix compilation errors, wire generation
* Export and replace the prefix dropper
* More Go struct and field name changes
* Last name fixes, hopefully
* Fix lint errors
* Last lint error
Co-authored-by: Artur Wierzbicki <wierzbicki.artur.94@gmail.com>
											
										 
											2022-11-11 04:36:40 +08:00
										 |  |  | 	go generate ./kinds/gen.go | 
					
						
							| 
									
										
										
										
											2022-12-02 15:22:28 +08:00
										 |  |  | 	go generate ./public/app/plugins/gen.go | 
					
						
							| 
									
										
										
										
											2025-04-24 01:54:35 +08:00
										 |  |  | 	@echo "// This file is managed by Grafana - DO NOT EDIT MANUALLY" > apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue | 
					
						
							|  |  |  | 	@echo "// Source: kinds/dashboard/dashboard_kind.cue" >> apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue | 
					
						
							|  |  |  | 	@echo "// To sync changes, run: make gen-cue" >> apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue | 
					
						
							|  |  |  | 	@echo "" >> apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue | 
					
						
							|  |  |  | 	@cat kinds/dashboard/dashboard_kind.cue >> apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue | 
					
						
							|  |  |  | 	@cp apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue apps/dashboard/pkg/apis/dashboard/v0alpha1/dashboard_kind.cue | 
					
						
							| 
									
										
										
										
											2025-04-12 00:52:46 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-27 09:21:37 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-19 20:01:40 +08:00
										 |  |  | .PHONY: gen-cuev2 | 
					
						
							|  |  |  | gen-cuev2: ## Do all CUE code generation
 | 
					
						
							|  |  |  | 	@echo "generate code from .cue files (v2)" | 
					
						
							| 
									
										
										
										
											2025-01-16 20:18:47 +08:00
										 |  |  | 	@$(MAKE) -C ./kindsv2 all | 
					
						
							| 
									
										
										
										
											2024-11-19 20:01:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-26 16:49:52 +08:00
										 |  |  | # TODO (@radiohead): uncomment once we want to start generating code for all apps.
 | 
					
						
							|  |  |  | # For now, we want to use an explicit list of apps to generate code for.
 | 
					
						
							|  |  |  | #
 | 
					
						
							| 
									
										
										
										
											2025-07-22 01:32:15 +08:00
										 |  |  | #APPS_DIRS=$(shell find ./apps -type d -exec test -f "{}/Makefile" \; -print | sort)
 | 
					
						
							| 
									
										
										
										
											2025-04-18 22:14:52 +08:00
										 |  |  | APPS_DIRS := ./apps/dashboard ./apps/folder ./apps/alerting/notifications | 
					
						
							| 
									
										
										
										
											2025-03-26 16:49:52 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | .PHONY: gen-apps | 
					
						
							| 
									
										
										
										
											2025-09-24 20:37:57 +08:00
										 |  |  | gen-apps: do-gen-apps gofmt ## Generate code for Grafana App SDK apps and run gofmt
 | 
					
						
							|  |  |  | 	@if [ -n "$$CODEGEN_VERIFY" ]; then \
 | 
					
						
							|  |  |  | 		echo "Verifying generated code is up to date..."; \
 | 
					
						
							|  |  |  | 		if ! git diff --quiet; then \
 | 
					
						
							|  |  |  | 			echo "Error: Generated apps code is not up to date. Please run 'make gen-apps' to regenerate."; \
 | 
					
						
							|  |  |  | 			git diff --name-only; \
 | 
					
						
							|  |  |  | 			exit 1; \
 | 
					
						
							|  |  |  | 		fi; \
 | 
					
						
							|  |  |  | 		echo "Generated apps code is up to date."; \
 | 
					
						
							|  |  |  | 	fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PHONY: do-gen-apps | 
					
						
							|  |  |  | do-gen-apps: ## Generate code for Grafana App SDK apps
 | 
					
						
							| 
									
										
										
										
											2025-03-26 16:49:52 +08:00
										 |  |  | 	for dir in $(APPS_DIRS); do \
 | 
					
						
							|  |  |  | 		$(MAKE) -C $$dir generate; \
 | 
					
						
							|  |  |  | 	done | 
					
						
							|  |  |  | 	./hack/update-codegen.sh | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: gen-feature-toggles | 
					
						
							| 
									
										
										
										
											2024-03-21 19:04:49 +08:00
										 |  |  | gen-feature-toggles: | 
					
						
							|  |  |  | ## First go test run fails because it will re-generate the feature toggles.
 | 
					
						
							|  |  |  | ## Second go test run will compare the generated files and pass.
 | 
					
						
							|  |  |  | 	@echo "generate feature toggles" | 
					
						
							|  |  |  | 	go test -v ./pkg/services/featuremgmt/... > /dev/null 2>&1; \
 | 
					
						
							|  |  |  | 	if [ $$? -eq 0 ]; then \
 | 
					
						
							|  |  |  | 		echo "feature toggles already up-to-date"; \
 | 
					
						
							|  |  |  | 	else \
 | 
					
						
							|  |  |  | 		go test -v ./pkg/services/featuremgmt/...; \
 | 
					
						
							|  |  |  | 	fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-30 22:39:21 +08:00
										 |  |  | .PHONY: gen-go gen-enterprise-go | 
					
						
							|  |  |  | ifeq ("$(wildcard $(ENTERPRISE_EXT_FILE))","") ## if enterprise is not enabled
 | 
					
						
							|  |  |  | gen-enterprise-go: | 
					
						
							|  |  |  | 	@echo "skipping re-generating Wire graph for enterprise: not enabled" | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  | gen-enterprise-go: ## Generate Wire graph (Enterprise)
 | 
					
						
							|  |  |  | 	@echo "re-generating Wire graph for enterprise" | 
					
						
							|  |  |  | 	$(GO) run ./pkg/build/wire/cmd/wire/main.go gen -tags "enterprise" -gen_tags "(enterprise || pro)" -output_file_prefix="enterprise_" ./pkg/server | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | gen-go: gen-enterprise-go ## Generate Wire graph
 | 
					
						
							| 
									
										
										
										
											2025-08-22 19:49:44 +08:00
										 |  |  | 	@echo "generating Wire graph" | 
					
						
							| 
									
										
										
										
											2025-06-30 22:39:21 +08:00
										 |  |  | 	$(GO) run ./pkg/build/wire/cmd/wire/main.go gen -tags "oss" -gen_tags "(!enterprise && !pro)" ./pkg/server | 
					
						
							| 
									
										
										
										
											2021-08-25 21:11:22 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: fix-cue | 
					
						
							| 
									
										
										
										
											2025-03-17 16:48:41 +08:00
										 |  |  | fix-cue: | 
					
						
							| 
									
										
										
										
											2023-01-24 09:36:46 +08:00
										 |  |  | 	@echo "formatting cue files" | 
					
						
							| 
									
										
										
										
											2025-05-21 17:22:24 +08:00
										 |  |  | 	$(cue) fix kinds/**/*.cue | 
					
						
							|  |  |  | 	$(cue) fix public/app/plugins/**/**/*.cue | 
					
						
							| 
									
										
										
										
											2023-01-24 09:36:46 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: gen-jsonnet | 
					
						
							| 
									
										
										
										
											2022-11-03 23:04:39 +08:00
										 |  |  | gen-jsonnet: | 
					
						
							| 
									
										
										
										
											2022-11-11 17:19:29 +08:00
										 |  |  | 	go generate ./devenv/jsonnet | 
					
						
							| 
									
										
										
										
											2022-11-03 23:04:39 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-04 00:49:03 +08:00
										 |  |  | .PHONY: update-workspace | 
					
						
							| 
									
										
										
										
											2024-10-16 00:27:27 +08:00
										 |  |  | update-workspace: gen-go | 
					
						
							| 
									
										
										
										
											2024-07-04 00:49:03 +08:00
										 |  |  | 	@echo "updating workspace" | 
					
						
							| 
									
										
										
										
											2024-08-09 04:51:17 +08:00
										 |  |  | 	bash scripts/go-workspace/update-workspace.sh | 
					
						
							| 
									
										
										
										
											2024-07-04 00:49:03 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: build-go | 
					
						
							| 
									
										
										
										
											2024-09-17 17:47:00 +08:00
										 |  |  | build-go: gen-go update-workspace ## Build all Go binaries.
 | 
					
						
							| 
									
										
										
										
											2024-10-15 21:40:51 +08:00
										 |  |  | 	@echo "build go files with updated workspace" | 
					
						
							|  |  |  | 	$(GO) run build.go $(GO_BUILD_FLAGS) build | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | build-go-fast: gen-go ## Build all Go binaries.
 | 
					
						
							| 
									
										
										
										
											2019-03-28 00:53:49 +08:00
										 |  |  | 	@echo "build go files" | 
					
						
							| 
									
										
										
										
											2022-04-02 07:01:05 +08:00
										 |  |  | 	$(GO) run build.go $(GO_BUILD_FLAGS) build | 
					
						
							| 
									
										
										
										
											2016-10-11 14:51:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: build-backend | 
					
						
							| 
									
										
										
										
											2022-11-23 00:53:43 +08:00
										 |  |  | build-backend: ## Build Grafana backend.
 | 
					
						
							|  |  |  | 	@echo "build backend" | 
					
						
							|  |  |  | 	$(GO) run build.go $(GO_BUILD_FLAGS) build-backend | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-30 21:49:23 +08:00
										 |  |  | .PHONY: build-air | 
					
						
							|  |  |  | build-air: build-backend | 
					
						
							|  |  |  | 	@cp ./bin/grafana ./bin/grafana-air | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: build-server | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | build-server: ## Build Grafana server.
 | 
					
						
							| 
									
										
										
										
											2019-03-28 00:53:49 +08:00
										 |  |  | 	@echo "build server" | 
					
						
							| 
									
										
										
										
											2022-04-02 07:01:05 +08:00
										 |  |  | 	$(GO) run build.go $(GO_BUILD_FLAGS) build-server | 
					
						
							| 
									
										
										
										
											2018-03-07 06:59:45 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: build-cli | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | build-cli: ## Build Grafana CLI application.
 | 
					
						
							| 
									
										
										
										
											2021-08-17 18:06:33 +08:00
										 |  |  | 	@echo "build grafana-cli" | 
					
						
							| 
									
										
										
										
											2022-04-02 07:01:05 +08:00
										 |  |  | 	$(GO) run build.go $(GO_BUILD_FLAGS) build-cli | 
					
						
							| 
									
										
										
										
											2018-03-07 06:59:45 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: build-js | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | build-js: ## Build frontend assets.
 | 
					
						
							| 
									
										
										
										
											2019-03-28 00:53:49 +08:00
										 |  |  | 	@echo "build frontend" | 
					
						
							| 
									
										
										
										
											2018-03-07 06:59:45 +08:00
										 |  |  | 	yarn run build | 
					
						
							| 
									
										
										
										
											2016-04-26 00:44:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-23 16:44:38 +08:00
										 |  |  | PLUGIN_ID ?= | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: build-plugin-go | 
					
						
							| 
									
										
										
										
											2023-10-23 16:44:38 +08:00
										 |  |  | build-plugin-go: ## Build decoupled plugins
 | 
					
						
							|  |  |  | 	@echo "build plugin $(PLUGIN_ID)" | 
					
						
							|  |  |  | 	@cd pkg/tsdb; \
 | 
					
						
							|  |  |  | 	if [ -z "$(PLUGIN_ID)" ]; then \
 | 
					
						
							|  |  |  | 		echo "PLUGIN_ID is not set"; \
 | 
					
						
							|  |  |  | 		exit 1; \
 | 
					
						
							|  |  |  | 	fi; \
 | 
					
						
							|  |  |  | 	mage -v buildplugin $(PLUGIN_ID) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: build | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | build: build-go build-js ## Build backend and frontend.
 | 
					
						
							| 
									
										
										
										
											2016-10-11 14:51:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: run | 
					
						
							| 
									
										
										
										
											2025-07-25 17:32:07 +08:00
										 |  |  | run: ## Build and run backend, and watch for changes. See .air.toml for configuration.
 | 
					
						
							|  |  |  | 	$(air) -c .air.toml | 
					
						
							| 
									
										
										
										
											2018-04-21 02:28:52 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-30 07:34:16 +08:00
										 |  |  | .PHONY: run-go | 
					
						
							|  |  |  | run-go: ## Build and run web server immediately.
 | 
					
						
							|  |  |  | 	$(GO) run -race $(if $(GO_BUILD_TAGS),-build-tags=$(GO_BUILD_TAGS)) \
 | 
					
						
							| 
									
										
										
										
											2024-07-04 05:30:41 +08:00
										 |  |  | 		./pkg/cmd/grafana -- server -profile -profile-addr=127.0.0.1 -profile-port=6000 -packaging=dev cfg:app_mode=development | 
					
						
							| 
									
										
										
										
											2024-05-30 07:34:16 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: run-frontend | 
					
						
							| 
									
										
										
										
											2019-11-12 18:08:40 +08:00
										 |  |  | run-frontend: deps-js ## Fetch js dependencies and watch frontend for rebuild
 | 
					
						
							|  |  |  | 	yarn start | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-25 17:32:07 +08:00
										 |  |  | .PHONY: run-bra | 
					
						
							| 
									
										
										
										
											2025-07-31 22:43:29 +08:00
										 |  |  | run-bra: ## [Deprecated] Build and run web server on filesystem changes. See /.bra.toml for configuration.
 | 
					
						
							| 
									
										
										
										
											2025-07-25 17:32:07 +08:00
										 |  |  | 	$(bra) run | 
					
						
							| 
									
										
										
										
											2025-06-19 18:36:37 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-17 01:28:28 +08:00
										 |  |  | .PHONY: frontend-service-check | 
					
						
							|  |  |  | frontend-service-check: | 
					
						
							|  |  |  | 	./devenv/frontend-service/local-init.sh | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-21 01:27:04 +08:00
										 |  |  | .PHONY: frontend-service | 
					
						
							|  |  |  | frontend-service: frontend-service-check | 
					
						
							|  |  |  | 	bash ./devenv/frontend-service/run.sh | 
					
						
							| 
									
										
										
										
											2025-07-17 01:28:28 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | ##@ Testing
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-19 16:04:38 +08:00
										 |  |  | .PHONY: test-go | 
					
						
							|  |  |  | test-go: test-go-unit test-go-integration | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PHONY: test-go-unit | 
					
						
							|  |  |  | test-go-unit: ## Run unit tests for backend with flags.
 | 
					
						
							| 
									
										
										
										
											2025-05-13 19:08:19 +08:00
										 |  |  | 	@echo "backend unit tests ($(SHARD)/$(SHARDS))" | 
					
						
							|  |  |  | 	$(GO) test $(GO_RACE_FLAG) $(GO_TEST_FLAGS) -v -short -timeout=30m \
 | 
					
						
							|  |  |  | 		$(shell ./scripts/ci/backend-tests/shard.sh -n$(SHARD) -m$(SHARDS) -s) | 
					
						
							| 
									
										
										
										
											2025-03-13 01:00:13 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-26 21:32:42 +08:00
										 |  |  | .PHONY: test-go-unit-pretty | 
					
						
							|  |  |  | test-go-unit-pretty: check-tparse | 
					
						
							|  |  |  | 	@if [ -z "$(FILES)" ]; then \
 | 
					
						
							|  |  |  | 		echo "Notice: FILES variable is not set. Try \"make test-go-unit-pretty FILES=./pkg/services/mysvc\""; \
 | 
					
						
							|  |  |  | 		exit 1; \
 | 
					
						
							|  |  |  | 	fi | 
					
						
							| 
									
										
										
										
											2025-03-17 17:47:27 +08:00
										 |  |  | 	$(GO) test $(GO_RACE_FLAG) $(GO_TEST_FLAGS) -timeout=10s $(FILES) -json | tparse -all | 
					
						
							| 
									
										
										
										
											2024-08-26 21:32:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-19 16:04:38 +08:00
										 |  |  | .PHONY: test-go-integration | 
					
						
							|  |  |  | test-go-integration: ## Run integration tests for backend with flags.
 | 
					
						
							|  |  |  | 	@echo "test backend integration tests" | 
					
						
							| 
									
										
										
										
											2025-05-13 19:08:19 +08:00
										 |  |  | 	$(GO) test $(GO_RACE_FLAG) $(GO_TEST_FLAGS) -count=1 -run "^TestIntegration" -covermode=atomic -coverprofile=$(GO_INTEGRATION_COVER_PROFILE) -timeout=5m \
 | 
					
						
							|  |  |  | 		$(shell ./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -n$(SHARD) -m$(SHARDS) -s) | 
					
						
							| 
									
										
										
										
											2022-07-19 16:04:38 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-17 18:21:45 +08:00
										 |  |  | .PHONY: test-go-integration-alertmanager | 
					
						
							|  |  |  | test-go-integration-alertmanager: ## Run integration tests for the remote alertmanager (config taken from the mimir_backend block).
 | 
					
						
							|  |  |  | 	@echo "test remote alertmanager integration tests" | 
					
						
							|  |  |  | 	$(GO) clean -testcache | 
					
						
							| 
									
										
										
										
											2023-11-24 00:59:36 +08:00
										 |  |  | 	AM_URL=http://localhost:8080 AM_TENANT_ID=test \
 | 
					
						
							| 
									
										
										
										
											2024-05-31 23:30:51 +08:00
										 |  |  | 	$(GO) test $(GO_RACE_FLAG) -count=1 -run "^TestIntegrationRemoteAlertmanager" -covermode=atomic -timeout=5m ./pkg/services/ngalert/... | 
					
						
							| 
									
										
										
										
											2023-10-17 18:21:45 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-13 18:36:45 +08:00
										 |  |  | .PHONY: test-go-integration-grafana-alertmanager | 
					
						
							|  |  |  | test-go-integration-grafana-alertmanager: ## Run integration tests for the grafana alertmanager
 | 
					
						
							|  |  |  | 	@echo "test grafana alertmanager integration tests" | 
					
						
							|  |  |  | 	@export GRAFANA_VERSION=11.5.0-81938; \
 | 
					
						
							|  |  |  | 	$(GO) run tools/setup_grafana_alertmanager_integration_test_images.go; \
 | 
					
						
							|  |  |  | 	$(GO) clean -testcache; \
 | 
					
						
							|  |  |  | 	$(GO) test $(GO_RACE_FLAG) -count=1 -run "^TestAlertmanagerIntegration" -covermode=atomic -timeout=10m ./pkg/tests/alertmanager/... | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-19 16:04:38 +08:00
										 |  |  | .PHONY: test-go-integration-postgres | 
					
						
							|  |  |  | test-go-integration-postgres: devenv-postgres ## Run integration tests for postgres backend with flags.
 | 
					
						
							|  |  |  | 	@echo "test backend integration postgres tests" | 
					
						
							|  |  |  | 	$(GO) clean -testcache | 
					
						
							| 
									
										
										
										
											2023-04-18 00:33:43 +08:00
										 |  |  | 	GRAFANA_TEST_DB=postgres \
 | 
					
						
							| 
									
										
										
										
											2025-05-13 19:08:19 +08:00
										 |  |  | 	$(GO) test $(GO_RACE_FLAG) $(GO_TEST_FLAGS) -p=1 -count=1 -run "^TestIntegration" -covermode=atomic -timeout=10m \
 | 
					
						
							|  |  |  | 		$(shell ./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -n$(SHARD) -m$(SHARDS) -s) | 
					
						
							| 
									
										
										
										
											2022-07-19 16:04:38 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | .PHONY: test-go-integration-mysql | 
					
						
							|  |  |  | test-go-integration-mysql: devenv-mysql ## Run integration tests for mysql backend with flags.
 | 
					
						
							|  |  |  | 	@echo "test backend integration mysql tests" | 
					
						
							| 
									
										
										
										
											2023-04-18 00:33:43 +08:00
										 |  |  | 	GRAFANA_TEST_DB=mysql \
 | 
					
						
							| 
									
										
										
										
											2025-05-13 19:08:19 +08:00
										 |  |  | 	$(GO) test $(GO_RACE_FLAG) $(GO_TEST_FLAGS) -p=1 -count=1 -run "^TestIntegration" -covermode=atomic -timeout=10m \
 | 
					
						
							|  |  |  | 		$(shell ./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -n$(SHARD) -m$(SHARDS) -s) | 
					
						
							| 
									
										
										
										
											2016-10-11 14:51:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-05 16:55:55 +08:00
										 |  |  | .PHONY: test-go-integration-redis | 
					
						
							|  |  |  | test-go-integration-redis: ## Run integration tests for redis cache.
 | 
					
						
							|  |  |  | 	@echo "test backend integration redis tests" | 
					
						
							|  |  |  | 	$(GO) clean -testcache | 
					
						
							| 
									
										
										
										
											2025-05-13 19:08:19 +08:00
										 |  |  | 	REDIS_URL=localhost:6379 $(GO) test $(GO_TEST_FLAGS) -run IntegrationRedis -covermode=atomic -timeout=2m \
 | 
					
						
							|  |  |  | 		$(shell ./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -n$(SHARD) -m$(SHARDS) -s) | 
					
						
							| 
									
										
										
										
											2023-04-05 16:55:55 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | .PHONY: test-go-integration-memcached | 
					
						
							|  |  |  | test-go-integration-memcached: ## Run integration tests for memcached cache.
 | 
					
						
							|  |  |  | 	@echo "test backend integration memcached tests" | 
					
						
							|  |  |  | 	$(GO) clean -testcache | 
					
						
							| 
									
										
										
										
											2025-05-13 19:08:19 +08:00
										 |  |  | 	MEMCACHED_HOSTS=localhost:11211 $(GO) test $(GO_RACE_FLAG) $(GO_TEST_FLAGS) -run IntegrationMemcached -covermode=atomic -timeout=2m \
 | 
					
						
							|  |  |  | 		$(shell ./scripts/ci/backend-tests/pkgs-with-tests-named.sh -b TestIntegration | ./scripts/ci/backend-tests/shard.sh -n$(SHARD) -m$(SHARDS) -s) | 
					
						
							| 
									
										
										
										
											2025-03-19 19:34:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: test-js | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | test-js: ## Run tests for frontend.
 | 
					
						
							| 
									
										
										
										
											2019-03-28 00:53:49 +08:00
										 |  |  | 	@echo "test frontend" | 
					
						
							| 
									
										
										
										
											2018-03-07 06:59:45 +08:00
										 |  |  | 	yarn test | 
					
						
							| 
									
										
										
										
											2016-04-26 00:44:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: test | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | test: test-go test-js ## Run all tests.
 | 
					
						
							| 
									
										
										
										
											2016-10-11 14:51:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | ##@ Linting
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: golangci-lint | 
					
						
							| 
									
										
										
										
											2025-03-17 16:48:41 +08:00
										 |  |  | golangci-lint: | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | 	@echo "lint via golangci-lint" | 
					
						
							| 
									
										
										
										
											2025-05-21 17:22:24 +08:00
										 |  |  | 	$(golangci-lint) run \
 | 
					
						
							| 
									
										
										
										
											2024-11-26 16:19:53 +08:00
										 |  |  | 		--config .golangci.yml \
 | 
					
						
							| 
									
										
										
										
											2025-03-17 17:47:27 +08:00
										 |  |  | 		$(if $(GO_BUILD_TAGS),--build-tags $(GO_BUILD_TAGS)) \
 | 
					
						
							| 
									
										
										
										
											2025-09-18 20:07:55 +08:00
										 |  |  | 		$(GO_LINT_FILES) | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: lint-go | 
					
						
							| 
									
										
										
										
											2024-08-09 22:05:02 +08:00
										 |  |  | lint-go: golangci-lint ## Run all code checks for backend. You can use GO_LINT_FILES to specify exact files to check
 | 
					
						
							| 
									
										
										
										
											2019-07-02 21:06:59 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-08 20:47:33 +08:00
										 |  |  | .PHONY: lint-go-diff | 
					
						
							| 
									
										
										
										
											2025-03-17 16:48:41 +08:00
										 |  |  | lint-go-diff: | 
					
						
							| 
									
										
										
										
											2024-10-10 04:32:23 +08:00
										 |  |  | 	git diff --name-only $(GIT_BASE) | \
 | 
					
						
							| 
									
										
										
										
											2024-10-08 20:47:33 +08:00
										 |  |  | 		grep '\.go$$' | \
 | 
					
						
							|  |  |  | 		$(XARGSR) dirname | \
 | 
					
						
							|  |  |  | 		sort -u | \
 | 
					
						
							|  |  |  | 		sed 's,^,./,' | \
 | 
					
						
							| 
									
										
										
										
											2025-05-21 17:22:24 +08:00
										 |  |  | 		$(XARGSR) $(golangci-lint) run --config .golangci.yml | 
					
						
							| 
									
										
										
										
											2024-10-08 20:47:33 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-26 22:14:03 +08:00
										 |  |  | .PHONY: gofmt | 
					
						
							|  |  |  | gofmt: ## Run gofmt for all Go files.
 | 
					
						
							| 
									
										
										
										
											2025-09-24 20:37:57 +08:00
										 |  |  | 	@go list -m -f '{{.Dir}}' | xargs -I{} sh -c 'test ! -f {}/.nolint && echo {}' | xargs gofmt -s -w 2>&1 | grep -v '/pkg/build/' || true | 
					
						
							| 
									
										
										
										
											2025-08-26 22:14:03 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-23 18:12:33 +08:00
										 |  |  | # with disabled SC1071 we are ignored some TCL,Expect `/usr/bin/env expect` scripts
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: shellcheck | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | shellcheck: $(SH_FILES) ## Run checks for shell scripts.
 | 
					
						
							| 
									
										
										
										
											2019-07-23 18:12:33 +08:00
										 |  |  | 	@docker run --rm -v "$$PWD:/mnt" koalaman/shellcheck:stable \
 | 
					
						
							| 
									
										
										
										
											2019-10-02 16:11:15 +08:00
										 |  |  | 	$(SH_FILES) -e SC1071 -e SC2162 | 
					
						
							| 
									
										
										
										
											2019-07-23 18:12:33 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | ##@ Docker
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-01 04:18:00 +08:00
										 |  |  | TAG_SUFFIX=$(if $(WIRE_TAGS)!=oss,-$(WIRE_TAGS)) | 
					
						
							|  |  |  | PLATFORM=linux/amd64 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-20 02:22:59 +08:00
										 |  |  | # default to a production build for frontend
 | 
					
						
							|  |  |  | #
 | 
					
						
							|  |  |  | DOCKER_JS_NODE_ENV_FLAG = production | 
					
						
							|  |  |  | DOCKER_JS_YARN_BUILD_FLAG = build | 
					
						
							|  |  |  | DOCKER_JS_YARN_INSTALL_FLAG = --immutable | 
					
						
							|  |  |  | #
 | 
					
						
							|  |  |  | # if go is in dev mode, also build node in dev mode
 | 
					
						
							|  |  |  | ifeq ($(GO_BUILD_DEV), dev) | 
					
						
							|  |  |  |   DOCKER_JS_NODE_ENV_FLAG = dev | 
					
						
							|  |  |  |   DOCKER_JS_YARN_BUILD_FLAG = dev | 
					
						
							|  |  |  | 	DOCKER_JS_YARN_INSTALL_FLAG = | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | # if NODE_ENV is set in the environment to dev, build frontend in dev mode, and allow go builds to use their default
 | 
					
						
							|  |  |  | ifeq (${NODE_ENV}, dev) | 
					
						
							|  |  |  |   DOCKER_JS_NODE_ENV_FLAG = dev | 
					
						
							|  |  |  |   DOCKER_JS_YARN_BUILD_FLAG = dev | 
					
						
							|  |  |  | 	DOCKER_JS_YARN_INSTALL_FLAG = | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: build-docker-full | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | build-docker-full: ## Build Docker image for development.
 | 
					
						
							| 
									
										
										
										
											2025-08-20 02:22:59 +08:00
										 |  |  | 	@echo "build docker container mode=($(DOCKER_JS_NODE_ENV_FLAG))" | 
					
						
							| 
									
										
										
										
											2023-03-23 23:03:25 +08:00
										 |  |  | 	tar -ch . | \
 | 
					
						
							|  |  |  | 	docker buildx build - \
 | 
					
						
							| 
									
										
										
										
											2023-03-01 04:18:00 +08:00
										 |  |  | 	--platform $(PLATFORM) \
 | 
					
						
							| 
									
										
										
										
											2025-08-20 02:22:59 +08:00
										 |  |  | 	--build-arg NODE_ENV=$(DOCKER_JS_NODE_ENV_FLAG) \
 | 
					
						
							|  |  |  | 	--build-arg JS_NODE_ENV=$(DOCKER_JS_NODE_ENV_FLAG) \
 | 
					
						
							|  |  |  | 	--build-arg JS_YARN_INSTALL_FLAG=$(DOCKER_JS_YARN_INSTALL_FLAG) \
 | 
					
						
							|  |  |  | 	--build-arg JS_YARN_BUILD_FLAG=$(DOCKER_JS_YARN_BUILD_FLAG) \
 | 
					
						
							| 
									
										
										
										
											2023-03-01 04:18:00 +08:00
										 |  |  | 	--build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \
 | 
					
						
							|  |  |  | 	--build-arg WIRE_TAGS=$(WIRE_TAGS) \
 | 
					
						
							| 
									
										
										
										
											2023-09-27 03:15:39 +08:00
										 |  |  | 	--build-arg COMMIT_SHA=$$(git rev-parse HEAD) \
 | 
					
						
							| 
									
										
										
										
											2023-04-18 21:03:27 +08:00
										 |  |  | 	--build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \
 | 
					
						
							| 
									
										
										
										
											2023-03-01 04:18:00 +08:00
										 |  |  | 	--tag grafana/grafana$(TAG_SUFFIX):dev \
 | 
					
						
							|  |  |  | 	$(DOCKER_BUILD_ARGS) | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: build-docker-full-ubuntu | 
					
						
							| 
									
										
										
										
											2022-02-08 20:38:43 +08:00
										 |  |  | build-docker-full-ubuntu: ## Build Docker image based on Ubuntu for development.
 | 
					
						
							| 
									
										
										
										
											2025-08-20 02:22:59 +08:00
										 |  |  | 	@echo "build docker container mode=($(DOCKER_JS_NODE_ENV_FLAG))" | 
					
						
							| 
									
										
										
										
											2023-03-23 23:03:25 +08:00
										 |  |  | 	tar -ch . | \
 | 
					
						
							|  |  |  | 	docker buildx build - \
 | 
					
						
							| 
									
										
										
										
											2023-03-01 04:18:00 +08:00
										 |  |  | 	--platform $(PLATFORM) \
 | 
					
						
							| 
									
										
										
										
											2025-08-20 02:22:59 +08:00
										 |  |  | 	--build-arg NODE_ENV=$(DOCKER_JS_NODE_ENV_FLAG) \
 | 
					
						
							|  |  |  | 	--build-arg JS_NODE_ENV=$(DOCKER_JS_NODE_ENV_FLAG) \
 | 
					
						
							|  |  |  | 	--build-arg JS_YARN_INSTALL_FLAG=$(DOCKER_JS_YARN_INSTALL_FLAG) \
 | 
					
						
							|  |  |  | 	--build-arg JS_YARN_BUILD_FLAG=$(DOCKER_JS_YARN_BUILD_FLAG) \
 | 
					
						
							| 
									
										
										
										
											2023-03-01 04:18:00 +08:00
										 |  |  | 	--build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \
 | 
					
						
							|  |  |  | 	--build-arg WIRE_TAGS=$(WIRE_TAGS) \
 | 
					
						
							| 
									
										
										
										
											2023-09-27 03:15:39 +08:00
										 |  |  | 	--build-arg COMMIT_SHA=$$(git rev-parse HEAD) \
 | 
					
						
							| 
									
										
										
										
											2023-04-18 21:03:27 +08:00
										 |  |  | 	--build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \
 | 
					
						
							| 
									
										
										
										
											2023-09-28 21:48:41 +08:00
										 |  |  | 	--build-arg BASE_IMAGE=ubuntu:22.04 \
 | 
					
						
							| 
									
										
										
										
											2024-04-25 02:26:14 +08:00
										 |  |  | 	--build-arg GO_IMAGE=golang:$(GO_VERSION) \
 | 
					
						
							| 
									
										
										
										
											2023-03-01 04:18:00 +08:00
										 |  |  | 	--tag grafana/grafana$(TAG_SUFFIX):dev-ubuntu \
 | 
					
						
							|  |  |  | 	$(DOCKER_BUILD_ARGS) | 
					
						
							| 
									
										
										
										
											2022-02-08 20:38:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | ##@ Services
 | 
					
						
							| 
									
										
										
										
											2019-07-02 21:06:59 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-10 14:36:41 +08:00
										 |  |  | COMPOSE := $(shell if docker compose --help >/dev/null 2>&1; then echo docker compose; else echo docker-compose; fi) | 
					
						
							|  |  |  | ifeq ($(COMPOSE),docker-compose) | 
					
						
							|  |  |  | $(warning From July 2023 Compose V1 (docker-compose) stopped receiving updates. Migrate to Compose V2 (docker compose). https://docs.docker.com/compose/migrate/) | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Create a Docker Compose file with provided sources and start them.
 | 
					
						
							|  |  |  | # For example, `make devenv sources=postgres,auth/openldap`
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: devenv | 
					
						
							| 
									
										
										
										
											2019-05-29 00:32:14 +08:00
										 |  |  | ifeq ($(sources),) | 
					
						
							|  |  |  | devenv: | 
					
						
							| 
									
										
										
										
											2024-09-10 14:36:41 +08:00
										 |  |  | 	@printf 'You have to define sources for this command \nexample: make devenv sources=postgres,auth/openldap\n' | 
					
						
							| 
									
										
										
										
											2019-05-29 00:32:14 +08:00
										 |  |  | else | 
					
						
							| 
									
										
										
										
											2024-09-10 14:36:41 +08:00
										 |  |  | devenv: devenv-down ## Start optional services like Postgresql, Prometheus, or Elasticsearch.
 | 
					
						
							| 
									
										
										
										
											2019-05-25 09:38:01 +08:00
										 |  |  | 	@cd devenv; \
 | 
					
						
							| 
									
										
										
										
											2019-05-29 00:32:14 +08:00
										 |  |  | 	./create_docker_compose.sh $(targets) || \
 | 
					
						
							| 
									
										
										
										
											2019-07-16 14:16:11 +08:00
										 |  |  | 	(rm -rf {docker-compose.yaml,conf.tmp,.env}; exit 1) | 
					
						
							| 
									
										
										
										
											2019-05-29 00:32:14 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	@cd devenv; \
 | 
					
						
							| 
									
										
										
										
											2024-09-10 14:36:41 +08:00
										 |  |  | 	$(COMPOSE) up -d --build | 
					
						
							| 
									
										
										
										
											2019-05-29 00:32:14 +08:00
										 |  |  | endif | 
					
						
							| 
									
										
										
										
											2019-05-25 09:38:01 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: devenv-down | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | devenv-down: ## Stop optional services.
 | 
					
						
							| 
									
										
										
										
											2019-05-29 00:32:14 +08:00
										 |  |  | 	@cd devenv; \
 | 
					
						
							| 
									
										
										
										
											2019-05-29 01:08:27 +08:00
										 |  |  | 	test -f docker-compose.yaml && \
 | 
					
						
							| 
									
										
										
										
											2024-09-10 14:36:41 +08:00
										 |  |  | 	$(COMPOSE) down || exit 0; | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: devenv-postgres | 
					
						
							| 
									
										
										
										
											2022-07-19 16:04:38 +08:00
										 |  |  | devenv-postgres: | 
					
						
							|  |  |  | 	@cd devenv; \
 | 
					
						
							|  |  |  | 	sources=postgres_tests | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: devenv-mysql | 
					
						
							| 
									
										
										
										
											2022-07-19 16:04:38 +08:00
										 |  |  | devenv-mysql: | 
					
						
							|  |  |  | 	@cd devenv; \
 | 
					
						
							|  |  |  | 	sources=mysql_tests | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | ##@ Helpers
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-21 22:16:41 +08:00
										 |  |  | # We separate the protobuf generation because most development tasks on
 | 
					
						
							|  |  |  | # Grafana do not involve changing protobuf files and protoc is not a
 | 
					
						
							|  |  |  | # go-gettable dependency and so getting it installed can be inconvenient.
 | 
					
						
							|  |  |  | #
 | 
					
						
							|  |  |  | # If you are working on changes to protobuf interfaces you may either use
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | # this target or run the individual scripts below directly
 | 
					
						
							|  |  |  | .PHONY: protobuf | 
					
						
							| 
									
										
										
										
											2020-04-21 22:16:41 +08:00
										 |  |  | protobuf: ## Compile protobuf definitions
 | 
					
						
							|  |  |  | 	bash scripts/protobuf-check.sh | 
					
						
							| 
									
										
										
										
											2025-05-16 03:36:52 +08:00
										 |  |  | 	go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.5 | 
					
						
							| 
									
										
										
										
											2024-07-30 18:16:16 +08:00
										 |  |  | 	go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.4.0 | 
					
						
							| 
									
										
										
										
											2024-05-08 21:42:40 +08:00
										 |  |  | 	buf generate pkg/plugins/backendplugin/pluginextensionv2 --template pkg/plugins/backendplugin/pluginextensionv2/buf.gen.yaml | 
					
						
							| 
									
										
										
										
											2025-07-31 23:05:24 +08:00
										 |  |  | 	buf generate apps/secret --template apps/secret/buf.gen.yaml | 
					
						
							| 
									
										
										
										
											2025-05-16 03:36:52 +08:00
										 |  |  | 	buf generate pkg/storage/unified/proto --template pkg/storage/unified/proto/buf.gen.yaml | 
					
						
							| 
									
										
										
										
											2024-11-12 17:19:12 +08:00
										 |  |  | 	buf generate pkg/services/authz/proto/v1 --template pkg/services/authz/proto/v1/buf.gen.yaml | 
					
						
							| 
									
										
										
										
											2025-01-28 01:47:33 +08:00
										 |  |  | 	buf generate pkg/services/ngalert/store/proto/v1 --template pkg/services/ngalert/store/proto/v1/buf.gen.yaml | 
					
						
							| 
									
										
										
										
											2020-04-21 22:16:41 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: clean | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | clean: ## Clean up intermediate build artifacts.
 | 
					
						
							|  |  |  | 	@echo "cleaning" | 
					
						
							|  |  |  | 	rm -rf node_modules | 
					
						
							|  |  |  | 	rm -rf public/build | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: gen-ts | 
					
						
							| 
									
										
										
										
											2021-11-16 03:45:35 +08:00
										 |  |  | gen-ts: | 
					
						
							|  |  |  | 	@echo "generating TypeScript definitions" | 
					
						
							|  |  |  | 	go get github.com/tkrajina/typescriptify-golang-structs/typescriptify@v0.1.7 | 
					
						
							|  |  |  | 	tscriptify -interface -package=github.com/grafana/grafana/pkg/services/live/pipeline -import="import { FieldConfig } from '@grafana/data'" -target=public/app/features/live/pipeline/models.gen.ts pkg/services/live/pipeline/config.go | 
					
						
							|  |  |  | 	go mod tidy | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-30 07:34:16 +08:00
										 |  |  | .PHONY: go-race-is-enabled | 
					
						
							|  |  |  | go-race-is-enabled: | 
					
						
							|  |  |  | 	@if [ -n "$(GO_RACE)" ]; then \
 | 
					
						
							|  |  |  | 		echo "The Go race detector is enabled locally, yey!"; \
 | 
					
						
							|  |  |  | 	else \
 | 
					
						
							|  |  |  | 		echo "The Go race detector is NOT enabled locally, boo!"; \
 | 
					
						
							|  |  |  | 	fi; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .PHONY: enable-go-race | 
					
						
							|  |  |  | enable-go-race: | 
					
						
							|  |  |  | 	@touch .go-race-enabled-locally | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-26 21:32:42 +08:00
										 |  |  | check-tparse: | 
					
						
							|  |  |  | 	@command -v tparse >/dev/null 2>&1 || { \
 | 
					
						
							|  |  |  | 		echo >&2 "Error: tparse is not installed. Refer to https://github.com/mfridman/tparse"; \
 | 
					
						
							|  |  |  | 		exit 1; \
 | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-01 23:09:17 +08:00
										 |  |  | .PHONY: help | 
					
						
							| 
									
										
										
										
											2019-10-22 22:03:22 +08:00
										 |  |  | help: ## Display this help.
 | 
					
						
							|  |  |  | 	@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n  make \033[36m<target>\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf "  \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) | 
					
						
							| 
									
										
										
										
											2025-06-03 22:55:29 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | # check licenses of used dependencies (can be run using build image using
 | 
					
						
							|  |  |  | # container/check-licenses target)
 | 
					
						
							|  |  |  | check-licenses: | 
					
						
							|  |  |  | 	license_finder --decisions-file .github/license_finder.yaml |