ipfs-cluster/Makefile
Wyatt fc237b21d4 Feat: Enable Jenkins builds
This enables support for testing in jenkins.

Several minor adjustments have been performed to improve the probability
that the tests pass, but there are still some random
problems appearing with libp2p conections not becoming available or
stopping working (similar to travis, but perhaps more often).

MacOS and Windows builds are broken in worse ways (those issues will
need to be addressed in the future).

Thanks to @zenground0 and @victorbjelkholm for support!

License: MIT
Signed-off-by: Hector Sanjuan <code@hector.link>
2018-01-11 18:11:46 +01:00

111 lines
3.1 KiB
Makefile

gx_version=v0.12.1
gx-go_version=v1.6.0
deptools=deptools
gx=gx_$(gx_version)
gx-go=gx-go_$(gx-go_version)
gx_bin=$(deptools)/$(gx)
gx-go_bin=$(deptools)/$(gx-go)
bin_env=$(shell go env GOHOSTOS)-$(shell go env GOHOSTARCH)
sharness = sharness/lib/sharness
# For debugging
problematic_test = TestClustersReplicationRealloc
export PATH := $(deptools):$(PATH)
all: service ctl
clean: rwundo clean_sharness
$(MAKE) -C ipfs-cluster-service clean
$(MAKE) -C ipfs-cluster-ctl clean
gx-clean: clean
@rm -f $(deptools)/*
install: deps
$(MAKE) -C ipfs-cluster-service install
$(MAKE) -C ipfs-cluster-ctl install
build: deps
go build -ldflags "-X ipfscluster.Commit=$(shell git rev-parse HEAD)"
$(MAKE) -C ipfs-cluster-service build
$(MAKE) -C ipfs-cluster-ctl build
service: deps
$(MAKE) -C ipfs-cluster-service ipfs-cluster-service
ctl: deps
$(MAKE) -C ipfs-cluster-ctl ipfs-cluster-ctl
$(gx_bin):
@echo "Downloading gx"
@mkdir -p ./$(deptools)
@rm -f $(deptools)/gx
@wget -nc -q -O $(gx_bin).tgz https://dist.ipfs.io/gx/$(gx_version)/$(gx)_$(bin_env).tar.gz
@tar -zxf $(gx_bin).tgz -C $(deptools) --strip-components=1 gx/gx
@mv $(deptools)/gx $(gx_bin)
@ln -s $(gx) $(deptools)/gx
@rm $(gx_bin).tgz
$(gx-go_bin):
@echo "Downloading gx-go"
@mkdir -p ./$(deptools)
@rm -f $(deptools)/gx-go
@wget -nc -q -O $(gx-go_bin).tgz https://dist.ipfs.io/gx-go/$(gx-go_version)/$(gx-go)_$(bin_env).tar.gz
@tar -zxf $(gx-go_bin).tgz -C $(deptools) --strip-components=1 gx-go/gx-go
@mv $(deptools)/gx-go $(gx-go_bin)
@ln -s $(gx-go) $(deptools)/gx-go
@rm $(gx-go_bin).tgz
gx: $(gx_bin) $(gx-go_bin)
deps: gx
$(gx_bin) install --global
$(gx-go_bin) rewrite
check:
go vet ./...
golint -set_exit_status -min_confidence 0.3 ./...
test: deps
go test -timeout 20m -tags silent -v ./...
test_sharness: $(sharness)
@sh sharness/run-sharness-tests.sh
test_problem: deps
go test -timeout 20m -tags debug -v -run $(problematic_test)
$(sharness):
@echo "Downloading sharness"
@wget -q -O sharness/lib/sharness.tar.gz http://github.com/chriscool/sharness/archive/master.tar.gz
@cd sharness/lib; tar -zxf sharness.tar.gz; cd ../..
@mv sharness/lib/sharness-master sharness/lib/sharness
@rm sharness/lib/sharness.tar.gz
clean_sharness:
@rm -rf ./sharness/test-results
@rm -rf ./sharness/lib/sharness
@rm -rf sharness/trash\ directory*
rw: gx
$(gx-go_bin) rewrite
rwundo: gx
$(gx-go_bin) rewrite --undo
publish: rwundo
$(gx_bin) publish
docker:
@docker build -t cluster-image -f Dockerfile .
@docker run --name tmp-make-cluster -d cluster-image && sleep 8
@docker exec tmp-make-cluster sh -c "ipfs-cluster-ctl version"
@docker exec tmp-make-cluster sh -c "ipfs-cluster-service -v"
@docker stop tmp-make-cluster && docker rm tmp-make-cluster
@docker build -t cluster-image -f Dockerfile-test .
@docker run --name tmp-make-cluster -d cluster-image && sleep 8
@docker exec tmp-make-cluster sh -c "ipfs-cluster-ctl version"
@docker exec tmp-make-cluster sh -c "ipfs-cluster-service -v"
@docker stop tmp-make-cluster && docker rm tmp-make-cluster
.PHONY: all gx deps test test_sharness clean_sharness rw rwundo publish service ctl install clean gx-clean docker