2019-10-22 09:03:22 -05: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 08:11:22 -05:00
|
|
|
WIRE_TAGS = "oss"
|
|
|
|
|
2018-05-07 05:32:18 -05:00
|
|
|
-include local/Makefile
|
2021-08-25 08:11:22 -05:00
|
|
|
include .bingo/Variables.mk
|
2018-05-07 05:32:18 -05:00
|
|
|
|
2019-05-15 16:29:26 -05:00
|
|
|
|
2021-06-29 03:01:21 -05:00
|
|
|
GO = go
|
2024-05-07 15:23:21 -05:00
|
|
|
GO_VERSION = 1.22.3
|
2024-03-11 11:22:33 -05:00
|
|
|
GO_FILES ?= ./pkg/... ./pkg/apiserver/... ./pkg/apimachinery/... ./pkg/promlib/...
|
2019-07-23 05:12:33 -05:00
|
|
|
SH_FILES ?= $(shell find ./scripts -name *.sh)
|
2022-04-01 18:01:05 -05:00
|
|
|
GO_BUILD_FLAGS += $(if $(GO_BUILD_DEV),-dev)
|
|
|
|
GO_BUILD_FLAGS += $(if $(GO_BUILD_TAGS),-build-tags=$(GO_BUILD_TAGS))
|
2019-03-27 11:53:49 -05:00
|
|
|
|
2023-02-07 19:34:05 -06:00
|
|
|
targets := $(shell echo '$(sources)' | tr "," " ")
|
|
|
|
|
2023-04-17 11:33:43 -05:00
|
|
|
GO_INTEGRATION_TESTS := $(shell find ./pkg -type f -name '*_test.go' -exec grep -l '^func TestIntegration' '{}' '+' | grep -o '\(.*\)/' | sort -u)
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: all
|
2016-04-25 11:44:26 -05:00
|
|
|
all: deps build
|
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
##@ Dependencies
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: deps-go
|
2019-10-22 09:03:22 -05:00
|
|
|
deps-go: ## Install backend dependencies.
|
2019-07-11 13:55:35 -05:00
|
|
|
$(GO) run build.go setup
|
2016-10-11 01:51:44 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: deps-js
|
2019-10-22 09:03:22 -05:00
|
|
|
deps-js: node_modules ## Install frontend dependencies.
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: deps
|
2019-10-22 09:03:22 -05:00
|
|
|
deps: deps-js ## Install all dependencies.
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: node_modules
|
2019-10-22 09:03:22 -05:00
|
|
|
node_modules: package.json yarn.lock ## Install node modules.
|
|
|
|
@echo "install frontend dependencies"
|
2021-10-08 09:19:10 -05:00
|
|
|
YARN_ENABLE_PROGRESS_BARS=false yarn install --immutable
|
2016-04-25 11:44:26 -05:00
|
|
|
|
2022-02-08 06:38:43 -06:00
|
|
|
##@ Swagger
|
|
|
|
SPEC_TARGET = public/api-spec.json
|
2023-09-25 14:34:57 -05:00
|
|
|
ENTERPRISE_SPEC_TARGET = public/api-enterprise-spec.json
|
|
|
|
MERGED_SPEC_TARGET = public/api-merged.json
|
2022-05-23 14:08:27 -05:00
|
|
|
NGALERT_SPEC_TARGET = pkg/services/ngalert/api/tooling/api.json
|
2022-02-08 06:38:43 -06:00
|
|
|
|
|
|
|
$(NGALERT_SPEC_TARGET):
|
2022-05-23 14:08:27 -05:00
|
|
|
+$(MAKE) -C pkg/services/ngalert/api/tooling api.json
|
2022-02-08 06:38:43 -06:00
|
|
|
|
2023-09-25 14:34:57 -05:00
|
|
|
$(MERGED_SPEC_TARGET): swagger-oss-gen swagger-enterprise-gen $(NGALERT_SPEC_TARGET) $(SWAGGER) ## Merge generated and ngalert API specs
|
2022-07-20 08:09:42 -05:00
|
|
|
# known conflicts DsPermissionType, AddApiKeyCommand, Json, Duration (identical models referenced by both specs)
|
2024-03-07 04:07:35 -06:00
|
|
|
$(SWAGGER) mixin -q $(SPEC_TARGET) $(ENTERPRISE_SPEC_TARGET) $(NGALERT_SPEC_TARGET) --ignore-conflicts -o $(MERGED_SPEC_TARGET)
|
2022-02-08 06:38:43 -06:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: swagger-oss-gen
|
2023-09-25 14:34:57 -05:00
|
|
|
swagger-oss-gen: $(SWAGGER) ## Generate API Swagger specification
|
|
|
|
@echo "re-generating swagger for OSS"
|
|
|
|
rm -f $(SPEC_TARGET)
|
2024-03-07 04:07:35 -06:00
|
|
|
SWAGGER_GENERATE_EXTENSION=false $(SWAGGER) generate spec -q -m -w pkg/server -o $(SPEC_TARGET) \
|
2022-02-08 06:38:43 -06:00
|
|
|
-x "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" \
|
|
|
|
-x "github.com/prometheus/alertmanager" \
|
2022-10-14 08:51:05 -05:00
|
|
|
-i pkg/api/swagger_tags.json \
|
2023-09-25 14:34:57 -05:00
|
|
|
--exclude-tag=alpha \
|
|
|
|
--exclude-tag=enterprise
|
|
|
|
|
|
|
|
# this file only exists if enterprise is enabled
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: swagger-enterprise-gen
|
2023-09-25 14:34:57 -05: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
|
|
|
|
swagger-enterprise-gen: $(SWAGGER) ## Generate API Swagger specification
|
|
|
|
@echo "re-generating swagger for enterprise"
|
|
|
|
rm -f $(ENTERPRISE_SPEC_TARGET)
|
2024-03-07 04:07:35 -06:00
|
|
|
SWAGGER_GENERATE_EXTENSION=false $(SWAGGER) generate spec -q -m -w pkg/server -o $(ENTERPRISE_SPEC_TARGET) \
|
2023-09-25 14:34:57 -05:00
|
|
|
-x "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" \
|
|
|
|
-x "github.com/prometheus/alertmanager" \
|
|
|
|
-i pkg/api/swagger_tags.json \
|
|
|
|
--exclude-tag=alpha \
|
|
|
|
--include-tag=enterprise
|
|
|
|
endif
|
2022-02-08 06:38:43 -06:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: swagger-gen
|
2023-09-25 14:34:57 -05:00
|
|
|
swagger-gen: gen-go $(MERGED_SPEC_TARGET) swagger-validate
|
2022-02-08 06:38:43 -06:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: swagger-validate
|
2023-09-25 14:34:57 -05:00
|
|
|
swagger-validate: $(MERGED_SPEC_TARGET) $(SWAGGER) ## Validate API spec
|
2024-03-07 04:07:35 -06:00
|
|
|
$(SWAGGER) validate --skip-warnings $(<)
|
2022-06-14 05:35:22 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: swagger-clean
|
2023-09-25 14:34:57 -05:00
|
|
|
swagger-clean:
|
2023-01-31 05:00:45 -06:00
|
|
|
rm -f $(SPEC_TARGET) $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET)
|
2022-02-08 06:38:43 -06:00
|
|
|
|
2023-08-17 04:56:52 -05:00
|
|
|
.PHONY: cleanup-old-git-hooks
|
|
|
|
cleanup-old-git-hooks:
|
|
|
|
./scripts/cleanup-husky.sh
|
|
|
|
|
|
|
|
.PHONY: lefthook-install
|
|
|
|
lefthook-install: cleanup-old-git-hooks $(LEFTHOOK) # install lefthook for pre-commit hooks
|
|
|
|
$(LEFTHOOK) install -f
|
|
|
|
|
|
|
|
.PHONY: lefthook-uninstall
|
|
|
|
lefthook-uninstall: $(LEFTHOOK)
|
|
|
|
$(LEFTHOOK) uninstall
|
|
|
|
|
2022-08-04 11:51:12 -05:00
|
|
|
##@ OpenAPI 3
|
|
|
|
OAPI_SPEC_TARGET = public/openapi3.json
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: openapi3-gen
|
2023-09-25 14:34:57 -05:00
|
|
|
openapi3-gen: swagger-gen ## Generates OpenApi 3 specs from the Swagger 2 already generated
|
2022-08-04 11:51:12 -05:00
|
|
|
$(GO) run scripts/openapi3/openapi3conv.go $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET)
|
2016-10-11 01:51:44 -05:00
|
|
|
|
2024-04-18 10:25:27 -05: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 08:01:17 -05:00
|
|
|
i18n-extract-enterprise:
|
2024-04-18 10:25:27 -05:00
|
|
|
@echo "Extracting i18n strings for Enterprise"
|
|
|
|
yarn run i18next --config public/locales/i18next-parser-enterprise.config.cjs
|
|
|
|
node ./public/locales/pseudo.mjs --mode enterprise
|
|
|
|
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
|
|
|
|
node ./public/locales/pseudo.mjs --mode oss
|
|
|
|
|
2022-08-04 11:51:12 -05:00
|
|
|
##@ Building
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: gen-cue
|
2022-05-26 20:21:37 -05: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-10 14:36:40 -06:00
|
|
|
go generate ./kinds/gen.go
|
2022-12-02 01:22:28 -06:00
|
|
|
go generate ./public/app/plugins/gen.go
|
2022-05-26 20:21:37 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: gen-feature-toggles
|
2024-03-21 06:04:49 -05: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
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: gen-go
|
2024-03-25 05:23:27 -05:00
|
|
|
gen-go:
|
2021-08-25 08:11:22 -05:00
|
|
|
@echo "generate go files"
|
2024-03-25 05:23:27 -05:00
|
|
|
$(GO) run ./pkg/build/wire/cmd/wire/main.go gen -tags $(WIRE_TAGS) ./pkg/server
|
2021-08-25 08:11:22 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: fix-cue
|
2023-01-23 19:36:46 -06:00
|
|
|
fix-cue: $(CUE)
|
|
|
|
@echo "formatting cue files"
|
|
|
|
$(CUE) fix kinds/**/*.cue
|
|
|
|
$(CUE) fix public/app/plugins/**/**/*.cue
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: gen-jsonnet
|
2022-11-03 10:04:39 -05:00
|
|
|
gen-jsonnet:
|
2022-11-11 03:19:29 -06:00
|
|
|
go generate ./devenv/jsonnet
|
2022-11-03 10:04:39 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: build-go
|
2023-02-02 05:18:04 -06:00
|
|
|
build-go: gen-go ## Build all Go binaries.
|
2019-03-27 11:53:49 -05:00
|
|
|
@echo "build go files"
|
2022-04-01 18:01:05 -05:00
|
|
|
$(GO) run build.go $(GO_BUILD_FLAGS) build
|
2016-10-11 01:51:44 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: build-backend
|
2022-11-22 10:53:43 -06:00
|
|
|
build-backend: ## Build Grafana backend.
|
|
|
|
@echo "build backend"
|
|
|
|
$(GO) run build.go $(GO_BUILD_FLAGS) build-backend
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: build-server
|
2019-10-22 09:03:22 -05:00
|
|
|
build-server: ## Build Grafana server.
|
2019-03-27 11:53:49 -05:00
|
|
|
@echo "build server"
|
2022-04-01 18:01:05 -05:00
|
|
|
$(GO) run build.go $(GO_BUILD_FLAGS) build-server
|
2018-03-06 16:59:45 -06:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: build-cli
|
2019-10-22 09:03:22 -05:00
|
|
|
build-cli: ## Build Grafana CLI application.
|
2021-08-17 05:06:33 -05:00
|
|
|
@echo "build grafana-cli"
|
2022-04-01 18:01:05 -05:00
|
|
|
$(GO) run build.go $(GO_BUILD_FLAGS) build-cli
|
2018-03-06 16:59:45 -06:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: build-js
|
2019-10-22 09:03:22 -05:00
|
|
|
build-js: ## Build frontend assets.
|
2019-03-27 11:53:49 -05:00
|
|
|
@echo "build frontend"
|
2018-03-06 16:59:45 -06:00
|
|
|
yarn run build
|
2020-05-18 03:22:45 -05:00
|
|
|
yarn run plugins:build-bundled
|
2016-04-25 11:44:26 -05:00
|
|
|
|
2023-10-23 03:44:38 -05:00
|
|
|
PLUGIN_ID ?=
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: build-plugin-go
|
2023-10-23 03:44:38 -05: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 10:09:17 -05:00
|
|
|
.PHONY: build
|
2019-10-22 09:03:22 -05:00
|
|
|
build: build-go build-js ## Build backend and frontend.
|
2016-10-11 01:51:44 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: run
|
2022-06-21 04:08:08 -05:00
|
|
|
run: $(BRA) ## Build and run web server on filesystem changes.
|
|
|
|
$(BRA) run
|
2018-04-20 13:28:52 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: run-frontend
|
2019-11-12 04:08:40 -06:00
|
|
|
run-frontend: deps-js ## Fetch js dependencies and watch frontend for rebuild
|
|
|
|
yarn start
|
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
##@ Testing
|
|
|
|
|
2022-07-19 03:04:38 -05: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.
|
|
|
|
@echo "test backend unit tests"
|
2024-03-25 02:49:36 -05:00
|
|
|
go list -f '{{.Dir}}/...' -m | xargs \
|
2024-03-24 01:58:48 -05:00
|
|
|
$(GO) test -short -covermode=atomic -timeout=30m
|
2022-07-19 03:04:38 -05:00
|
|
|
|
|
|
|
.PHONY: test-go-integration
|
|
|
|
test-go-integration: ## Run integration tests for backend with flags.
|
|
|
|
@echo "test backend integration tests"
|
2023-04-17 11:33:43 -05:00
|
|
|
$(GO) test -count=1 -run "^TestIntegration" -covermode=atomic -timeout=5m $(GO_INTEGRATION_TESTS)
|
2022-07-19 03:04:38 -05:00
|
|
|
|
2023-10-17 05:21:45 -05: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-23 10:59:36 -06:00
|
|
|
AM_URL=http://localhost:8080 AM_TENANT_ID=test \
|
2023-11-22 12:13:04 -06:00
|
|
|
$(GO) test -count=1 -run "^TestIntegrationRemoteAlertmanager" -covermode=atomic -timeout=5m ./pkg/services/ngalert/...
|
2023-10-17 05:21:45 -05:00
|
|
|
|
2022-07-19 03:04:38 -05: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-17 11:33:43 -05:00
|
|
|
GRAFANA_TEST_DB=postgres \
|
|
|
|
$(GO) test -p=1 -count=1 -run "^TestIntegration" -covermode=atomic -timeout=10m $(GO_INTEGRATION_TESTS)
|
2022-07-19 03:04:38 -05: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-17 11:33:43 -05:00
|
|
|
GRAFANA_TEST_DB=mysql \
|
|
|
|
$(GO) test -p=1 -count=1 -run "^TestIntegration" -covermode=atomic -timeout=10m $(GO_INTEGRATION_TESTS)
|
2016-10-11 01:51:44 -05:00
|
|
|
|
2023-04-05 03:55:55 -05: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
|
2023-04-17 11:33:43 -05:00
|
|
|
REDIS_URL=localhost:6379 $(GO) test -run IntegrationRedis -covermode=atomic -timeout=2m $(GO_INTEGRATION_TESTS)
|
2023-04-05 03:55:55 -05: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
|
2023-04-17 11:33:43 -05:00
|
|
|
MEMCACHED_HOSTS=localhost:11211 $(GO) test -run IntegrationMemcached -covermode=atomic -timeout=2m $(GO_INTEGRATION_TESTS)
|
2023-04-05 03:55:55 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: test-js
|
2019-10-22 09:03:22 -05:00
|
|
|
test-js: ## Run tests for frontend.
|
2019-03-27 11:53:49 -05:00
|
|
|
@echo "test frontend"
|
2018-03-06 16:59:45 -06:00
|
|
|
yarn test
|
2016-04-25 11:44:26 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: test
|
2019-10-22 09:03:22 -05:00
|
|
|
test: test-go test-js ## Run all tests.
|
2016-10-11 01:51:44 -05:00
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
##@ Linting
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: golangci-lint
|
2022-06-17 12:46:20 -05:00
|
|
|
golangci-lint: $(GOLANGCI_LINT)
|
2019-10-22 09:03:22 -05:00
|
|
|
@echo "lint via golangci-lint"
|
2022-06-17 12:46:20 -05:00
|
|
|
$(GOLANGCI_LINT) run \
|
2022-09-12 05:03:49 -05:00
|
|
|
--config .golangci.toml \
|
2019-10-22 09:03:22 -05:00
|
|
|
$(GO_FILES)
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: lint-go
|
2021-09-21 09:30:47 -05:00
|
|
|
lint-go: golangci-lint ## Run all code checks for backend. You can use GO_FILES to specify exact files to check
|
2019-07-02 08:06:59 -05:00
|
|
|
|
2019-07-23 05:12:33 -05:00
|
|
|
# with disabled SC1071 we are ignored some TCL,Expect `/usr/bin/env expect` scripts
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: shellcheck
|
2019-10-22 09:03:22 -05:00
|
|
|
shellcheck: $(SH_FILES) ## Run checks for shell scripts.
|
2019-07-23 05:12:33 -05:00
|
|
|
@docker run --rm -v "$$PWD:/mnt" koalaman/shellcheck:stable \
|
2019-10-02 03:11:15 -05:00
|
|
|
$(SH_FILES) -e SC1071 -e SC2162
|
2019-07-23 05:12:33 -05:00
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
##@ Docker
|
|
|
|
|
2023-02-28 14:18:00 -06:00
|
|
|
TAG_SUFFIX=$(if $(WIRE_TAGS)!=oss,-$(WIRE_TAGS))
|
|
|
|
PLATFORM=linux/amd64
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: build-docker-full
|
2019-10-22 09:03:22 -05:00
|
|
|
build-docker-full: ## Build Docker image for development.
|
|
|
|
@echo "build docker container"
|
2023-03-23 10:03:25 -05:00
|
|
|
tar -ch . | \
|
|
|
|
docker buildx build - \
|
2023-02-28 14:18:00 -06:00
|
|
|
--platform $(PLATFORM) \
|
|
|
|
--build-arg BINGO=false \
|
|
|
|
--build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \
|
|
|
|
--build-arg WIRE_TAGS=$(WIRE_TAGS) \
|
2023-09-26 14:15:39 -05:00
|
|
|
--build-arg COMMIT_SHA=$$(git rev-parse HEAD) \
|
2023-04-18 08:03:27 -05:00
|
|
|
--build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \
|
2023-02-28 14:18:00 -06:00
|
|
|
--tag grafana/grafana$(TAG_SUFFIX):dev \
|
|
|
|
$(DOCKER_BUILD_ARGS)
|
2019-10-22 09:03:22 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: build-docker-full-ubuntu
|
2022-02-08 06:38:43 -06:00
|
|
|
build-docker-full-ubuntu: ## Build Docker image based on Ubuntu for development.
|
|
|
|
@echo "build docker container"
|
2023-03-23 10:03:25 -05:00
|
|
|
tar -ch . | \
|
|
|
|
docker buildx build - \
|
2023-02-28 14:18:00 -06:00
|
|
|
--platform $(PLATFORM) \
|
|
|
|
--build-arg BINGO=false \
|
|
|
|
--build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \
|
|
|
|
--build-arg WIRE_TAGS=$(WIRE_TAGS) \
|
2023-09-26 14:15:39 -05:00
|
|
|
--build-arg COMMIT_SHA=$$(git rev-parse HEAD) \
|
2023-04-18 08:03:27 -05:00
|
|
|
--build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \
|
2023-09-28 08:48:41 -05:00
|
|
|
--build-arg BASE_IMAGE=ubuntu:22.04 \
|
2024-04-24 13:26:14 -05:00
|
|
|
--build-arg GO_IMAGE=golang:$(GO_VERSION) \
|
2023-02-28 14:18:00 -06:00
|
|
|
--tag grafana/grafana$(TAG_SUFFIX):dev-ubuntu \
|
|
|
|
$(DOCKER_BUILD_ARGS)
|
2022-02-08 06:38:43 -06:00
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
##@ Services
|
2019-07-02 08:06:59 -05:00
|
|
|
|
2019-05-24 20:38:01 -05:00
|
|
|
# create docker-compose file with provided sources and start them
|
2022-08-29 09:36:06 -05:00
|
|
|
# example: make devenv sources=postgres,auth/openldap
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: devenv
|
2019-05-28 11:32:14 -05:00
|
|
|
ifeq ($(sources),)
|
|
|
|
devenv:
|
|
|
|
@printf 'You have to define sources for this command \nexample: make devenv sources=postgres,openldap\n'
|
|
|
|
else
|
2023-03-15 13:46:35 -05:00
|
|
|
devenv: devenv-down ## Start optional services, e.g. postgres, prometheus, and elasticsearch.
|
2019-05-24 20:38:01 -05:00
|
|
|
@cd devenv; \
|
2019-05-28 11:32:14 -05:00
|
|
|
./create_docker_compose.sh $(targets) || \
|
2019-07-16 01:16:11 -05:00
|
|
|
(rm -rf {docker-compose.yaml,conf.tmp,.env}; exit 1)
|
2019-05-28 11:32:14 -05:00
|
|
|
|
|
|
|
@cd devenv; \
|
2019-06-03 13:09:29 -05:00
|
|
|
docker-compose up -d --build
|
2019-05-28 11:32:14 -05:00
|
|
|
endif
|
2019-05-24 20:38:01 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: devenv-down
|
2019-10-22 09:03:22 -05:00
|
|
|
devenv-down: ## Stop optional services.
|
2019-05-28 11:32:14 -05:00
|
|
|
@cd devenv; \
|
2019-05-28 12:08:27 -05:00
|
|
|
test -f docker-compose.yaml && \
|
|
|
|
docker-compose down || exit 0;
|
2019-10-22 09:03:22 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: devenv-postgres
|
2022-07-19 03:04:38 -05:00
|
|
|
devenv-postgres:
|
|
|
|
@cd devenv; \
|
|
|
|
sources=postgres_tests
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: devenv-mysql
|
2022-07-19 03:04:38 -05:00
|
|
|
devenv-mysql:
|
|
|
|
@cd devenv; \
|
|
|
|
sources=mysql_tests
|
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
##@ Helpers
|
|
|
|
|
2020-04-21 09:16:41 -05: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 10:09:17 -05:00
|
|
|
# this target or run the individual scripts below directly
|
|
|
|
.PHONY: protobuf
|
2020-04-21 09:16:41 -05:00
|
|
|
protobuf: ## Compile protobuf definitions
|
|
|
|
bash scripts/protobuf-check.sh
|
2024-05-08 08:42:40 -05:00
|
|
|
go install google.golang.org/protobuf/cmd/protoc-gen-go
|
|
|
|
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
|
|
|
|
buf generate pkg/plugins/backendplugin/pluginextensionv2 --template pkg/plugins/backendplugin/pluginextensionv2/buf.gen.yaml
|
|
|
|
buf generate pkg/plugins/backendplugin/secretsmanagerplugin --template pkg/plugins/backendplugin/secretsmanagerplugin/buf.gen.yaml
|
|
|
|
buf generate pkg/services/store/entity --template pkg/services/store/entity/buf.gen.yaml
|
2020-04-21 09:16:41 -05:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: clean
|
2019-10-22 09:03:22 -05:00
|
|
|
clean: ## Clean up intermediate build artifacts.
|
|
|
|
@echo "cleaning"
|
|
|
|
rm -rf node_modules
|
|
|
|
rm -rf public/build
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: gen-ts
|
2021-11-15 13:45:35 -06: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
|
|
|
|
|
2021-07-14 07:40:28 -05:00
|
|
|
# This repository's configuration is protected (https://readme.drone.io/signature/).
|
2021-08-12 03:39:09 -05:00
|
|
|
# Use this make target to regenerate the configuration YAML files when
|
2021-07-14 07:40:28 -05:00
|
|
|
# you modify starlark files.
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: drone
|
2021-10-21 15:28:57 -05:00
|
|
|
drone: $(DRONE)
|
2024-02-23 13:28:30 -06:00
|
|
|
bash scripts/drone/env-var-check.sh
|
2021-10-14 09:02:45 -05:00
|
|
|
$(DRONE) starlark --format
|
2021-11-30 04:53:07 -06:00
|
|
|
$(DRONE) lint .drone.yml --trusted
|
2021-10-14 09:02:45 -05:00
|
|
|
$(DRONE) --server https://drone.grafana.net sign --save grafana/grafana
|
2021-07-14 07:40:28 -05:00
|
|
|
|
2023-01-30 03:27:11 -06:00
|
|
|
# Generate an Emacs tags table (https://www.gnu.org/software/emacs/manual/html_node/emacs/Tags-Tables.html) for Starlark files.
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: scripts/drone/TAGS
|
2023-01-30 03:27:11 -06:00
|
|
|
scripts/drone/TAGS: $(shell find scripts/drone -name '*.star')
|
|
|
|
etags --lang none --regex="/def \(\w+\)[^:]+:/\1/" --regex="/\s*\(\w+\) =/\1/" $^ -o $@
|
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: format-drone
|
2022-12-07 01:13:57 -06:00
|
|
|
format-drone:
|
2023-09-12 10:19:06 -05:00
|
|
|
buildifier --lint=fix -r scripts/drone
|
2022-12-07 01:13:57 -06:00
|
|
|
|
2024-04-01 10:09:17 -05:00
|
|
|
.PHONY: help
|
2019-10-22 09:03:22 -05: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)
|