diff --git a/.dockerignore b/.dockerignore index bf4ffe706..4cabd9531 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,6 +2,4 @@ !.git/HEAD !.git/refs/ !.git/packed-refs -cmd/ipfs/ipfs -vendor/gx/ -test/ +test/sharness/lib/sharness/ diff --git a/Rules.mk b/Rules.mk index 550ed54fc..72f8cf5ea 100644 --- a/Rules.mk +++ b/Rules.mk @@ -12,6 +12,15 @@ include mk/util.mk include mk/golang.mk include mk/gx.mk +# -------------------- # +# extra properties # +# -------------------- # + +ifeq ($(TEST_NO_FUSE),1) + GOTAGS += nofuse +endif +export IPFS_REUSEPORT=false + # -------------------- # # sub-files # # -------------------- # @@ -57,15 +66,6 @@ include $(dir)/Rules.mk %.pb.go: %.proto $(PROTOC) -# -------------------- # -# extra properties # -# -------------------- # - -ifeq ($(TEST_NO_FUSE),1) - GOTAGS += nofuse -endif -export IPFS_REUSEPORT=false - # -------------------- # # core targets # # -------------------- # @@ -75,14 +75,14 @@ build: $(TGT_BIN) .PHONY: build clean: - rm -f $(CLEAN) + rm -rf $(CLEAN) .PHONY: clean coverage: $(COVERAGE) .PHONY: coverage distclean: clean - rm -f $(DISTCLEAN) + rm -rf $(DISTCLEAN) .PHONY: distclean test: $(TEST) diff --git a/bin/Rules.mk b/bin/Rules.mk index 8744b3102..6d555dbdb 100644 --- a/bin/Rules.mk +++ b/bin/Rules.mk @@ -6,7 +6,7 @@ $(d)/gx: $(d)/gx-v0.9.0 $(d)/gx-go: $(d)/gx-go-v1.3.0 TGTS_$(d) := $(d)/gx $(d)/gx-go -DISTCLEAN += $(wildcard $(d)/gx-v*) $(wildcard $(d)/gx-go-v*) +DISTCLEAN += $(wildcard $(d)/gx-v*) $(wildcard $(d)/gx-go-v*) $(d)/tmp PATH := $(realpath $(d)):$(PATH) diff --git a/ci/Dockerfile.buildenv b/ci/Dockerfile.buildenv new file mode 100644 index 000000000..d124dd92d --- /dev/null +++ b/ci/Dockerfile.buildenv @@ -0,0 +1,45 @@ +FROM golang:1.7 +MAINTAINER Jakub Sztandera + + +RUN apt-get update && apt-get install -y --no-install-recommends \ + netcat-openbsd bash curl \ + sudo \ + && rm -rf /var/lib/apt/lists/* + +ENV GOBIN $GOPATH/bin +ENV SRC_PATH /go/src/github.com/ipfs/go-ipfs + +RUN curl -s https://codecov.io/bash > /usr/bin/codecov && chmod +x /usr/bin/codecov \ + && go get -u github.com/Kubuxu/gocovmerge && go get -u golang.org/x/tools/cmd/cover +ENV IPFS_SKIP_COVER_BINS 1 + + +RUN useradd user +RUN chown -R user $GOPATH + +WORKDIR $SRC_PATH + +COPY ./bin $SRC_PATH/bin/ +COPY ./mk $SRC_PATH/mk/ +RUN chown -R user $GOPATH + +USER user +# install gx and gx-go +RUN make -j 4 -f bin/Rules.mk d=bin bin/gx bin/gx-go && cp bin/gx bin/gx-go $GOBIN +USER root +ENV IPFS_GX_USE_GLOBAL 1 + +COPY package.json $SRC_PATH/ +ENV PATH $SRC_PATH/bin:$PATH + +USER user +RUN make -f mk/gx.mk gx-deps +USER root + +COPY . $SRC_PATH/ +RUN chown -R user $GOPATH +USER user +RUN make cmd/ipfs/ipfs #populate go cache + +CMD ["/bin/bash", "-c", "trap : TERM INT; sleep infinity & wait"] diff --git a/ci/jenkins b/ci/jenkins new file mode 100644 index 000000000..34e52dfe4 --- /dev/null +++ b/ci/jenkins @@ -0,0 +1 @@ +go-ipfs-jenkinsfile diff --git a/coverage/Rules.mk b/coverage/Rules.mk index 6ffaa7ff0..bf433621c 100644 --- a/coverage/Rules.mk +++ b/coverage/Rules.mk @@ -3,8 +3,10 @@ include mk/header.mk $(d)/coverage_deps: rm -rf $(@D)/unitcover && mkdir $(@D)/unitcover rm -rf $(@D)/sharnesscover && mkdir $(@D)/sharnesscover +ifneq ($(IPFS_SKIP_COVER_BINS),1) go get -u github.com/Kubuxu/gocovmerge go get -u golang.org/x/tools/cmd/cover +endif .PHONY: $(d)/coverage_deps # unit tests coverage diff --git a/mk/footer.mk b/mk/footer.mk index 4224aaa97..08e3d57e5 100644 --- a/mk/footer.mk +++ b/mk/footer.mk @@ -1,2 +1,3 @@ +# standard NR-make boilerplate, to be included at the end of a file d := $(dirstack_$(sp)) sp := $(basename $(sp)) diff --git a/mk/golang.mk b/mk/golang.mk index c0cc130a2..14b1ad0fd 100644 --- a/mk/golang.mk +++ b/mk/golang.mk @@ -44,7 +44,7 @@ test_go: $(TEST_GO) check_go_version: bin/check_go_version $(GO_MIN_VERSION) .PHONY: check_go_version -CHECK_GO += check_go_version +DEPS_GO += check_go_version TEST += $(TEST_GO) TEST_SHORT += test_go_fmt test_go_short diff --git a/mk/gx.mk b/mk/gx.mk index d2f70f59a..187f281d4 100644 --- a/mk/gx.mk +++ b/mk/gx.mk @@ -1,6 +1,11 @@ gx-path = gx/ipfs/$(shell gx deps find $(1))/$(1) -gx-deps: bin/gx bin/gx-go $(CHECK_GO) - gx install --global >/dev/null 2>&1 +gx-deps: + gx --verbose install --global > /dev/null 2>&1 +.PHONY: gx-deps + +ifneq ($(IPFS_GX_USE_GLOBAL),1) +gx-deps: bin/gx bin/gx-go +endif DEPS_GO += gx-deps diff --git a/mk/header.mk b/mk/header.mk index fc60061e1..9ec77c7e1 100644 --- a/mk/header.mk +++ b/mk/header.mk @@ -1,4 +1,5 @@ # keep track of dirs +# standard NR-make boilerplate, to be included at the beginning of a file p := $(sp).x dirstack_$(sp) := $(d) d := $(dir)