neoneo-go/Makefile
2019-11-06 16:09:07 +03:00

92 lines
2.7 KiB
Makefile

BRANCH = "master"
REPONAME = "neo-go"
NETMODE ?= "privnet"
BINARY = "./bin/neo-go"
REPO ?= "$(shell go list -m)"
VERSION ?= "$(shell git describe --tags 2>/dev/null | sed 's/^v//')"
BUILD_FLAGS = "-X $(REPO)/config.Version=$(VERSION)"
# All of the targets are phony here because we don't really use make dependency
# tracking for files
.PHONY: build deps image check-version clean-cluster push-tag push-to-registry \
run run-cluster test vet lint fmt cover
build: deps
@echo "=> Building binary"
@set -x \
&& export GOGC=off \
&& export CGO_ENABLED=0 \
&& go build -v -mod=vendor -ldflags $(BUILD_FLAGS) -o ${BINARY} ./cli/main.go
install: build
@echo "=> Preparing directories and configs"
@id neo-go || useradd -s /usr/sbin/nologin -d /var/lib/neo-go neo-go \
&& mkdir -p /var/lib/neo-go \
&& chown -R neo-go:neo-go /var/lib/neo-go
@echo "=> Installing systemd service"
@mkdir -p /etc/neo-go \
&& mkdir -p /etc/systemd/system/ \
&& cp ./neo-go.service /etc/systemd/system/ \
&& cp ./config/protocol.mainnet.yml /etc/neo-go \
&& systemctl enable neo-go.service \
&& mv ./bin/neo-go /usr/local/bin/neo-go \
&& chown neo-go:neo-go /usr/local/bin/neo-go
@echo "Done. Start Neo Go with 'systemctl start neo-go.service'"
image:
@echo "=> Building image"
@docker build -t cityofzion/neo-go:latest --build-arg REPO=$(REPO) --build-arg VERSION=$(VERSION) .
@docker build -t cityofzion/neo-go:$(VERSION) --build-arg REPO=$(REPO) --build-arg VERSION=$(VERSION) .
check-version:
git fetch && (! git rev-list ${VERSION})
clean-cluster:
@echo "=> Removing all containers and chain storage"
@rm -rf chains/privnet-docker-one chains/privnet-docker-two chains/privnet-docker-three chains/privnet-docker-four
@docker-compose stop
@docker-compose rm -f
deps:
@go mod tidy -v
@go mod vendor
push-tag:
git checkout ${BRANCH}
git pull origin ${BRANCH}
git tag ${VERSION}
git push origin ${VERSION}
push-to-registry:
@docker login -e ${DOCKER_EMAIL} -u ${DOCKER_USER} -p ${DOCKER_PASS}
@docker tag CityOfZion/${REPONAME}:latest CityOfZion/${REPONAME}:${CIRCLE_TAG}
@docker push CityOfZion/${REPONAME}:${CIRCLE_TAG}
@docker push CityOfZion/${REPONAME}
run: build
${BINARY} node -config-path ./config -${NETMODE}
run-cluster: build-linux
@echo "=> Starting docker-compose cluster"
@echo "=> Building container image"
@docker-compose build
@docker-compose up -d
@echo "=> Tailing logs, exiting this prompt will not stop the cluster"
@docker-compose logs -f
test:
@go test ./... -cover
vet:
@go vet ./...
lint:
@go list ./... | xargs -L1 golint -set_exit_status
fmt:
@gofmt -l -w -s $$(find . -type f -name '*.go'| grep -v "/vendor/")
cover:
@go test -v -race ./... -coverprofile=coverage.txt -covermode=atomic
@go tool cover -html=coverage.txt -o coverage.html