mirror of https://github.com/chaos-mesh/chaosd.git
125 lines
4.0 KiB
Makefile
125 lines
4.0 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
|
|
|
|
# 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)
|
|
|
|
FAILPOINT_ENABLE := $$(find $$PWD/ -type d | grep -vE "(\.git|bin)" | xargs $(GOBIN)/failpoint-ctl enable)
|
|
FAILPOINT_DISABLE := $$(find $$PWD/ -type d | grep -vE "(\.git|bin)" | xargs $(GOBIN)/failpoint-ctl disable)
|
|
|
|
PACKAGE_LIST := go list ./... | grep -vE "chaos-daemon/test|pkg/ptrace|zz_generated|vendor"
|
|
PACKAGE_DIRECTORIES := $(PACKAGE_LIST) | sed 's|github.com/chaos-mesh/chaos-daemon/||'
|
|
|
|
failpoint-enable: $(GOBIN)/failpoint-ctl
|
|
# Converting gofail failpoints...
|
|
@$(FAILPOINT_ENABLE)
|
|
|
|
failpoint-disable: $(GOBIN)/failpoint-ctl
|
|
# Restoring gofail failpoints...
|
|
@$(FAILPOINT_DISABLE)
|
|
|
|
$(GOBIN)/failpoint-ctl:
|
|
$(GO) get github.com/pingcap/failpoint/failpoint-ctl@v0.0.0-20200210140405-f8f9fb234798
|
|
|
|
$(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.0.0-20200309202150-20ab64c0d93f
|
|
|
|
build: binary
|
|
|
|
binary: chaosd bin/pause bin/suicide
|
|
|
|
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)' -o bin/chaosd ./cmd/chaos/main.go
|
|
|
|
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
|
|
|
|
bin/pause: ./hack/pause.c
|
|
cc ./hack/pause.c -o bin/pause
|
|
|
|
bin/suicide: ./hack/suicide.c
|
|
cc ./hack/suicide.c -o bin/suicide
|
|
|
|
image-chaos-mesh-protoc:
|
|
docker build -t pingcap/chaos-daemon-protoc ${DOCKER_BUILD_ARGS} ./images/protoc
|
|
|
|
ifeq ($(IN_DOCKER),1)
|
|
proto:
|
|
protoc -I pkg/server/serverpb pkg/server/serverpb/*.proto --go_out=plugins=grpc:pkg/server/serverpb --go_out=./pkg/server/serverpb
|
|
else
|
|
proto: image-chaos-mesh-protoc
|
|
docker run --rm --workdir /mnt/ --volume $(shell pwd):/mnt \
|
|
--user $(shell id -u):$(shell id -g) --env IN_DOCKER=1 pingcap/chaos-daemon-protoc \
|
|
/usr/bin/make proto
|
|
|
|
make fmt
|
|
endif
|
|
|
|
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/chaos-daemon $$($(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
|
|
|
|
.PHONY: all build check fmt vet lint tidy binary chaosd chaos image-binary image-chaosd
|