diff options
author | Ben Kochie <superq@gmail.com> | 2018-07-23 09:38:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-23 09:38:39 +0200 |
commit | 981de58fadfb50c688a274d01e7a382919b4c19a (patch) | |
tree | 25fc52b92a49edee60982c6bdfbf13ddff814cea | |
parent | 23f95c8e04bb21f7a20d93097ace6a5de61c882b (diff) | |
download | prometheus_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.yml | 47 | ||||
-rw-r--r-- | Makefile | 17 | ||||
-rw-r--r-- | Makefile.common | 59 |
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 | ||
134 | workflows: | 111 | workflows: |
135 | version: 2 | 112 | version: 2 |
@@ -70,14 +70,17 @@ $(eval $(call goarch_pair,mips64el,mipsel)) | |||
70 | 70 | ||
71 | all: style vet staticcheck checkmetrics build test $(cross-test) $(test-e2e) | 71 | all: style vet staticcheck checkmetrics build test $(cross-test) $(test-e2e) |
72 | 72 | ||
73 | .PHONY: test | ||
73 | test: collector/fixtures/sys/.unpacked | 74 | test: 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 | ||
77 | test-32bit: collector/fixtures/sys/.unpacked | 79 | test-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 | ||
81 | skip-test-32bit: | 84 | skip-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 | ||
90 | test-e2e: build collector/fixtures/sys/.unpacked | 94 | test-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 | ||
94 | skip-test-e2e: | 99 | skip-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 | ||
97 | checkmetrics: $(PROMTOOL) | 103 | checkmetrics: $(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 | ||
101 | docker: | 108 | docker: |
102 | ifeq ($(MACH), ppc64le) | 109 | ifeq ($(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 | ||
108 | test-docker: | 116 | test-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 = ./... | |||
36 | PREFIX ?= $(shell pwd) | 36 | PREFIX ?= $(shell pwd) |
37 | BIN_DIR ?= $(shell pwd) | 37 | BIN_DIR ?= $(shell pwd) |
38 | DOCKER_IMAGE_TAG ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD)) | 38 | DOCKER_IMAGE_TAG ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD)) |
39 | DOCKER_REPO ?= prom | ||
39 | 40 | ||
41 | .PHONY: all | ||
40 | all: style staticcheck unused build test | 42 | all: style staticcheck unused build test |
41 | 43 | ||
42 | style: | 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 | ||
50 | common-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 | ||
46 | check_license: | 54 | .PHONY: common-check_license |
55 | common-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 | ||
56 | test-short: | 65 | .PHONY: common-test-short |
66 | common-test-short: | ||
57 | @echo ">> running short tests" | 67 | @echo ">> running short tests" |
58 | $(GO) test -short $(pkgs) | 68 | $(GO) test -short $(pkgs) |
59 | 69 | ||
60 | test: | 70 | .PHONY: common-test |
71 | common-test: | ||
61 | @echo ">> running all tests" | 72 | @echo ">> running all tests" |
62 | $(GO) test -race $(pkgs) | 73 | $(GO) test -race $(pkgs) |
63 | 74 | ||
64 | format: | 75 | .PHONY: common-format |
76 | common-format: | ||
65 | @echo ">> formatting code" | 77 | @echo ">> formatting code" |
66 | $(GO) fmt $(pkgs) | 78 | $(GO) fmt $(pkgs) |
67 | 79 | ||
68 | vet: | 80 | .PHONY: common-vet |
81 | common-vet: | ||
69 | @echo ">> vetting code" | 82 | @echo ">> vetting code" |
70 | $(GO) vet $(pkgs) | 83 | $(GO) vet $(pkgs) |
71 | 84 | ||
72 | staticcheck: $(STATICCHECK) | 85 | .PHONY: common-staticcheck |
86 | common-staticcheck: $(STATICCHECK) | ||
73 | @echo ">> running staticcheck" | 87 | @echo ">> running staticcheck" |
74 | $(STATICCHECK) -ignore "$(STATICCHECK_IGNORE)" $(pkgs) | 88 | $(STATICCHECK) -ignore "$(STATICCHECK_IGNORE)" $(pkgs) |
75 | 89 | ||
76 | unused: $(GOVENDOR) | 90 | .PHONY: common-unused |
91 | common-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 | ||
80 | build: promu | 95 | .PHONY: common-build |
96 | common-build: promu | ||
81 | @echo ">> building binaries" | 97 | @echo ">> building binaries" |
82 | $(PROMU) build --prefix $(PREFIX) | 98 | $(PROMU) build --prefix $(PREFIX) |
83 | 99 | ||
84 | tarball: promu | 100 | .PHONY: common-tarball |
101 | common-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 | ||
88 | docker: | 105 | .PHONY: common-docker |
89 | docker build -t "$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" . | 106 | common-docker: |
107 | docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" . | ||
108 | |||
109 | .PHONY: common-docker-publish | ||
110 | common-docker-publish: | ||
111 | docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)" | ||
90 | 112 | ||
113 | .PHONY: common-docker-tag-latest | ||
114 | common-docker-tag-latest: | ||
115 | docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):latest" | ||
116 | |||
117 | .PHONY: promu | ||
91 | promu: | 118 | promu: |
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 | ||