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/
|
|
|
|
|
2018-05-07 05:32:18 -05:00
|
|
|
-include local/Makefile
|
|
|
|
|
2020-04-21 09:16:41 -05:00
|
|
|
.PHONY: all deps-go deps-js deps build-go build-server build-cli build-js build build-docker-dev build-docker-full lint-go gosec revive golangci-lint go-vet test-go test-js test run run-frontend clean devenv devenv-down revive-alerting protobuf help
|
2019-05-15 16:29:26 -05:00
|
|
|
|
2019-07-18 04:11:05 -05:00
|
|
|
GO = GO111MODULE=on go
|
|
|
|
GO_FILES ?= ./pkg/...
|
2019-07-23 05:12:33 -05:00
|
|
|
SH_FILES ?= $(shell find ./scripts -name *.sh)
|
2019-03-27 11:53:49 -05:00
|
|
|
|
2016-04-25 11:44:26 -05:00
|
|
|
all: deps build
|
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
##@ Dependencies
|
|
|
|
|
|
|
|
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
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
deps-js: node_modules ## Install frontend dependencies.
|
|
|
|
|
|
|
|
deps: deps-js ## Install all dependencies.
|
|
|
|
|
|
|
|
node_modules: package.json yarn.lock ## Install node modules.
|
|
|
|
@echo "install frontend dependencies"
|
|
|
|
yarn install --pure-lockfile --no-progress
|
2016-04-25 11:44:26 -05:00
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
##@ Building
|
2016-10-11 01:51:44 -05:00
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
build-go: ## Build all Go binaries.
|
2019-03-27 11:53:49 -05:00
|
|
|
@echo "build go files"
|
2019-07-11 13:55:35 -05:00
|
|
|
$(GO) run build.go build
|
2016-10-11 01:51:44 -05:00
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
build-server: ## Build Grafana server.
|
2019-03-27 11:53:49 -05:00
|
|
|
@echo "build server"
|
2019-07-11 13:55:35 -05:00
|
|
|
$(GO) run build.go build-server
|
2018-03-06 16:59:45 -06:00
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
build-cli: ## Build Grafana CLI application.
|
2019-03-27 11:53:49 -05:00
|
|
|
@echo "build in CI environment"
|
2019-07-11 13:55:35 -05:00
|
|
|
$(GO) run build.go build-cli
|
2018-03-06 16:59:45 -06:00
|
|
|
|
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
|
|
|
|
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
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
scripts/go/bin/bra: scripts/go/go.mod
|
|
|
|
@cd scripts/go; \
|
|
|
|
$(GO) build -o ./bin/bra github.com/unknwon/bra
|
2018-08-02 10:42:28 -05:00
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
run: scripts/go/bin/bra ## Build and run web server on filesystem changes.
|
|
|
|
@GO111MODULE=on scripts/go/bin/bra run
|
2018-04-20 13:28:52 -05:00
|
|
|
|
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
|
|
|
|
|
|
|
|
test-go: ## Run tests for backend.
|
2019-03-27 11:53:49 -05:00
|
|
|
@echo "test backend"
|
2019-07-11 13:55:35 -05:00
|
|
|
$(GO) test -v ./pkg/...
|
2016-10-11 01:51:44 -05:00
|
|
|
|
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
|
|
|
|
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
|
2019-05-15 16:29:26 -05:00
|
|
|
|
|
|
|
scripts/go/bin/revive: scripts/go/go.mod
|
|
|
|
@cd scripts/go; \
|
|
|
|
$(GO) build -o ./bin/revive github.com/mgechev/revive
|
|
|
|
|
|
|
|
revive: scripts/go/bin/revive
|
2019-07-02 08:06:59 -05:00
|
|
|
@echo "lint via revive"
|
2019-05-15 16:29:26 -05:00
|
|
|
@scripts/go/bin/revive \
|
|
|
|
-formatter stylish \
|
|
|
|
-config ./scripts/go/configs/revive.toml \
|
|
|
|
$(GO_FILES)
|
|
|
|
|
2019-06-03 03:25:58 -05:00
|
|
|
revive-alerting: scripts/go/bin/revive
|
2019-07-02 08:06:59 -05:00
|
|
|
@echo "lint alerting via revive"
|
2019-06-03 03:25:58 -05:00
|
|
|
@scripts/go/bin/revive \
|
|
|
|
-formatter stylish \
|
2020-04-16 09:09:27 -05:00
|
|
|
-config ./scripts/go/configs/revive-strict.toml \
|
2020-04-11 14:07:07 -05:00
|
|
|
./pkg/services/alerting/... \
|
2020-04-15 01:12:52 -05:00
|
|
|
./pkg/services/provisioning/datasources/... \
|
|
|
|
./pkg/services/provisioning/dashboards/...
|
2019-06-03 03:25:58 -05:00
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
scripts/go/bin/golangci-lint: scripts/go/go.mod
|
|
|
|
@cd scripts/go; \
|
|
|
|
$(GO) build -o ./bin/golangci-lint github.com/golangci/golangci-lint/cmd/golangci-lint
|
|
|
|
|
|
|
|
golangci-lint: scripts/go/bin/golangci-lint
|
|
|
|
@echo "lint via golangci-lint"
|
|
|
|
@scripts/go/bin/golangci-lint run \
|
|
|
|
--config ./scripts/go/configs/.golangci.yml \
|
|
|
|
$(GO_FILES)
|
|
|
|
|
|
|
|
scripts/go/bin/gosec: scripts/go/go.mod
|
|
|
|
@cd scripts/go; \
|
|
|
|
$(GO) build -o ./bin/gosec github.com/securego/gosec/cmd/gosec
|
|
|
|
|
2019-06-07 08:42:08 -05:00
|
|
|
# TODO recheck the rules and leave only necessary exclusions
|
|
|
|
gosec: scripts/go/bin/gosec
|
2019-07-02 08:06:59 -05:00
|
|
|
@echo "lint via gosec"
|
2019-06-07 08:42:08 -05:00
|
|
|
@scripts/go/bin/gosec -quiet \
|
2019-10-16 03:52:51 -05:00
|
|
|
-exclude=G104,G107,G108,G201,G202,G204,G301,G304,G401,G402,G501 \
|
2019-06-07 08:42:08 -05:00
|
|
|
-conf=./scripts/go/configs/gosec.json \
|
|
|
|
$(GO_FILES)
|
|
|
|
|
2019-07-02 08:06:59 -05:00
|
|
|
go-vet:
|
|
|
|
@echo "lint via go vet"
|
2019-07-11 13:55:35 -05:00
|
|
|
@$(GO) vet $(GO_FILES)
|
2019-07-02 08:06:59 -05:00
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
lint-go: go-vet golangci-lint revive revive-alerting gosec ## Run all code checks for backend.
|
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
|
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
|
|
|
|
|
|
|
|
build-docker-dev: ## Build Docker image for development (fast).
|
|
|
|
@echo "build development container"
|
|
|
|
@echo "\033[92mInfo:\033[0m the frontend code is expected to be built already."
|
|
|
|
$(GO) run build.go -goos linux -pkg-arch amd64 ${OPT} build pkg-archive latest
|
|
|
|
cp dist/grafana-latest.linux-x64.tar.gz packaging/docker
|
|
|
|
cd packaging/docker && docker build --tag grafana/grafana:dev .
|
|
|
|
|
|
|
|
build-docker-full: ## Build Docker image for development.
|
|
|
|
@echo "build docker container"
|
|
|
|
docker build --tag grafana/grafana:dev .
|
|
|
|
|
|
|
|
##@ 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
|
|
|
|
# example: make devenv sources=postgres,openldap
|
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
|
2019-10-22 09:03:22 -05:00
|
|
|
devenv: devenv-down ## Start optional services, e.g. postgres, prometheus, and elasticsearch.
|
2019-05-24 20:38:01 -05:00
|
|
|
$(eval targets := $(shell echo '$(sources)' | tr "," " "))
|
|
|
|
|
|
|
|
@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
|
|
|
|
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
|
|
|
|
|
|
|
##@ 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
|
|
|
|
# this target or run the individual scripts below directly.
|
|
|
|
protobuf: ## Compile protobuf definitions
|
|
|
|
bash scripts/protobuf-check.sh
|
|
|
|
bash pkg/plugins/backendplugin/pluginextensionv2/generate.sh
|
|
|
|
|
2019-10-22 09:03:22 -05:00
|
|
|
clean: ## Clean up intermediate build artifacts.
|
|
|
|
@echo "cleaning"
|
|
|
|
rm -rf node_modules
|
|
|
|
rm -rf public/build
|
|
|
|
|
|
|
|
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)
|