2019-05-22 23:16:55 +02:00
PKG_PREFIX := github.com/VictoriaMetrics/VictoriaMetrics
2021-04-10 14:46:53 +02:00
DATEINFO_TAG ?= $( shell date -u +'%Y%m%d-%H%M%S' )
2019-05-22 23:16:55 +02:00
BUILDINFO_TAG ?= $( shell echo $$ ( git describe --long --all | tr '/' '-' ) $$ ( \
2022-12-01 16:09:36 +01:00
git diff-index --quiet HEAD -- || echo '-dirty-' $$ ( git diff-index -u HEAD | openssl sha1 | cut -d' ' -f2 | cut -c 1-8) ) )
2022-12-20 19:37:59 +01:00
LATEST_TAG ?= cluster-latest
2019-05-22 23:16:55 +02:00
PKG_TAG ?= $( shell git tag -l --points-at HEAD)
i f e q ( $( PKG_TAG ) , )
PKG_TAG := $( BUILDINFO_TAG)
e n d i f
2021-04-10 14:46:53 +02:00
GO_BUILDINFO = -X '$(PKG_PREFIX)/lib/buildinfo.Version=$(APP_NAME)-$(DATEINFO_TAG)-$(BUILDINFO_TAG)'
2019-05-22 23:16:55 +02:00
2020-12-18 11:20:01 +01:00
.PHONY : $( MAKECMDGOALS )
2022-07-13 15:44:39 +02:00
i n c l u d e a p p / * / M a k e f i l e
i n c l u d e d e p l o y m e n t / * / M a k e f i l e
2023-08-29 11:06:55 +02:00
i n c l u d e d a s h b o a r d s / M a k e f i l e
2022-08-31 01:27:24 +02:00
i n c l u d e p a c k a g e / r e l e a s e / M a k e f i l e
2022-07-13 15:44:39 +02:00
2019-05-22 23:16:55 +02:00
all : \
2019-05-22 23:23:23 +02:00
vminsert \
vmselect \
2020-12-18 17:27:04 +01:00
vmstorage
2019-05-22 23:16:55 +02:00
2019-07-23 18:54:50 +02:00
all-pure : \
vminsert-pure \
vmselect-pure \
2020-12-18 17:27:04 +01:00
vmstorage-pure
2019-07-23 18:54:50 +02:00
2019-05-22 23:16:55 +02:00
clean :
rm -rf bin/*
2022-07-13 15:44:39 +02:00
vmcluster-linux-amd64 : \
vminsert-linux-amd64 \
vmselect-linux-amd64 \
vmstorage-linux-amd64
vmcluster-linux-arm64 : \
vminsert-linux-arm64 \
vmselect-linux-arm64 \
vmstorage-linux-arm64
vmcluster-linux-arm : \
vminsert-linux-arm \
vmselect-linux-arm \
vmstorage-linux-arm
vmcluster-linux-ppc64le : \
vminsert-linux-ppc64le \
vmselect-linux-ppc64le \
vmstorage-linux-ppc64le
vmcluster-linux-386 : \
vminsert-linux-386 \
vmselect-linux-386 \
vmstorage-linux-386
vmcluster-freebsd-amd64 : \
vminsert-freebsd-amd64 \
vmselect-freebsd-amd64 \
vmstorage-freebsd-amd64
vmcluster-openbsd-amd64 : \
vminsert-openbsd-amd64 \
vmselect-openbsd-amd64 \
vmstorage-openbsd-amd64
2023-03-25 23:33:41 +01:00
vmcluster-windows-amd64 : \
vminsert-windows-amd64 \
vmselect-windows-amd64 \
vmstorage-windows-amd64
2022-07-13 15:44:39 +02:00
vmcluster-crossbuild : \
vmcluster-linux-amd64 \
vmcluster-linux-arm64 \
vmcluster-linux-arm \
vmcluster-linux-ppc64le \
vmcluster-linux-386 \
vmcluster-freebsd-amd64 \
vmcluster-openbsd-amd64
2023-06-30 13:45:45 +02:00
publish : package -base \
2019-11-07 20:05:39 +01:00
publish-vminsert \
2020-02-16 15:55:28 +01:00
publish-vmselect \
2020-12-18 17:27:04 +01:00
publish-vmstorage
2019-05-22 23:23:23 +02:00
package : \
2019-11-07 20:05:39 +01:00
package-vminsert \
2020-02-16 15:55:28 +01:00
package-vmselect \
2020-12-18 17:27:04 +01:00
package-vmstorage
2019-05-22 23:16:55 +02:00
2021-11-08 11:29:10 +01:00
publish-release :
2023-08-29 13:10:27 +02:00
rm -rf bin/*
2022-12-20 21:27:04 +01:00
git checkout $( TAG) && LATEST_TAG = stable $( MAKE) release publish && \
git checkout $( TAG) -cluster && LATEST_TAG = cluster-stable $( MAKE) release publish && \
git checkout $( TAG) -enterprise && LATEST_TAG = enterprise-stable $( MAKE) release publish && \
git checkout $( TAG) -enterprise-cluster && LATEST_TAG = enterprise-cluster-stable $( MAKE) release publish
2021-11-08 11:29:10 +01:00
2019-08-15 13:05:17 +02:00
release : \
2020-12-18 17:27:04 +01:00
release-vmcluster
2019-11-07 20:05:39 +01:00
release-vmcluster : \
2022-07-13 14:42:48 +02:00
release-vmcluster-linux-amd64 \
2022-07-13 15:44:39 +02:00
release-vmcluster-linux-arm64 \
release-vmcluster-freebsd-amd64 \
2023-03-19 09:36:05 +01:00
release-vmcluster-openbsd-amd64 \
release-vmcluster-windows-amd64
2021-04-05 22:01:45 +02:00
2022-07-13 14:42:48 +02:00
release-vmcluster-linux-amd64 :
GOOS = linux GOARCH = amd64 $( MAKE) release-vmcluster-goos-goarch
2021-04-05 22:01:45 +02:00
2022-07-13 14:42:48 +02:00
release-vmcluster-linux-arm64 :
2022-07-13 15:44:39 +02:00
GOOS = linux GOARCH = arm64 $( MAKE) release-vmcluster-goos-goarch
release-vmcluster-freebsd-amd64 :
GOOS = freebsd GOARCH = amd64 $( MAKE) release-vmcluster-goos-goarch
release-vmcluster-openbsd-amd64 :
GOOS = openbsd GOARCH = amd64 $( MAKE) release-vmcluster-goos-goarch
2021-04-05 22:01:45 +02:00
2023-03-19 09:36:05 +01:00
release-vmcluster-windows-amd64 :
GOARCH = amd64 $( MAKE) release-vmcluster-windows-goarch
2022-07-13 14:42:48 +02:00
release-vmcluster-goos-goarch : \
vminsert-$( GOOS) -$( GOARCH) -prod \
vmselect-$( GOOS) -$( GOARCH) -prod \
vmstorage-$( GOOS) -$( GOARCH) -prod
2021-04-05 22:01:45 +02:00
cd bin && \
2022-07-13 14:42:48 +02:00
tar --transform= " flags=r;s|- $( GOOS) - $( GOARCH) || " -czf victoria-metrics-$( GOOS) -$( GOARCH) -$( PKG_TAG) .tar.gz \
vminsert-$( GOOS) -$( GOARCH) -prod \
vmselect-$( GOOS) -$( GOARCH) -prod \
vmstorage-$( GOOS) -$( GOARCH) -prod \
&& sha256sum victoria-metrics-$( GOOS) -$( GOARCH) -$( PKG_TAG) .tar.gz \
vminsert-$( GOOS) -$( GOARCH) -prod \
vmselect-$( GOOS) -$( GOARCH) -prod \
vmstorage-$( GOOS) -$( GOARCH) -prod \
| sed s/-$( GOOS) -$( GOARCH) -prod/-prod/ > victoria-metrics-$( GOOS) -$( GOARCH) -$( PKG_TAG) _checksums.txt
2022-07-13 15:44:39 +02:00
cd bin && rm -rf \
vminsert-$( GOOS) -$( GOARCH) -prod \
vmselect-$( GOOS) -$( GOARCH) -prod \
vmstorage-$( GOOS) -$( GOARCH) -prod
2019-08-15 13:05:17 +02:00
2023-03-19 09:36:05 +01:00
release-vmcluster-windows-goarch : \
vminsert-windows-$( GOARCH) -prod \
vmselect-windows-$( GOARCH) -prod \
vmstorage-windows-$( GOARCH) -prod
cd bin && \
zip victoria-metrics-windows-$( GOARCH) -$( PKG_TAG) .zip \
vminsert-windows-$( GOARCH) -prod.exe \
vmselect-windows-$( GOARCH) -prod.exe \
vmstorage-windows-$( GOARCH) -prod.exe \
&& sha256sum victoria-metrics-windows-$( GOARCH) -$( PKG_TAG) .zip \
vminsert-windows-$( GOARCH) -prod.exe \
vmselect-windows-$( GOARCH) -prod.exe \
vmstorage-windows-$( GOARCH) -prod.exe \
> victoria-metrics-windows-$( GOARCH) -$( PKG_TAG) _checksums.txt
cd bin && rm -rf \
vminsert-windows-$( GOARCH) -prod.exe \
vmselect-windows-$( GOARCH) -prod.exe \
vmstorage-windows-$( GOARCH) -prod.exe
2019-11-04 11:43:26 +01:00
pprof-cpu :
go tool pprof -trim_path= github.com/VictoriaMetrics/VictoriaMetrics@ $( PPROF_FILE)
2019-05-22 23:16:55 +02:00
fmt :
2022-07-13 15:44:39 +02:00
gofmt -l -w -s ./lib
gofmt -l -w -s ./app
2019-05-22 23:16:55 +02:00
vet :
2022-08-07 19:39:05 +02:00
go vet ./lib/...
go vet ./app/...
2019-05-22 23:16:55 +02:00
2023-07-13 20:51:56 +02:00
check-all : fmt vet golangci -lint govulncheck
2019-06-20 13:52:48 +02:00
2019-05-22 23:16:55 +02:00
test :
2022-08-07 19:39:05 +02:00
go test ./lib/... ./app/...
2019-06-20 13:52:48 +02:00
2020-03-05 11:02:06 +01:00
test-race :
2022-08-07 19:39:05 +02:00
go test -race ./lib/... ./app/...
2020-03-05 11:02:06 +01:00
2019-07-23 18:26:39 +02:00
test-pure :
2022-08-07 19:39:05 +02:00
CGO_ENABLED = 0 go test ./lib/... ./app/...
2019-07-23 18:54:50 +02:00
test-full :
2022-08-07 19:39:05 +02:00
go test -coverprofile= coverage.txt -covermode= atomic ./lib/... ./app/...
2019-07-23 18:26:39 +02:00
2019-10-17 17:22:56 +02:00
test-full-386 :
2022-08-07 19:39:05 +02:00
GOARCH = 386 go test -coverprofile= coverage.txt -covermode= atomic ./lib/... ./app/...
2019-10-17 17:22:56 +02:00
2019-05-22 23:16:55 +02:00
benchmark :
2022-08-07 19:39:05 +02:00
go test -bench= . ./lib/...
go test -bench= . ./app/...
2019-05-22 23:16:55 +02:00
2019-07-23 18:26:39 +02:00
benchmark-pure :
2022-08-07 19:39:05 +02:00
CGO_ENABLED = 0 go test -bench= . ./lib/...
CGO_ENABLED = 0 go test -bench= . ./app/...
2019-07-23 18:26:39 +02:00
2019-05-22 23:16:55 +02:00
vendor-update :
2022-07-13 15:44:39 +02:00
go get -u -d ./lib/...
go get -u -d ./app/...
2022-09-19 14:12:03 +02:00
go mod tidy -compat= 1.19
2022-07-13 15:44:39 +02:00
go mod vendor
2019-05-22 23:16:55 +02:00
2019-05-22 23:23:23 +02:00
app-local :
2022-08-07 19:39:05 +02:00
CGO_ENABLED = 1 go build $( RACE) -ldflags " $( GO_BUILDINFO) " -o bin/$( APP_NAME) $( RACE) $( PKG_PREFIX) /app/$( APP_NAME)
2019-07-23 18:54:50 +02:00
app-local-pure :
2022-08-07 19:39:05 +02:00
CGO_ENABLED = 0 go build $( RACE) -ldflags " $( GO_BUILDINFO) " -o bin/$( APP_NAME) -pure$( RACE) $( PKG_PREFIX) /app/$( APP_NAME)
2019-05-22 23:23:23 +02:00
2022-07-13 15:44:39 +02:00
app-local-goos-goarch :
2022-08-07 19:39:05 +02:00
CGO_ENABLED = $( CGO_ENABLED) GOOS = $( GOOS) GOARCH = $( GOARCH) go build $( RACE) -ldflags " $( GO_BUILDINFO) " -o bin/$( APP_NAME) -$( GOOS) -$( GOARCH) $( RACE) $( PKG_PREFIX) /app/$( APP_NAME)
2020-07-31 12:42:09 +02:00
2022-07-13 15:44:39 +02:00
app-local-windows-goarch :
2022-08-07 19:39:05 +02:00
CGO_ENABLED = 0 GOOS = windows GOARCH = $( GOARCH) go build $( RACE) -ldflags " $( GO_BUILDINFO) " -o bin/$( APP_NAME) -windows-$( GOARCH) $( RACE) .exe $( PKG_PREFIX) /app/$( APP_NAME)
2021-03-16 19:49:07 +01:00
2019-05-22 23:16:55 +02:00
quicktemplate-gen : install -qtc
qtc
install-qtc :
2022-09-08 17:43:02 +02:00
which qtc || go install github.com/valyala/quicktemplate/qtc@latest
2019-06-20 13:30:55 +02:00
golangci-lint : install -golangci -lint
2023-01-06 01:58:55 +01:00
golangci-lint run
2019-06-20 13:30:55 +02:00
install-golangci-lint :
2023-09-01 09:34:16 +02:00
which golangci-lint || curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $( shell go env GOPATH) /bin v1.54.2
2020-06-02 18:12:07 +02:00
2022-09-08 17:35:31 +02:00
govulncheck : install -govulncheck
govulncheck ./...
install-govulncheck :
which govulncheck || go install golang.org/x/vuln/cmd/govulncheck@latest
2021-05-10 10:54:35 +02:00
install-wwhrd :
2022-09-08 17:43:02 +02:00
which wwhrd || go install github.com/frapposelli/wwhrd@latest
2021-05-10 10:54:35 +02:00
check-licenses : install -wwhrd
wwhrd check -f .wwhrd.yml
2021-04-07 12:39:16 +02:00
copy-docs :
2023-07-04 11:38:39 +02:00
# The 'printf' function is used instead of 'echo' or 'echo -e' to handle line breaks (e.g. '\n') in the same way on different operating systems (MacOS/Ubuntu Linux/Arch Linux) and their shells (bash/sh/zsh/fish).
# For details, see https://github.com/VictoriaMetrics/VictoriaMetrics/pull/4548#issue-1782796419 and https://stackoverflow.com/questions/8467424/echo-newline-in-bash-prints-literal-n
2023-05-25 21:26:36 +02:00
echo "---" > ${ DST }
2022-10-03 13:13:07 +02:00
@if [ ${ ORDER } -ne 0 ] ; then \
2023-05-25 21:26:36 +02:00
echo " sort: ${ ORDER } " >> ${ DST } ; \
echo " weight: ${ ORDER } " >> ${ DST } ; \
2023-07-04 11:38:39 +02:00
printf " menu:\n docs:\n parent: 'victoriametrics'\n weight: ${ ORDER } \n " >> ${ DST } ; \
2022-10-03 13:13:07 +02:00
fi
2023-05-25 21:26:36 +02:00
echo " title: ${ TITLE } " >> ${ DST }
@if [ ${ OLD_URL } ] ; then \
2023-07-04 11:38:39 +02:00
printf " aliases:\n - ${ OLD_URL } \n " >> ${ DST } ; \
2023-05-25 21:26:36 +02:00
fi
echo "---" >> ${ DST }
2021-04-07 12:39:16 +02:00
cat ${ SRC } >> ${ DST }
2022-10-06 14:06:39 +02:00
sed -i= '.tmp' 's/<img src=\"docs\//<img src=\"/' ${ DST }
2022-10-06 14:24:56 +02:00
rm -rf docs/*.tmp
2021-04-07 12:39:16 +02:00
2023-05-25 21:26:36 +02:00
# Copies docs for all components and adds the order/weight tag, title, menu position and alias with the backward compatible link for the old site.
# For ORDER=0 it adds no order tag/weight tag.
2023-05-26 10:22:29 +02:00
# FOR OLD_URL - relative link, used for backward compatibility with the link from documentation based on GitHub pages (old one)
2023-07-06 20:01:19 +02:00
# FOR OLD_URL='' it adds no alias, it should be empty for every new page, don't change it for already existing links.
2022-10-03 13:13:07 +02:00
# Images starting with <img src="docs/ are replaced with <img src="
2023-05-25 21:29:39 +02:00
# Cluster docs are supposed to be ordered as 2nd.
2022-10-03 13:13:07 +02:00
# The rest of docs is ordered manually.
2020-06-02 18:12:07 +02:00
docs-sync :
2023-05-25 21:26:36 +02:00
SRC = README.md DST = docs/Cluster-VictoriaMetrics.md OLD_URL = '/Cluster-VictoriaMetrics.html' ORDER = 2 TITLE = 'Cluster version' $( MAKE) copy-docs
SRC = app/vmagent/README.md DST = docs/vmagent.md OLD_URL = '/vmagent.html' ORDER = 3 TITLE = vmagent $( MAKE) copy-docs
SRC = app/vmalert/README.md DST = docs/vmalert.md OLD_URL = '/vmalert.html' ORDER = 4 TITLE = vmalert $( MAKE) copy-docs
SRC = app/vmauth/README.md DST = docs/vmauth.md OLD_URL = '/vmauth.html' ORDER = 5 TITLE = vmauth $( MAKE) copy-docs
SRC = app/vmbackup/README.md DST = docs/vmbackup.md OLD_URL = '/vmbackup.html' ORDER = 6 TITLE = vmbackup $( MAKE) copy-docs
SRC = app/vmrestore/README.md DST = docs/vmrestore.md OLD_URL = '/vmrestore.html' ORDER = 7 TITLE = vmrestore $( MAKE) copy-docs
SRC = app/vmctl/README.md DST = docs/vmctl.md OLD_URL = '/vmctl.html' ORDER = 8 TITLE = vmctl $( MAKE) copy-docs
SRC = app/vmgateway/README.md DST = docs/vmgateway.md OLD_URL = '/vmgateway.html' ORDER = 9 TITLE = vmgateway $( MAKE) copy-docs
SRC = app/vmbackupmanager/README.md DST = docs/vmbackupmanager.md OLD_URL = '/vmbackupmanager.html' ORDER = 10 TITLE = vmbackupmanager $( MAKE) copy-docs