diff --git a/Makefile b/Makefile index e6be5f03e8..614feeb649 100644 --- a/Makefile +++ b/Makefile @@ -82,9 +82,6 @@ endif static: prog/static.go -prog/static.go: client/build/app.js - esc -o $@ -prefix client/build client/build - ifeq ($(BUILD_IN_CONTAINER),true) client/build/app.js: $(shell find client/app/scripts -type f) $(SCOPE_UI_BUILD_UPTODATE) mkdir -p client/build @@ -106,9 +103,21 @@ client-start: $(SCOPE_UI_BUILD_UPTODATE) $(SUDO) docker run $(RM) $(RUN_FLAGS) --net=host -v $(shell pwd)/client/app:/home/weave/app \ -v $(shell pwd)/client/build:/home/weave/build \ $(SCOPE_UI_BUILD_IMAGE) npm start + +prog/static.go: client/build/app.js $(SCOPE_BACKEND_BUILD_UPTODATE) + $(SUDO) docker run $(RM) $(RUN_FLAGS) --net=host \ + -v $(shell pwd):/go/src/github.com/weaveworks/scope \ + -v $(shell pwd)/.pkg:/go/pkg \ + -w /go/src/github.com/weaveworks/scope \ + --entrypoint=make \ + $(SCOPE_BACKEND_BUILD_IMAGE) BUILD_IN_CONTAINER=false prog/static.go + else client/build/app.js: cd client && npm run build + +prog/static.go: client/build/app.js + esc -o $@ -prefix client/build client/build endif $(SCOPE_UI_BUILD_UPTODATE): client/Dockerfile client/package.json client/webpack.local.config.js client/webpack.production.config.js client/server.js client/.eslintrc @@ -129,5 +138,4 @@ deps: $(GO) get -u -f -tags netgo \ github.com/FiloSottile/gvt \ github.com/mattn/goveralls \ - github.com/mjibson/esc \ github.com/weaveworks/github-release diff --git a/README.md b/README.md index adaf5b8fad..70b4711442 100644 --- a/README.md +++ b/README.md @@ -217,14 +217,16 @@ kubectl create -f scope-probe-ds.yaml ## Developing -The build is in two stages. `make deps` installs some tools we use later in -the build. `make` builds the UI build container, builds the UI in said -container, builds the backend build container, builds the app and probe in a -said container, and finally pushes the lot into a Docker image called -**weaveworks/scope**. +Building Scope from source depends on the latest version of +[docker](https://www.docker.com/), so please install that before +proceeding. + +The main build is `make`, which builds the UI build container, builds +the UI in said container, builds the backend build container, builds +the app and probe in a said container, and finally pushes the lot into +a Docker image called **weaveworks/scope**. ``` -make deps make ``` @@ -234,6 +236,15 @@ Then, run the local build via ./scope launch ``` +If needed, install tools used for managing dependencies, managing releases, and doing coverage analysis via + +``` +make deps +``` + +Note that the tools from `make deps` will depend on a local install of +[go](https://golang.org). + ## Debugging Scope has a collection of built in debugging tools to aid Scope delevopers. diff --git a/backend/Dockerfile b/backend/Dockerfile index eff72a8232..5db434d54c 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -3,8 +3,9 @@ ENV GO15VENDOREXPERIMENT 1 RUN apt-get update && apt-get install -y libpcap-dev python-requests time RUN go clean -i net && go install -tags netgo std && go install -race -tags netgo std RUN go get -tags netgo \ - github.com/golang/lint/golint \ github.com/fzipp/gocyclo \ - github.com/kisielk/errcheck + github.com/golang/lint/golint \ + github.com/kisielk/errcheck \ + github.com/mjibson/esc COPY build.sh / ENTRYPOINT ["/build.sh"]