mirror of https://github.com/chaos-mesh/chaosd.git
127 lines
3.8 KiB
Makefile
127 lines
3.8 KiB
Makefile
LDFLAGS = $(if $(IMG_LDFLAGS),$(IMG_LDFLAGS),$(if $(DEBUGGER),,-s -w) $(shell ./hack/version.sh))
|
|
|
|
# Enable GO111MODULE=on explicitly, disable it with GO111MODULE=off when necessary.
|
|
export GO111MODULE := on
|
|
GOOS := $(if $(GOOS),$(GOOS),"")
|
|
GOARCH := $(if $(GOARCH),$(GOARCH),"")
|
|
GOENV := GO15VENDOREXPERIMENT="1" CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH)
|
|
CGOENV := GO15VENDOREXPERIMENT="1" CGO_ENABLED=1 GOOS=$(GOOS) GOARCH=$(GOARCH)
|
|
GO := $(GOENV) go
|
|
CGO := $(CGOENV) go
|
|
GOTEST := TEST_USE_EXISTING_CLUSTER=false NO_PROXY="${NO_PROXY},testhost" go test
|
|
SHELL := /usr/bin/env bash
|
|
BYTEMAN_DIR := byteman-chaos-mesh-download-v4.0.18-0.9
|
|
|
|
# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
|
|
ifeq (,$(shell go env GOBIN))
|
|
GOBIN=$(shell go env GOPATH)/bin
|
|
else
|
|
GOBIN=$(shell go env GOBIN)
|
|
endif
|
|
|
|
IMAGE_TAG := $(if $(IMAGE_TAG),$(IMAGE_TAG),latest)
|
|
|
|
BUILD_TAGS ?=
|
|
|
|
ifeq ($(SWAGGER),1)
|
|
BUILD_TAGS += swagger_server
|
|
endif
|
|
|
|
PACKAGE_LIST := go list ./... | grep -vE "chaos-daemon/test|pkg/ptrace|zz_generated|vendor"
|
|
PACKAGE_DIRECTORIES := $(PACKAGE_LIST) | sed 's|github.com/chaos-mesh/chaosd/||'
|
|
|
|
$(GOBIN)/revive:
|
|
$(GO) get github.com/mgechev/revive@v1.0.2-0.20200225072153-6219ca02fffb
|
|
|
|
$(GOBIN)/goimports:
|
|
$(GO) get golang.org/x/tools/cmd/goimports@v0.1.1
|
|
|
|
build: binary
|
|
|
|
binary: swagger_spec chaosd chaos-tools
|
|
|
|
taily-build:
|
|
if [ "$(shell docker ps --filter=name=$@ -q)" = "" ]; then \
|
|
docker build -t pingcap/chaos-binary ${DOCKER_BUILD_ARGS} .; \
|
|
docker run --rm --mount type=bind,source=$(shell pwd),target=/src \
|
|
--name $@ -d pingcap/chaos-binary tail -f /dev/null; \
|
|
fi;
|
|
|
|
taily-build-clean:
|
|
docker kill taily-build && docker rm taily-build || exit 0
|
|
|
|
ifneq ($(TAILY_BUILD),)
|
|
image-binary: taily-build image-build-base
|
|
docker exec -it taily-build make binary
|
|
echo -e "FROM scratch\n COPY . /src/bin\n" | docker build -t pingcap/chaos-binary -f - ./bin
|
|
else
|
|
image-binary: image-build-base
|
|
DOCKER_BUILDKIT=1 docker build -t pingcap/chaos-binary ${DOCKER_BUILD_ARGS} .
|
|
endif
|
|
|
|
chaosd:
|
|
$(CGOENV) go build -ldflags '$(LDFLAGS)' -tags "${BUILD_TAGS}" -o bin/chaosd ./cmd/main.go
|
|
|
|
|
|
chaos-tools:
|
|
$(CGOENV) go build -o bin/tools/PortOccupyTool tools/PortOccupyTool.go
|
|
$(CGOENV) go build -o bin/tools/FileTool tools/file/*.go
|
|
ifeq (,$(wildcard bin/tools/stress-ng))
|
|
curl -fsSL -o ./bin/tools/stress-ng https://mirrors.chaos-mesh.org/latest/stress-ng
|
|
chmod +x ./bin/tools/stress-ng
|
|
endif
|
|
ifeq (,$(wildcard bin/tools/byteman))
|
|
curl -fsSL -o ${BYTEMAN_DIR}.tar.gz https://mirrors.chaos-mesh.org/${BYTEMAN_DIR}.tar.gz
|
|
tar zxvf ${BYTEMAN_DIR}.tar.gz
|
|
mv ${BYTEMAN_DIR} ./bin/tools/byteman
|
|
endif
|
|
|
|
swagger_spec:
|
|
ifeq ($(SWAGGER),1)
|
|
hack/generate_swagger_spec.sh
|
|
endif
|
|
|
|
image-build-base:
|
|
DOCKER_BUILDKIT=0 docker build --ulimit nofile=65536:65536 -t pingcap/chaos-build-base ${DOCKER_BUILD_ARGS} images/build-base
|
|
|
|
image-chaosd: image-binary
|
|
docker build -t ${DOCKER_REGISTRY_PREFIX}pingcap/chaosd:${IMAGE_TAG} ${DOCKER_BUILD_ARGS} images/chaosd
|
|
|
|
check: fmt vet boilerplate lint tidy
|
|
|
|
# Run go fmt against code
|
|
fmt: groupimports
|
|
$(CGOENV) go fmt ./...
|
|
|
|
groupimports: $(GOBIN)/goimports
|
|
$< -w -l -local github.com/chaos-mesh/chaosd $$($(PACKAGE_DIRECTORIES))
|
|
|
|
# Run go vet against code
|
|
vet:
|
|
$(CGOENV) go vet ./...
|
|
|
|
lint: $(GOBIN)/revive
|
|
@echo "linting"
|
|
$< -formatter friendly -config revive.toml $$($(PACKAGE_LIST))
|
|
|
|
boilerplate:
|
|
./hack/verify-boilerplate.sh
|
|
|
|
tidy:
|
|
@echo "go mod tidy"
|
|
GO111MODULE=on go mod tidy
|
|
git diff -U --exit-code go.mod go.sum
|
|
|
|
unit-test:
|
|
rm -rf cover.* cover
|
|
$(GOTEST) $$($(PACKAGE_LIST)) -coverprofile cover.out.tmp
|
|
cat cover.out.tmp | grep -v "_generated.deepcopy.go" > cover.out
|
|
|
|
dummy:
|
|
$(CGOENV) go build -ldflags '$(LDFLAGS)' -tags "${BUILD_TAGS}" -o bin/dummy ./test/utilities/dummy.go
|
|
|
|
integration-test: build dummy
|
|
bash test/integration_test/run.sh
|
|
|
|
.PHONY: all build check fmt vet lint tidy binary chaosd chaos image-binary image-chaosd
|