Dragonfly2
/
Makefile
495 строк · 17.2 Кб
1# Copyright The Dragonfly Authors.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15PROJECT_NAME := "d7y.io/dragonfly/v2"16DFGET_NAME := "dfget"17DFCACHE_NAME := "dfcache"18DFSTORE_NAME := "dfstore"19SEMVER := "2.1.0"20VERSION_RELEASE := "1"21PKG := "$(PROJECT_NAME)"22PKG_LIST := $(shell go list ${PKG}/... | grep -v /vendor/ | grep -v '\(/test/\)')23GIT_COMMIT := $(shell git rev-parse --verify HEAD --short=7)24GIT_COMMIT_LONG := $(shell git rev-parse --verify HEAD)25DFGET_ARCHIVE_PREFIX := "$(DFGET_NAME)_$(SEMVER)-$(VERSION_RELEASE)_$(GIT_COMMIT)"26DFCACHE_ARCHIVE_PREFIX := "$(DFCACHE_NAME)_$(SEMVER)-$(VERSION_RELEASE)_$(GIT_COMMIT)"27DFSTORE_ARCHIVE_PREFIX := "$(DFSTORE_NAME)_$(SEMVER)-$(VERSION_RELEASE)_$(GIT_COMMIT)"28
29all: help30
31# Prepare required folders for build.
32build-dirs:33@mkdir -p ./bin34.PHONY: build-dirs35
36# Build dragonfly.
37docker-build: docker-build-dfdaemon docker-build-scheduler docker-build-manager docker-build-trainer38@echo "Build image done."39.PHONY: docker-build40
41# Push dragonfly images.
42docker-push: docker-push-dfdaemon docker-push-scheduler docker-push-manager docker-build-trainer43@echo "Push image done."44.PHONY: docker-push45
46# Build dfdaemon image.
47docker-build-dfdaemon:48@echo "Begin to use docker build dfdaemon image."49./hack/docker-build.sh dfdaemon
50.PHONY: docker-build-dfdaemon51
52# Build scheduler image.
53docker-build-scheduler:54@echo "Begin to use docker build scheduler image."55./hack/docker-build.sh scheduler
56.PHONY: docker-build-scheduler57
58# Build manager image.
59docker-build-manager:60@echo "Begin to use docker build manager image."61./hack/docker-build.sh manager
62.PHONY: docker-build-manager63
64# Build trainer image.
65docker-build-trainer:66@echo "Begin to use docker build trainer image."67./hack/docker-build.sh trainer
68.PHONY: docker-build-trainer69
70# Build testing tools image.
71docker-build-testing-tools: build-dirs72@echo "Begin to testing tools image."73./test/tools/no-content-length/build.sh
74.PHONY: docker-build-testing-tools75
76# Push dfdaemon image.
77docker-push-dfdaemon: docker-build-dfdaemon78@echo "Begin to push dfdaemon docker image."79./hack/docker-push.sh dfdaemon
80.PHONY: docker-push-dfdaemon81
82# Push scheduler image.
83docker-push-scheduler: docker-build-scheduler84@echo "Begin to push scheduler docker image."85./hack/docker-push.sh scheduler
86.PHONY: docker-push-scheduler87
88# Push manager image.
89docker-push-manager: docker-build-manager90@echo "Begin to push manager docker image."91./hack/docker-push.sh manager
92.PHONY: docker-push-manager93
94# Push trainer image.
95docker-push-trainer: docker-build-trainer96@echo "Begin to push trainer docker image."97./hack/docker-push.sh trainer
98.PHONY: docker-push-trainer99
100# Build dragonfly.
101build: build-manager build-scheduler build-trainer build-dfget build-dfcache build-dfstore102.PHONY: build103
104# Build dfget.
105build-dfget: build-dirs106@echo "Begin to build dfget."107./hack/build.sh dfget
108.PHONY: build-dfget109
110# Build linux dfget.
111build-linux-dfget: build-dirs112@echo "Begin to build linux dfget."113GOOS=linux GOARCH=amd64 ./hack/build.sh dfget114.PHONY: build-linux-dfget115
116# Build dfcache.
117build-dfcache: build-dirs118@echo "Begin to build dfcache."119./hack/build.sh dfcache
120.PHONY: build-dfcache121
122# Build linux dfcache.
123build-linux-dfcache: build-dirs124@echo "Begin to build linux dfcache."125GOOS=linux GOARCH=amd64 ./hack/build.sh dfcache126.PHONY: build-linux-dfcache127
128# Build dfstore.
129build-dfstore: build-dirs130@echo "Begin to build dfstore."131./hack/build.sh dfstore
132.PHONY: build-dfstore133
134# Build linux dfcache.
135build-linux-dfstore: build-dirs136@echo "Begin to build linux dfstore."137GOOS=linux GOARCH=amd64 ./hack/build.sh dfstore138.PHONY: build-linux-dfstore139
140# Build scheduler.
141build-scheduler: build-dirs142@echo "Begin to build scheduler."143./hack/build.sh scheduler
144.PHONY: build-scheduler145
146# Build manager.
147build-manager: build-dirs build-manager-console148@echo "Begin to build manager."149make build-manager-server
150.PHONY: build-manager151
152# Build manager server.
153build-manager-server: build-dirs154@echo "Begin to build manager server."155./hack/build.sh manager
156.PHONY: build-manager157
158# Build manager console.
159build-manager-console: build-dirs160@echo "Begin to build manager console."161./hack/build.sh manager-console
162.PHONY: build-manager-console163
164# Build trainer.
165build-trainer: build-dirs166@echo "Begin to build trainer."167./hack/build.sh trainer
168.PHONY: build-trainer169
170# Install dfget.
171install-dfget:172@echo "Begin to install dfget."173./hack/install.sh install dfget
174.PHONY: install-dfget175
176# Install scheduler.
177install-scheduler:178@echo "Begin to install scheduler."179./hack/install.sh install scheduler
180.PHONY: install-scheduler181
182# Install manager.
183install-manager:184@echo "Begin to install manager."185./hack/install.sh install manager
186.PHONY: install-manager187
188# Install trainer.
189install-trainer:190@echo "Begin to install trainer."191./hack/install.sh install trainer
192.PHONY: install-trainer193
194# Build rpm dfget.
195build-rpm-dfget: build-linux-dfget196@echo "Begin to build rpm dfget."197@docker run --rm \198-v "$(PWD)/build:/root/build" \199-v "$(PWD)/build/package/docs:/root/docs" \200-v "$(PWD)/LICENSE:/root/License" \201-v "$(PWD)/CHANGELOG.md:/root/CHANGELOG.md" \202-v "$(PWD)/bin:/root/bin" \203-e "SEMVER=$(SEMVER)" \204-e "VERSION_RELEASE=$(VERSION_RELEASE)" \205goreleaser/nfpm pkg \
206--config /root/build/package/nfpm/dfget.yaml \
207--target /root/bin/$(DFGET_ARCHIVE_PREFIX)_linux_amd64.rpm208@echo "Build package output: ./bin/$(DFGET_ARCHIVE_PREFIX)_linux_amd64.rpm"209.PHONY: build-rpm-dfget210
211# Build rpm dfcache.
212build-rpm-dfcache: build-linux-dfcache build-dfcache-man-page213@echo "Begin to build rpm dfcache."214@docker run --rm \215-v "$(PWD)/build:/root/build" \216-v "$(PWD)/build/package/docs:/root/docs" \217-v "$(PWD)/LICENSE:/root/License" \218-v "$(PWD)/CHANGELOG.md:/root/CHANGELOG.md" \219-v "$(PWD)/bin:/root/bin" \220-e "SEMVER=$(SEMVER)" \221-e "VERSION_RELEASE=$(VERSION_RELEASE)" \222goreleaser/nfpm pkg \
223--config /root/build/package/nfpm/dfcache.yaml \
224--target /root/bin/$(DFCACHE_ARCHIVE_PREFIX)_linux_amd64.rpm225@echo "Build package output: ./bin/$(DFCACHE_ARCHIVE_PREFIX)_linux_amd64.rpm"226.PHONY: build-rpm-dfcache227
228# Build rpm dfstore.
229build-rpm-dfstore: build-linux-dfstore230@echo "Begin to build rpm dfstore."231@docker run --rm \232-v "$(PWD)/build:/root/build" \233-v "$(PWD)/build/package/docs:/root/docs" \234-v "$(PWD)/LICENSE:/root/License" \235-v "$(PWD)/CHANGELOG.md:/root/CHANGELOG.md" \236-v "$(PWD)/bin:/root/bin" \237-e "SEMVER=$(SEMVER)" \238-e "VERSION_RELEASE=$(VERSION_RELEASE)" \239goreleaser/nfpm pkg \
240--config /root/build/package/nfpm/dfstore.yaml \
241--target /root/bin/$(DFSTORE_ARCHIVE_PREFIX)_linux_amd64.rpm242@echo "Build package output: ./bin/$(DFSTORE_ARCHIVE_PREFIX)_linux_amd64.rpm"243.PHONY: build-rpm-dfstore244
245# Build deb dfget.
246build-deb-dfget: build-linux-dfget247@echo "Begin to build deb dfget."248@docker run --rm \249-v "$(PWD)/build:/root/build" \250-v "$(PWD)/build/package/docs:/root/docs" \251-v "$(PWD)/LICENSE:/root/License" \252-v "$(PWD)/CHANGELOG.md:/root/CHANGELOG.md" \253-v "$(PWD)/bin:/root/bin" \254-e "SEMVER=$(SEMVER)" \255-e "VERSION_RELEASE=$(VERSION_RELEASE)" \256goreleaser/nfpm pkg \
257--config /root/build/package/nfpm/dfget.yaml \
258--target /root/bin/$(DFGET_ARCHIVE_PREFIX)_linux_amd64.deb259@echo "Build package output: ./bin/$(DFGET_ARCHIVE_PREFIX)_linux_amd64.deb"260.PHONY: build-deb-dfget261
262# Build deb dfcache.
263build-deb-dfcache: build-linux-dfcache build-dfcache-man-page264@echo "Begin to build deb dfcache."265@docker run --rm \266-v "$(PWD)/build:/root/build" \267-v "$(PWD)/build/package/docs:/root/docs" \268-v "$(PWD)/LICENSE:/root/License" \269-v "$(PWD)/CHANGELOG.md:/root/CHANGELOG.md" \270-v "$(PWD)/bin:/root/bin" \271-e "SEMVER=$(SEMVER)" \272-e "VERSION_RELEASE=$(VERSION_RELEASE)" \273goreleaser/nfpm pkg \
274--config /root/build/package/nfpm/dfcache.yaml \
275--target /root/bin/$(DFCACHE_ARCHIVE_PREFIX)_linux_amd64.deb276@echo "Build package output: ./bin/$(DFCACHE_ARCHIVE_PREFIX)_linux_amd64.deb"277.PHONY: build-deb-dfcache278
279# Build deb dfstore
280build-deb-dfstore: build-linux-dfstore281@echo "Begin to build deb dfstore"282@docker run --rm \283-v "$(PWD)/build:/root/build" \284-v "$(PWD)/build/package/docs:/root/docs" \285-v "$(PWD)/LICENSE:/root/License" \286-v "$(PWD)/CHANGELOG.md:/root/CHANGELOG.md" \287-v "$(PWD)/bin:/root/bin" \288-e "SEMVER=$(SEMVER)" \289-e "VERSION_RELEASE=$(VERSION_RELEASE)" \290goreleaser/nfpm pkg \
291--config /root/build/package/nfpm/dfstore.yaml \
292--target /root/bin/$(DFSTORE_ARCHIVE_PREFIX)_linux_amd64.deb293@echo "Build package output: ./bin/$(DFSTORE_ARCHIVE_PREFIX)_linux_amd64.deb"294.PHONY: build-deb-dfstore295
296# Generate man page.
297build-man-page: build-dfget-man-page build-dfcache-man-page build-dfstore-man-page298.PHONY: build-man-page299
300# Generate dfget man page.
301build-dfget-man-page:302@pandoc -s -t man ./build/package/docs/dfget.1.md -o ./build/package/docs/dfget.1303.PHONY: build-dfget-man-page304
305# Genrate dfcache man pages.
306build-dfcache-man-page:307@pandoc -s -t man ./build/package/docs/dfcache/dfcache.md -o ./build/package/docs/dfcache/dfcache.1308@pandoc -s -t man ./build/package/docs/dfcache/dfcache_delete.md -o ./build/package/docs/dfcache/dfcache-delete.1309@pandoc -s -t man ./build/package/docs/dfcache/dfcache_doc.md -o ./build/package/docs/dfcache/dfcache-doc.1310@pandoc -s -t man ./build/package/docs/dfcache/dfcache_export.md -o ./build/package/docs/dfcache/dfcache-export.1311@pandoc -s -t man ./build/package/docs/dfcache/dfcache_import.md -o ./build/package/docs/dfcache/dfcache-import.1312@pandoc -s -t man ./build/package/docs/dfcache/dfcache_plugin.md -o ./build/package/docs/dfcache/dfcache-plugin.1313@pandoc -s -t man ./build/package/docs/dfcache/dfcache_stat.md -o ./build/package/docs/dfcache/dfcache-stat.1314@pandoc -s -t man ./build/package/docs/dfcache/dfcache_version.md -o ./build/package/docs/dfcache/dfcache-version.1315.PHONY: build-dfcache-man-page316
317# Genrate dfstore man pages.
318build-dfstore-man-page:319@pandoc -s -t man ./build/package/docs/dfstore/dfstore.md -o ./build/package/docs/dfstore/dfstore.1320@pandoc -s -t man ./build/package/docs/dfstore/dfstore_copy.md -o ./build/package/docs/dfstore/dfstore-copy.1321@pandoc -s -t man ./build/package/docs/dfstore/dfstore_remove.md -o ./build/package/docs/dfstore/dfstore-remove.1322@pandoc -s -t man ./build/package/docs/dfstore/dfstore_version.md -o ./build/package/docs/dfstore/dfstore-version.1323.PHONY: build-dfstore-man-page324
325# Generate e2e sha256sum.
326build-e2e-sha256sum:327@GOOS=linux GOARCH=amd64 go build -o /tmp/sha256sum-offset test/tools/sha256sum-offset/main.go328.PHONY: build-e2e-sha256sum329
330# Generate e2e download grpc test binary.
331build-e2e-download-grpc-test:332@GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o /tmp/download-grpc-test test/tools/download-grpc-test/main.go333.PHONY: build-e2e-download-grpc-test334
335# Run unittests.
336test:337@go test -v -race -short ${PKG_LIST}338.PHONY: test339
340# Run tests with coverage.
341test-coverage:342@go test -v -race -short ${PKG_LIST} -coverprofile cover.out -covermode=atomic343@cat cover.out >> coverage.txt344.PHONY: test-coverage345
346# Run github actions E2E tests with coverage.
347actions-e2e-test-coverage:348@ginkgo -v -r --race --fail-fast --cover --trace --show-node-events test/e2e349@cat coverprofile.out >> coverage.txt350.PHONY: actions-e2e-test-coverage351
352# Install E2E tests environment.
353install-e2e-test:354@./hack/install-e2e-test.sh355.PHONY: install-e2e-test356
357# Run E2E tests.
358e2e-test: install-e2e-test build-e2e-sha256sum build-e2e-download-grpc-test359@ginkgo -v -r --race --fail-fast --cover --trace --show-node-events test/e2e360.PHONY: e2e-test361
362# Run E2E tests with coverage.
363e2e-test-coverage: install-e2e-test build-e2e-sha256sum build-e2e-download-grpc-test364@ginkgo -v -r --race --fail-fast --cover --trace --show-node-events test/e2e365@cat coverprofile.out >> coverage.txt366.PHONY: e2e-test-coverage367
368# Clean E2E tests.
369clean-e2e-test:370@kind delete cluster371@echo "cleaning log file."372@rm -rf test/e2e/*.log373.PHONY: clean-e2e-test374
375# Kind load dragonfly.
376kind-load: kind-load-scheduler kind-load-dfdaemon kind-load-manager kind-load-trainer kind-load-testing-tools377@echo "Kind load image done."378.PHONY: kind-load379
380# Run kind load docker scheduler.
381kind-load-scheduler:382@./hack/kind-load.sh scheduler383.PHONY: kind-load-scheduler384
385# Run kind load docker dfget.
386kind-load-dfdaemon:387@./hack/kind-load.sh dfdaemon388.PHONY: kind-load-dfget389
390# Run kind load docker manager.
391kind-load-manager:392@./hack/kind-load.sh manager393.PHONY: kind-load-manager394
395# Run kind load docker trainer.
396kind-load-trainer:397@./hack/kind-load.sh trainer398.PHONY: kind-load-trainer399
400# Run kind load docker testing tools.
401kind-load-testing-tools:402@./hack/kind-load.sh no-content-length403.PHONY: kind-load-testing-tools404
405# Run code lint.
406lint: markdownlint407@echo "Begin to golangci-lint."408@golangci-lint run409.PHONY: lint410
411# Run markdown lint.
412markdownlint:413@echo "Begin to markdownlint."414@./hack/markdownlint.sh415.PHONY: markdownlint416
417# Run go generate.
418generate:419@go generate ${PKG_LIST}420.PHONY: generate421
422# Generate swagger files.
423swag:424@swag init --parseDependency --parseInternal -g cmd/manager/main.go -o api/manager425
426# Generate changelog.
427changelog:428@git-chglog -o CHANGELOG.md429.PHONY: changelog430
431# Clear compiled files.
432clean:433@go clean434@rm -rf bin .go .cache435.PHONY: clean436
437help:438@echo "make build-dirs prepare required folders for build"439@echo "make docker-build build dragonfly image"440@echo "make docker-push push dragonfly image"441@echo "make docker-build-dfdaemon build dfdaemon image"442@echo "make docker-build-scheduler build scheduler image"443@echo "make docker-build-manager build manager image"444@echo "make docker-build-trainer build trainer image"445@echo "make docker-push-dfdaemon push dfdaemon image"446@echo "make docker-push-scheduler push scheduler image"447@echo "make docker-push-manager push manager image"448@echo "make docker-push-trainer push trainer image"449@echo "make build build dragonfly"450@echo "make build-dfget build dfget"451@echo "make build-linux-dfget build linux dfget"452@echo "make build-dfcache build dfcache"453@echo "make build-linux-dfcache build linux dfcache"454@echo "make build-dfstore build dfstore"455@echo "make build-linux-dfstore build linux dfstore"456@echo "make build-scheduler build scheduler"457@echo "make build-manager build manager"458@echo "make build-manager-server build manager server"459@echo "make build-manager-console build manager console"460@echo "make build-trainer build trainer"461@echo "make build-e2e-sha256sum build sha256sum test tool"462@echo "make build-e2e-download-grpc-test build download grpc test tool"463@echo "make install-dfget install dfget"464@echo "make install-scheduler install scheduler"465@echo "make install-manager install manager"466@echo "make install-trainer install trainer"467@echo "make build-rpm-dfget build rpm dfget"468@echo "make build-rpm-dfcache build rpm dfcache"469@echo "make build-rpm-dfstore build rpm dfstore"470@echo "make build-deb-dfget build deb dfget"471@echo "make build-deb-dfcache build deb dfcache"472@echo "make build-deb-dfstore build deb dfstore"473@echo "make build-man-page generate man page"474@echo "make build-dfget-man-page generate dfget man page"475@echo "make build-dfcache-man-page generate dfcache man page"476@echo "make build-dfstore-man-page generate dfstore man page"477@echo "make test run unit tests"478@echo "make test-coverage run tests with coverage"479@echo "make actions-e2e-test-coverage run github actons E2E tests with coverage"480@echo "make install-e2e-test install E2E tests environment"481@echo "make e2e-test run e2e tests"482@echo "make e2e-test-coverage run e2e tests with coverage"483@echo "make clean-e2e-test clean e2e tests"484@echo "make kind-load kind load docker image"485@echo "make kind-load-scheduler kind load scheduler docker image"486@echo "make kind-load-dfdaemon kind load dfdaemon docker image"487@echo "make kind-load-manager kind load manager docker image"488@echo "make kind-load-trainer kind load trainer docker image"489@echo "make kind-load-testing-tools kind load testing tools docker image"490@echo "make lint run code lint"491@echo "make markdownlint run markdown lint"492@echo "make generate run go generate"493@echo "make swag generate swagger api docs"494@echo "make changelog generate CHANGELOG.md"495@echo "make clean clean"496