From 32129fc1d8546f7774f337f320e0d7bb83833dd7 Mon Sep 17 00:00:00 2001 From: Guilherme Caulada Date: Thu, 19 Oct 2023 10:36:06 -0300 Subject: [PATCH] Update Makefile --- Makefile | 70 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 56 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index ceeb2673bef..114f0e5c29c 100644 --- a/Makefile +++ b/Makefile @@ -36,36 +36,68 @@ node_modules: package.json yarn.lock ## Install node modules. ##@ Swagger SPEC_TARGET = public/api-spec.json -MERGED_SPEC_TARGET := public/api-merged.json +ENTERPRISE_SPEC_TARGET = public/api-enterprise-spec.json +MERGED_SPEC_TARGET = public/api-merged.json NGALERT_SPEC_TARGET = pkg/services/ngalert/api/tooling/api.json $(NGALERT_SPEC_TARGET): +$(MAKE) -C pkg/services/ngalert/api/tooling api.json -$(MERGED_SPEC_TARGET): $(SPEC_TARGET) $(NGALERT_SPEC_TARGET) $(SWAGGER) ## Merge generated and ngalert API specs +$(MERGED_SPEC_TARGET): swagger-oss-gen swagger-enterprise-gen $(NGALERT_SPEC_TARGET) $(SWAGGER) ## Merge generated and ngalert API specs # known conflicts DsPermissionType, AddApiKeyCommand, Json, Duration (identical models referenced by both specs) - $(SWAGGER) mixin $(SPEC_TARGET) $(NGALERT_SPEC_TARGET) --ignore-conflicts -o $(MERGED_SPEC_TARGET) + $(SWAGGER) mixin $(SPEC_TARGET) $(ENTERPRISE_SPEC_TARGET) $(NGALERT_SPEC_TARGET) --ignore-conflicts -o $(MERGED_SPEC_TARGET) -$(SPEC_TARGET): $(SWAGGER) ## Generate API Swagger specification +swagger-oss-gen: $(SWAGGER) ## Generate API Swagger specification + @echo "re-generating swagger for OSS" + rm -f $(SPEC_TARGET) SWAGGER_GENERATE_EXTENSION=false $(SWAGGER) generate spec -m -w pkg/server -o $(SPEC_TARGET) \ -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 - go run pkg/services/ngalert/api/tooling/cmd/clean-swagger/main.go -if $@ -of $@ + --exclude-tag=alpha \ + --exclude-tag=enterprise -swagger-api-spec: gen-go $(SPEC_TARGET) $(MERGED_SPEC_TARGET) validate-api-spec +# this file only exists if enterprise is enabled +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) + SWAGGER_GENERATE_EXTENSION=false $(SWAGGER) generate spec -m -w pkg/server -o $(ENTERPRISE_SPEC_TARGET) \ + -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 -validate-api-spec: $(MERGED_SPEC_TARGET) $(SWAGGER) ## Validate API spec +swagger-gen: gen-go $(MERGED_SPEC_TARGET) swagger-validate + +swagger-validate: $(MERGED_SPEC_TARGET) $(SWAGGER) ## Validate API spec $(SWAGGER) validate $(<) -clean-api-spec: +swagger-clean: rm -f $(SPEC_TARGET) $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET) +.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 + ##@ OpenAPI 3 OAPI_SPEC_TARGET = public/openapi3.json -openapi3-gen: swagger-api-spec ## Generates OpenApi 3 specs from the Swagger 2 already generated +openapi3-gen: swagger-gen ## Generates OpenApi 3 specs from the Swagger 2 already generated $(GO) run scripts/openapi3/openapi3conv.go $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET) ##@ Building @@ -132,6 +164,13 @@ test-go-integration: ## Run integration tests for backend with flags. @echo "test backend integration tests" $(GO) test -count=1 -run "^TestIntegration" -covermode=atomic -timeout=5m $(GO_INTEGRATION_TESTS) +.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 + AM_URL=http://localhost:8080 AM_TENANT_ID=test AM_PASSWORD=test \ + $(GO) test -count=1 -run "^TestIntegrationRemoteAlertmanager" -covermode=atomic -timeout=5m ./pkg/services/ngalert/notifier/... + .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" @@ -190,7 +229,7 @@ build-docker-full: ## Build Docker image for development. --build-arg BINGO=false \ --build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \ --build-arg WIRE_TAGS=$(WIRE_TAGS) \ - --build-arg COMMIT_SHA=$$(git rev-parse --short HEAD) \ + --build-arg COMMIT_SHA=$$(git rev-parse HEAD) \ --build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \ --tag grafana/grafana$(TAG_SUFFIX):dev \ $(DOCKER_BUILD_ARGS) @@ -203,9 +242,9 @@ build-docker-full-ubuntu: ## Build Docker image based on Ubuntu for development. --build-arg BINGO=false \ --build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \ --build-arg WIRE_TAGS=$(WIRE_TAGS) \ - --build-arg COMMIT_SHA=$$(git rev-parse --short HEAD) \ + --build-arg COMMIT_SHA=$$(git rev-parse HEAD) \ --build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \ - --build-arg BASE_IMAGE=ubuntu:20.04 \ + --build-arg BASE_IMAGE=ubuntu:22.04 \ --build-arg GO_IMAGE=golang:1.20.10 \ --tag grafana/grafana$(TAG_SUFFIX):dev-ubuntu \ $(DOCKER_BUILD_ARGS) @@ -251,6 +290,9 @@ devenv-mysql: protobuf: ## Compile protobuf definitions bash scripts/protobuf-check.sh bash pkg/plugins/backendplugin/pluginextensionv2/generate.sh + bash pkg/plugins/backendplugin/secretsmanagerplugin/generate.sh + bash pkg/services/store/entity/generate.sh + bash pkg/infra/grn/generate.sh clean: ## Clean up intermediate build artifacts. @echo "cleaning" @@ -276,7 +318,7 @@ scripts/drone/TAGS: $(shell find scripts/drone -name '*.star') etags --lang none --regex="/def \(\w+\)[^:]+:/\1/" --regex="/\s*\(\w+\) =/\1/" $^ -o $@ format-drone: - buildifier -r scripts/drone + buildifier --lint=fix -r scripts/drone help: ## Display this help. @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\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)