diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000000..aa8423c6812 --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof + +bin +*.iml +.idea +.DS_Store + +cscope.* +**/*.swp + +# Files generated when testing +vendor/ diff --git a/Makefile b/Makefile new file mode 100644 index 00000000000..c2cce942d65 --- /dev/null +++ b/Makefile @@ -0,0 +1,99 @@ +### Makefile for tidb-cdc +.PHONY: build test check clean fmt cdc + +PROJECT=tidb-cdc + +# Ensure GOPATH is set before running build process. +ifeq "$(GOPATH)" "" + $(error Please set the environment variable GOPATH before running `make`) +endif +FAIL_ON_STDOUT := awk '{ print } END { if (NR > 0) { exit 1 } }' + +CURDIR := $(shell pwd) +path_to_add := $(addsuffix /bin,$(subst :,/bin:,$(GOPATH))) +export PATH := $(path_to_add):$(PATH) + +TEST_DIR := /tmp/tidb_cdc_test + +GO := GO111MODULE=on go +GOBUILD := CGO_ENABLED=0 $(GO) build $(BUILD_FLAG) +GOTEST := CGO_ENABLED=1 $(GO) test -p 3 + +ARCH := "`uname -s`" +LINUX := "Linux" +MAC := "Darwin" +PACKAGE_LIST := go list ./...| grep -vE 'vendor|proto' +PACKAGES := $$($(PACKAGE_LIST)) +PACKAGE_DIRECTORIES := $(PACKAGE_LIST) | sed 's|github.com/pingcap/$(PROJECT)/||' +FILES := $$(find . -name '*.go' -type f | grep -vE 'vendor') + +# LDFLAGS += -X "github.com/pingcap/tidb-cdc/pkg/version.BuildTS=$(shell date -u '+%Y-%m-%d %I:%M:%S')" +# LDFLAGS += -X "github.com/pingcap/tidb-cdc/pkg/version.GitHash=$(shell git rev-parse HEAD)" +# LDFLAGS += -X "github.com/pingcap/tidb-cdc/pkg/version.ReleaseVersion=$(shell git describe --tags --dirty)" + +default: build buildsucc + +buildsucc: + @echo Build TiDB CDC successfully! + +all: dev install + +dev: check test + +build: cdc + +cdc: + $(GOBUILD) -ldflags '$(LDFLAGS)' -o bin/cdc cmd/cdc/main.go + +install: + go install ./... + +test: + mkdir -p "$(TEST_DIR)" + @export log_level=error;\ + $(GOTEST) -cover -covermode=count -coverprofile="$(TEST_DIR)/cov.unit.out" $(PACKAGES) + +fmt: + @echo "gofmt (simplify)" + @gofmt -s -l -w $(FILES) 2>&1 | $(FAIL_ON_STDOUT) + +lint:tools/bin/revive + @echo "linting" + @tools/bin/revive -formatter friendly -config tools/check/revive.toml $(FILES) + +vet: + @echo "vet" + $(GO) vet $(PACKAGES) 2>&1 | $(FAIL_ON_STDOUT) + +tidy: + @echo "go mod tidy" + ./tools/check/check-tidy.sh + +check: fmt lint check-static tidy + +coverage: + GO111MODULE=off go get github.com/wadey/gocovmerge + gocovmerge "$(TEST_DIR)"/cov.* | grep -vE ".*.pb.go" > "$(TEST_DIR)/all_cov.out" +ifeq ("$(JenkinsCI)", "1") + GO111MODULE=off go get github.com/mattn/goveralls + @goveralls -coverprofile=$(TEST_DIR)/all_cov.out -service=jenkins-ci -repotoken $(COVERALLS_TOKEN) +else + go tool cover -html "$(TEST_DIR)/all_cov.out" -o "$(TEST_DIR)/all_cov.html" + grep -F '