aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Kochie <superq@gmail.com>2018-07-23 09:38:39 +0200
committerGitHub <noreply@github.com>2018-07-23 09:38:39 +0200
commit981de58fadfb50c688a274d01e7a382919b4c19a (patch)
tree25fc52b92a49edee60982c6bdfbf13ddff814cea
parent23f95c8e04bb21f7a20d93097ace6a5de61c882b (diff)
downloadprometheus_node_collector-981de58fadfb50c688a274d01e7a382919b4c19a.tar.bz2
prometheus_node_collector-981de58fadfb50c688a274d01e7a382919b4c19a.tar.xz
prometheus_node_collector-981de58fadfb50c688a274d01e7a382919b4c19a.zip
Update build (#1010)
* Update from upstream `Makefile.common`. * Update CircleCI with simplifed upstream templating. * Cleanup `Makefile`. Signed-off-by: Ben Kochie <superq@gmail.com>
-rw-r--r--.circleci/config.yml47
-rw-r--r--Makefile17
-rw-r--r--Makefile.common59
3 files changed, 64 insertions, 59 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 656cdb2..25c5126 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -27,8 +27,6 @@ jobs:
27 working_directory: /home/circleci/.go_workspace/src/github.com/prometheus/node_exporter 27 working_directory: /home/circleci/.go_workspace/src/github.com/prometheus/node_exporter
28 28
29 environment: 29 environment:
30 DOCKER_IMAGE_NAME: prom/node-exporter
31 QUAY_IMAGE_NAME: quay.io/prometheus/node-exporter
32 DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base 30 DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base
33 REPO_PATH: github.com/prometheus/node_exporter 31 REPO_PATH: github.com/prometheus/node_exporter
34 32
@@ -44,11 +42,9 @@ jobs:
44 - run: 42 - run:
45 command: | 43 command: |
46 if [ -n "$CIRCLE_TAG" ]; then 44 if [ -n "$CIRCLE_TAG" ]; then
47 make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG 45 make docker DOCKER_IMAGE_TAG=$CIRCLE_TAG
48 make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG
49 else 46 else
50 make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME 47 make docker
51 make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME
52 fi 48 fi
53 - run: docker images 49 - run: docker images
54 - run: docker run --rm -t -v "$(pwd):/app" "${DOCKER_TEST_IMAGE_NAME}" -i "${REPO_PATH}" -T 50 - run: docker run --rm -t -v "$(pwd):/app" "${DOCKER_TEST_IMAGE_NAME}" -i "${REPO_PATH}" -T
@@ -65,37 +61,25 @@ jobs:
65 - image: circleci/golang:1.10 61 - image: circleci/golang:1.10
66 working_directory: /go/src/github.com/prometheus/node_exporter 62 working_directory: /go/src/github.com/prometheus/node_exporter
67 63
68 environment:
69 DOCKER_IMAGE_NAME: prom/node-exporter
70 QUAY_IMAGE_NAME: quay.io/prometheus/node-exporter
71 DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base
72 REPO_PATH: github.com/prometheus/node_exporter
73
74 steps: 64 steps:
75 - checkout 65 - checkout
76 - setup_remote_docker 66 - setup_remote_docker
77 - attach_workspace: 67 - attach_workspace:
78 at: . 68 at: .
79 - run: ln -s .build/linux-amd64/node_exporter node_exporter 69 - run: ln -s .build/linux-amd64/node_exporter node_exporter
80 - run: make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME 70 - run: make docker
81 - run: make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME 71 - run: make docker DOCKER_REPO=quay.io/prometheus
82 - run: docker images 72 - run: docker images
83 - run: docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD 73 - run: docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD
84 - run: docker login -u $QUAY_LOGIN -p $QUAY_PASSWORD quay.io 74 - run: docker login -u $QUAY_LOGIN -p $QUAY_PASSWORD quay.io
85 - run: docker push $DOCKER_IMAGE_NAME 75 - run: make docker-publish
86 - run: docker push $QUAY_IMAGE_NAME 76 - run: make docker-publish DOCKER_REPO=quay.io/prometheus
87 77
88 docker_hub_release_tags: 78 docker_hub_release_tags:
89 docker: 79 docker:
90 - image: circleci/golang:1.10 80 - image: circleci/golang:1.10
91 working_directory: /go/src/github.com/prometheus/node_exporter 81 working_directory: /go/src/github.com/prometheus/node_exporter
92 82
93 environment:
94 DOCKER_IMAGE_NAME: prom/node-exporter
95 QUAY_IMAGE_NAME: quay.io/prometheus/node-exporter
96 DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base
97 REPO_PATH: github.com/prometheus/node_exporter
98
99 steps: 83 steps:
100 - checkout 84 - checkout
101 - setup_remote_docker 85 - setup_remote_docker
@@ -112,24 +96,17 @@ jobs:
112 path: .tarballs 96 path: .tarballs
113 destination: releases 97 destination: releases
114 - run: ln -s .build/linux-amd64/node_exporter node_exporter 98 - run: ln -s .build/linux-amd64/node_exporter node_exporter
115 - run: 99 - run: make docker DOCKER_IMAGE_TAG=$CIRCLE_TAG
116 command: | 100 - run: make docker DOCKER_IMAGE_TAG=$CIRCLE_TAG DOCKER_REPO=quay.io/prometheus
117 if [ -n "$CIRCLE_TAG" ]; then
118 make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG
119 make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG
120 else
121 make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME
122 make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME
123 fi
124 - run: docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD 101 - run: docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD
125 - run: docker login -u $QUAY_LOGIN -p $QUAY_PASSWORD quay.io 102 - run: docker login -u $QUAY_LOGIN -p $QUAY_PASSWORD quay.io
126 - run: | 103 - run: |
127 if [[ "$CIRCLE_TAG" =~ ^v[0-9]+(\.[0-9]+){2}$ ]]; then 104 if [[ "$CIRCLE_TAG" =~ ^v[0-9]+(\.[0-9]+){2}$ ]]; then
128 docker tag "$DOCKER_IMAGE_NAME:$CIRCLE_TAG" "$DOCKER_IMAGE_NAME:latest" 105 make docker-tag-latest DOCKER_IMAGE_TAG="$CIRCLE_TAG"
129 docker tag "$QUAY_IMAGE_NAME:$CIRCLE_TAG" "$QUAY_IMAGE_NAME:latest" 106 make docker-tag-latest DOCKER_IMAGE_TAG="$CIRCLE_TAG" DOCKER_REPO=quay.io/prometheus
130 fi 107 fi
131 - run: docker push $DOCKER_IMAGE_NAME:$CIRCLE_TAG 108 - run: make docker-publish
132 - run: docker push $QUAY_IMAGE_NAME:$CIRCLE_TAG 109 - run: make docker-publish DOCKER_REPO=quay.io/prometheus
133 110
134workflows: 111workflows:
135 version: 2 112 version: 2
diff --git a/Makefile b/Makefile
index a254ef7..1554954 100644
--- a/Makefile
+++ b/Makefile
@@ -70,14 +70,17 @@ $(eval $(call goarch_pair,mips64el,mipsel))
70 70
71all: style vet staticcheck checkmetrics build test $(cross-test) $(test-e2e) 71all: style vet staticcheck checkmetrics build test $(cross-test) $(test-e2e)
72 72
73.PHONY: test
73test: collector/fixtures/sys/.unpacked 74test: collector/fixtures/sys/.unpacked
74 @echo ">> running tests" 75 @echo ">> running tests"
75 $(GO) test -short $(test-flags) $(pkgs) 76 $(GO) test -short $(test-flags) $(pkgs)
76 77
78.PHONY: test-32bit
77test-32bit: collector/fixtures/sys/.unpacked 79test-32bit: collector/fixtures/sys/.unpacked
78 @echo ">> running tests in 32-bit mode" 80 @echo ">> running tests in 32-bit mode"
79 @env GOARCH=$(GOARCH_CROSS) $(GO) test $(pkgs) 81 @env GOARCH=$(GOARCH_CROSS) $(GO) test $(pkgs)
80 82
83.PHONY: skip-test-32bit
81skip-test-32bit: 84skip-test-32bit:
82 @echo ">> SKIP running tests in 32-bit mode: not supported on $(OS_detected)/$(GOARCH)" 85 @echo ">> SKIP running tests in 32-bit mode: not supported on $(OS_detected)/$(GOARCH)"
83 86
@@ -87,17 +90,21 @@ collector/fixtures/sys/.unpacked: collector/fixtures/sys.ttar
87 ./ttar -C collector/fixtures -x -f collector/fixtures/sys.ttar 90 ./ttar -C collector/fixtures -x -f collector/fixtures/sys.ttar
88 touch $@ 91 touch $@
89 92
93.PHONY: test-e2e
90test-e2e: build collector/fixtures/sys/.unpacked 94test-e2e: build collector/fixtures/sys/.unpacked
91 @echo ">> running end-to-end tests" 95 @echo ">> running end-to-end tests"
92 ./end-to-end-test.sh 96 ./end-to-end-test.sh
93 97
98.PHONY: skip-test-e2e
94skip-test-e2e: 99skip-test-e2e:
95 @echo ">> SKIP running end-to-end tests on $(OS_detected)" 100 @echo ">> SKIP running end-to-end tests on $(OS_detected)"
96 101
102.PHONY: checkmetrics
97checkmetrics: $(PROMTOOL) 103checkmetrics: $(PROMTOOL)
98 @echo ">> checking metrics for correctness" 104 @echo ">> checking metrics for correctness"
99 ./checkmetrics.sh $(PROMTOOL) $(e2e-out) 105 ./checkmetrics.sh $(PROMTOOL) $(e2e-out)
100 106
107.PHONY: docker
101docker: 108docker:
102ifeq ($(MACH), ppc64le) 109ifeq ($(MACH), ppc64le)
103 $(eval DOCKERFILE=Dockerfile.ppc64le) 110 $(eval DOCKERFILE=Dockerfile.ppc64le)
@@ -105,17 +112,11 @@ endif
105 @echo ">> building docker image from $(DOCKERFILE)" 112 @echo ">> building docker image from $(DOCKERFILE)"
106 @docker build --file $(DOCKERFILE) -t "$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" . 113 @docker build --file $(DOCKERFILE) -t "$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" .
107 114
115.PHONY: test-docker
108test-docker: 116test-docker:
109 @echo ">> testing docker image" 117 @echo ">> testing docker image"
110 ./test_image.sh "$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" 9100 118 ./test_image.sh "$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" 9100
111 119
120.PHONY: promtool $(FIRST_GOPATH)/bin/promtool
112$(FIRST_GOPATH)/bin/promtool promtool: 121$(FIRST_GOPATH)/bin/promtool promtool:
113 @GOOS= GOARCH= $(GO) get -u github.com/prometheus/prometheus/cmd/promtool 122 @GOOS= GOARCH= $(GO) get -u github.com/prometheus/prometheus/cmd/promtool
114
115.PHONY: test-e2e promtool checkmetrics
116
117# Declaring the binaries at their default locations as PHONY targets is a hack
118# to ensure the latest version is downloaded on every make execution.
119# If this is not desired, copy/symlink these binaries to a different path and
120# set the respective environment variables.
121.PHONY: $(FIRST_GOPATH)/bin/promtool
diff --git a/Makefile.common b/Makefile.common
index 353494c..61ef11d 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -36,14 +36,23 @@ pkgs = ./...
36PREFIX ?= $(shell pwd) 36PREFIX ?= $(shell pwd)
37BIN_DIR ?= $(shell pwd) 37BIN_DIR ?= $(shell pwd)
38DOCKER_IMAGE_TAG ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD)) 38DOCKER_IMAGE_TAG ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD))
39DOCKER_REPO ?= prom
39 40
41.PHONY: all
40all: style staticcheck unused build test 42all: style staticcheck unused build test
41 43
42style: 44# This rule is used to forward a target like "build" to "common-build". This
45# allows a new "build" target to be defined in a Makefile which includes this
46# one and override "common-build" without override warnings.
47%: common-% ;
48
49.PHONY: common-style
50common-style:
43 @echo ">> checking code style" 51 @echo ">> checking code style"
44 ! $(GOFMT) -d $$(find . -path ./vendor -prune -o -name '*.go' -print) | grep '^' 52 ! $(GOFMT) -d $$(find . -path ./vendor -prune -o -name '*.go' -print) | grep '^'
45 53
46check_license: 54.PHONY: common-check_license
55common-check_license:
47 @echo ">> checking license header" 56 @echo ">> checking license header"
48 @licRes=$$(for file in $$(find . -type f -iname '*.go' ! -path './vendor/*') ; do \ 57 @licRes=$$(for file in $$(find . -type f -iname '*.go' ! -path './vendor/*') ; do \
49 awk 'NR<=3' $$file | grep -Eq "(Copyright|generated|GENERATED)" || echo $$file; \ 58 awk 'NR<=3' $$file | grep -Eq "(Copyright|generated|GENERATED)" || echo $$file; \
@@ -53,48 +62,66 @@ check_license:
53 exit 1; \ 62 exit 1; \
54 fi 63 fi
55 64
56test-short: 65.PHONY: common-test-short
66common-test-short:
57 @echo ">> running short tests" 67 @echo ">> running short tests"
58 $(GO) test -short $(pkgs) 68 $(GO) test -short $(pkgs)
59 69
60test: 70.PHONY: common-test
71common-test:
61 @echo ">> running all tests" 72 @echo ">> running all tests"
62 $(GO) test -race $(pkgs) 73 $(GO) test -race $(pkgs)
63 74
64format: 75.PHONY: common-format
76common-format:
65 @echo ">> formatting code" 77 @echo ">> formatting code"
66 $(GO) fmt $(pkgs) 78 $(GO) fmt $(pkgs)
67 79
68vet: 80.PHONY: common-vet
81common-vet:
69 @echo ">> vetting code" 82 @echo ">> vetting code"
70 $(GO) vet $(pkgs) 83 $(GO) vet $(pkgs)
71 84
72staticcheck: $(STATICCHECK) 85.PHONY: common-staticcheck
86common-staticcheck: $(STATICCHECK)
73 @echo ">> running staticcheck" 87 @echo ">> running staticcheck"
74 $(STATICCHECK) -ignore "$(STATICCHECK_IGNORE)" $(pkgs) 88 $(STATICCHECK) -ignore "$(STATICCHECK_IGNORE)" $(pkgs)
75 89
76unused: $(GOVENDOR) 90.PHONY: common-unused
91common-unused: $(GOVENDOR)
77 @echo ">> running check for unused packages" 92 @echo ">> running check for unused packages"
78 @$(GOVENDOR) list +unused | grep . && exit 1 || echo 'No unused packages' 93 @$(GOVENDOR) list +unused | grep . && exit 1 || echo 'No unused packages'
79 94
80build: promu 95.PHONY: common-build
96common-build: promu
81 @echo ">> building binaries" 97 @echo ">> building binaries"
82 $(PROMU) build --prefix $(PREFIX) 98 $(PROMU) build --prefix $(PREFIX)
83 99
84tarball: promu 100.PHONY: common-tarball
101common-tarball: promu
85 @echo ">> building release tarball" 102 @echo ">> building release tarball"
86 $(PROMU) tarball --prefix $(PREFIX) $(BIN_DIR) 103 $(PROMU) tarball --prefix $(PREFIX) $(BIN_DIR)
87 104
88docker: 105.PHONY: common-docker
89 docker build -t "$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" . 106common-docker:
107 docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" .
108
109.PHONY: common-docker-publish
110common-docker-publish:
111 docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)"
90 112
113.PHONY: common-docker-tag-latest
114common-docker-tag-latest:
115 docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):latest"
116
117.PHONY: promu
91promu: 118promu:
92 GOOS= GOARCH= $(GO) get -u github.com/prometheus/promu 119 GOOS= GOARCH= $(GO) get -u github.com/prometheus/promu
93 120
94$(FIRST_GOPATH)/bin/staticcheck: 121.PHONY: $(STATICCHECK)
122$(STATICCHECK):
95 GOOS= GOARCH= $(GO) get -u honnef.co/go/tools/cmd/staticcheck 123 GOOS= GOARCH= $(GO) get -u honnef.co/go/tools/cmd/staticcheck
96 124
97$(FIRST_GOPATH)/bin/govendor: 125.PHONY: $(GOVENDOR)
126$(GOVENDOR):
98 GOOS= GOARCH= $(GO) get -u github.com/kardianos/govendor 127 GOOS= GOARCH= $(GO) get -u github.com/kardianos/govendor
99
100.PHONY: all style check_license format build test vet assets tarball docker promu staticcheck $(FIRST_GOPATH)/bin/staticcheck govendor $(FIRST_GOPATH)/bin/govendor \ No newline at end of file