350 lines
11 KiB
Makefile
350 lines
11 KiB
Makefile
# Copyright The Dragonfly Authors.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
PROJECT_NAME := "d7y.io/dragonfly/v2"
|
|
DFGET_NAME := "dfget"
|
|
SEMVER := "2.0.1"
|
|
VERSION_RELEASE := "1"
|
|
PKG := "$(PROJECT_NAME)"
|
|
PKG_LIST := $(shell go list ${PKG}/... | grep -v /vendor/ | grep -v '\(/test/\)')
|
|
GIT_COMMIT := $(shell git rev-parse --verify HEAD --short=7)
|
|
GIT_COMMIT_LONG := $(shell git rev-parse --verify HEAD)
|
|
DFGET_ARCHIVE_PREFIX := "$(DFGET_NAME)_$(SEMVER)-$(VERSION_RELEASE)_$(GIT_COMMIT)"
|
|
|
|
all: help
|
|
|
|
# Prepare required folders for build
|
|
build-dirs:
|
|
@mkdir -p ./bin
|
|
.PHONY: build-dirs
|
|
|
|
# Build dragonlfy
|
|
docker-build: docker-build-cdn docker-build-dfdaemon docker-build-scheduler docker-build-manager
|
|
@echo "Build image done."
|
|
.PHONY: docker-build
|
|
|
|
# Push dragonfly images
|
|
docker-push: docker-push-cdn docker-push-dfdaemon docker-push-scheduler docker-push-manager
|
|
@echo "Push image done."
|
|
.PHONY: docker-push
|
|
|
|
# Build cdn image
|
|
docker-build-cdn:
|
|
@echo "Begin to use docker build cdn image."
|
|
./hack/docker-build.sh cdn
|
|
.PHONY: docker-build-cdn
|
|
|
|
# Build dfdaemon image
|
|
docker-build-dfdaemon:
|
|
@echo "Begin to use docker build dfdaemon image."
|
|
./hack/docker-build.sh dfdaemon
|
|
.PHONY: docker-build-dfdaemon
|
|
|
|
# Build scheduler image
|
|
docker-build-scheduler:
|
|
@echo "Begin to use docker build scheduler image."
|
|
./hack/docker-build.sh scheduler
|
|
.PHONY: docker-build-scheduler
|
|
|
|
# Build manager image
|
|
docker-build-manager:
|
|
@echo "Begin to use docker build manager image."
|
|
./hack/docker-build.sh manager
|
|
.PHONY: docker-build-manager
|
|
|
|
# Build testing tools image
|
|
docker-build-testing-tools: build-dirs
|
|
@echo "Begin to testing tools image."
|
|
./test/tools/no-content-length/build.sh
|
|
.PHONY: docker-build-testing-tools
|
|
|
|
# Push cdn image
|
|
docker-push-cdn: docker-build-cdn
|
|
@echo "Begin to push cdn docker image."
|
|
./hack/docker-push.sh cdn
|
|
.PHONY: docker-push-cdn
|
|
|
|
# Push dfdaemon image
|
|
docker-push-dfdaemon: docker-build-dfdaemon
|
|
@echo "Begin to push dfdaemon docker image."
|
|
./hack/docker-push.sh dfdaemon
|
|
.PHONY: docker-push-dfdaemon
|
|
|
|
# Push scheduler image
|
|
docker-push-scheduler: docker-build-scheduler
|
|
@echo "Begin to push scheduler docker image."
|
|
./hack/docker-push.sh scheduler
|
|
.PHONY: docker-push-scheduler
|
|
|
|
# Push manager image
|
|
docker-push-manager: docker-build-manager
|
|
@echo "Begin to push manager docker image."
|
|
./hack/docker-push.sh manager
|
|
.PHONY: docker-push-manager
|
|
|
|
# Build dragonfly
|
|
build: build-cdn build-scheduler build-dfget build-manager
|
|
.PHONY: build
|
|
|
|
# Build cdn
|
|
build-cdn: build-dirs
|
|
@echo "Begin to build cdn."
|
|
./hack/build.sh cdn
|
|
.PHONY: build-cdn
|
|
|
|
# Build dfget
|
|
build-dfget: build-dirs
|
|
@echo "Begin to build dfget."
|
|
./hack/build.sh dfget
|
|
.PHONY: build-dfget
|
|
|
|
# Build linux dfget
|
|
build-linux-dfget: build-dirs
|
|
@echo "Begin to build linux dfget."
|
|
GOOS=linux GOARCH=amd64 ./hack/build.sh dfget
|
|
.PHONY: build-linux-dfget
|
|
|
|
# Build scheduler
|
|
build-scheduler: build-dirs
|
|
@echo "Begin to build scheduler."
|
|
./hack/build.sh scheduler
|
|
.PHONY: build-scheduler
|
|
|
|
# Build manager
|
|
build-manager: build-dirs
|
|
@echo "Begin to build manager."
|
|
./hack/build.sh manager
|
|
.PHONY: build-manager
|
|
|
|
# Build manager console
|
|
build-manager-console: build-dirs
|
|
@echo "Begin to build manager."
|
|
./hack/build.sh manager-console
|
|
.PHONY: build-manager-console
|
|
|
|
# Install cdn
|
|
install-cdn:
|
|
@echo "Begin to install cdn."
|
|
./hack/install.sh install cdn
|
|
.PHONY: install-cdn
|
|
|
|
# Install dfget
|
|
install-dfget:
|
|
@echo "Begin to install dfget."
|
|
./hack/install.sh install dfget
|
|
.PHONY: install-dfget
|
|
|
|
# Install scheduler
|
|
install-scheduler:
|
|
@echo "Begin to install scheduler."
|
|
./hack/install.sh install scheduler
|
|
.PHONY: install-scheduler
|
|
|
|
# Install manager
|
|
install-manager:
|
|
@echo "Begin to install manager."
|
|
./hack/install.sh install manager
|
|
.PHONY: install-manager
|
|
|
|
# Build rpm dfget
|
|
build-rpm-dfget: build-linux-dfget
|
|
@echo "Begin to build rpm dfget"
|
|
@docker run --rm \
|
|
-v "$(PWD)/build:/root/build" \
|
|
-v "$(PWD)/docs:/root/docs" \
|
|
-v "$(PWD)/LICENSE:/root/License" \
|
|
-v "$(PWD)/CHANGELOG.md:/root/CHANGELOG.md" \
|
|
-v "$(PWD)/bin:/root/bin" \
|
|
-e "SEMVER=$(SEMVER)" \
|
|
-e "VERSION_RELEASE=$(VERSION_RELEASE)" \
|
|
goreleaser/nfpm pkg \
|
|
--config /root/build/package/nfpm/dfget.yaml \
|
|
--target /root/bin/$(DFGET_ARCHIVE_PREFIX)_linux_amd64.rpm
|
|
@echo "Build package output: ./bin/$(DFGET_ARCHIVE_PREFIX)_linux_amd64.rpm"
|
|
.PHONY: build-rpm-dfget
|
|
|
|
# Build deb dfget
|
|
build-deb-dfget: build-linux-dfget
|
|
@echo "Begin to build deb dfget"
|
|
@docker run --rm \
|
|
-v "$(PWD)/build:/root/build" \
|
|
-v "$(PWD)/docs:/root/docs" \
|
|
-v "$(PWD)/LICENSE:/root/License" \
|
|
-v "$(PWD)/CHANGELOG.md:/root/CHANGELOG.md" \
|
|
-v "$(PWD)/bin:/root/bin" \
|
|
-e "SEMVER=$(SEMVER)" \
|
|
-e "VERSION_RELEASE=$(VERSION_RELEASE)" \
|
|
goreleaser/nfpm pkg \
|
|
--config /root/build/package/nfpm/dfget.yaml \
|
|
--target /root/bin/$(DFGET_ARCHIVE_PREFIX)_linux_amd64.deb
|
|
@echo "Build package output: ./bin/$(DFGET_ARCHIVE_PREFIX)_linux_amd64.deb"
|
|
.PHONY: build-deb-dfget
|
|
|
|
# Generate dfget man page
|
|
build-dfget-man-page:
|
|
@pandoc -s -t man ./docs/en/cli-reference/dfget.1.md -o ./docs/en/cli-reference/dfget.1
|
|
.PHONY: build-dfget-man-page
|
|
|
|
# Generate e2e sha256sum
|
|
build-e2e-sha256sum:
|
|
@GOOS=linux GOARCH=amd64 go build -o /tmp/sha256sum-offset test/tools/sha256sum-offset/main.go
|
|
.PHONY: build-e2e-sha256sum
|
|
|
|
# Run unittests
|
|
test:
|
|
@go test -v -gcflags "all=-l" -race -short ${PKG_LIST}
|
|
.PHONY: test
|
|
|
|
# Run tests with coverage
|
|
test-coverage:
|
|
@go test -v -gcflags "all=-l" -race -short ${PKG_LIST} -coverprofile cover.out -covermode=atomic
|
|
@cat cover.out >> coverage.txt
|
|
.PHONY: test-coverage
|
|
|
|
# Run github actions E2E tests with coverage
|
|
actions-e2e-test-coverage:
|
|
@ginkgo -v -r --race --fail-fast --cover --trace --progress test/e2e
|
|
@cat coverprofile.out >> coverage.txt
|
|
.PHONY: actions-e2e-test-coverage
|
|
|
|
# Install E2E tests environment
|
|
install-e2e-test:
|
|
@./hack/install-e2e-test.sh
|
|
.PHONY: install-e2e-test
|
|
|
|
# Run E2E tests
|
|
e2e-test: install-e2e-test build-e2e-sha256sum
|
|
@ginkgo -v -r --race --fail-fast --cover --trace --progress test/e2e
|
|
.PHONY: e2e-test
|
|
|
|
# Run E2E tests with coverage
|
|
e2e-test-coverage: install-e2e-test build-e2e-sha256sum
|
|
@ginkgo -v -r --race --fail-fast --cover --trace --progress test/e2e
|
|
@cat coverprofile.out >> coverage.txt
|
|
.PHONY: e2e-test-coverage
|
|
|
|
# Clean E2E tests
|
|
clean-e2e-test:
|
|
@kind delete cluster
|
|
@echo "cleaning log file"
|
|
@rm -rf test/e2e/*.log
|
|
.PHONY: clean-e2e-test
|
|
|
|
# Kind load dragonlfy
|
|
kind-load: kind-load-cdn kind-load-scheduler kind-load-dfdaemon kind-load-manager kind-load-testing-tools
|
|
@echo "Kind load image done."
|
|
.PHONY: kind-load
|
|
|
|
# Run kind load docker-image cdn
|
|
kind-load-cdn:
|
|
@./hack/kind-load.sh cdn
|
|
.PHONY: kind-load-cdn
|
|
|
|
# Run kind load docker scheduler
|
|
kind-load-scheduler:
|
|
@./hack/kind-load.sh scheduler
|
|
.PHONY: kind-load-scheduler
|
|
|
|
# Run kind load docker dfget
|
|
kind-load-dfdaemon:
|
|
@./hack/kind-load.sh dfdaemon
|
|
.PHONY: kind-load-dfget
|
|
|
|
# Run kind load docker manager
|
|
kind-load-manager:
|
|
@./hack/kind-load.sh manager
|
|
.PHONY: kind-load-manager
|
|
|
|
# Run kind load docker testing tools
|
|
kind-load-testing-tools:
|
|
@./hack/kind-load.sh no-content-length
|
|
.PHONY: kind-load-testing-tools
|
|
|
|
# Run code lint
|
|
lint: markdownlint
|
|
@echo "Begin to golangci-lint."
|
|
@golangci-lint run
|
|
.PHONY: lint
|
|
|
|
# Run markdown lint
|
|
markdownlint:
|
|
@echo "Begin to markdownlint."
|
|
@./hack/markdownlint.sh
|
|
.PHONY: markdownlint
|
|
|
|
# Run go generate
|
|
generate:
|
|
@go generate ${PKG_LIST}
|
|
.PHONY: generate
|
|
|
|
# Generate swagger files
|
|
swag:
|
|
@swag init --parseDependency --parseInternal -g cmd/manager/main.go -o api/manager
|
|
|
|
# Generate changelog
|
|
changelog:
|
|
@git-chglog -o CHANGELOG.md
|
|
.PHONY: changelog
|
|
|
|
# Clear compiled files
|
|
clean:
|
|
@go clean
|
|
@rm -rf bin .go .cache
|
|
.PHONY: clean
|
|
|
|
help:
|
|
@echo "make build-dirs prepare required folders for build"
|
|
@echo "make docker-build build dragonfly image"
|
|
@echo "make docker-push push dragonfly image"
|
|
@echo "make docker-build-cdn build CDN image"
|
|
@echo "make docker-build-dfdaemon build dfdaemon image"
|
|
@echo "make docker-build-scheduler build scheduler image"
|
|
@echo "make docker-push-cdn push CDN image"
|
|
@echo "make docker-push-dfdaemon push dfdaemon image"
|
|
@echo "make docker-push-scheduler push scheduler image"
|
|
@echo "make build build dragonfly"
|
|
@echo "make build-cdn build CDN"
|
|
@echo "make build-dfget build dfget"
|
|
@echo "make build-dfget-linux build linux dfget"
|
|
@echo "make build-scheduler build scheduler"
|
|
@echo "make build-manager build manager"
|
|
@echo "make build-manager-console build manager console"
|
|
@echo "make build-e2e-sha256sum build sha256sum test tool"
|
|
@echo "make install-cdn install CDN"
|
|
@echo "make install-dfget install dfget"
|
|
@echo "make install-scheduler install scheduler"
|
|
@echo "make install-manager install manager"
|
|
@echo "make build-rpm-dfget build rpm dfget"
|
|
@echo "make build-deb-dfget build deb dfget"
|
|
@echo "make build-dfget-man-page generate dfget man page"
|
|
@echo "make test run unit tests"
|
|
@echo "make test-coverage run tests with coverage"
|
|
@echo "make actions-e2e-test-coverage run github actons E2E tests with coverage"
|
|
@echo "make install-e2e-test install E2E tests environment"
|
|
@echo "make e2e-test run e2e tests"
|
|
@echo "make e2e-test-coverage run e2e tests with coverage"
|
|
@echo "make clean-e2e-test clean e2e tests"
|
|
@echo "make kind-load kind load docker image"
|
|
@echo "make kind-load-cdn kind load cdn docker image"
|
|
@echo "make kind-load-scheduler kind load scheduler docker image"
|
|
@echo "make kind-load-dfdaemon kind load dfdaemon docker image"
|
|
@echo "make kind-load-manager kind load manager docker image"
|
|
@echo "make kind-load-testing-tools kind load testing tools docker image"
|
|
@echo "make lint run code lint"
|
|
@echo "make markdownlint run markdown lint"
|
|
@echo "make swag generate swagger api docs"
|
|
@echo "make changelog generate CHANGELOG.md"
|
|
@echo "make generate run go generate"
|
|
@echo "make clean clean"
|