aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.circleci/config.yml146
-rw-r--r--Makefile1
-rw-r--r--circle.yml68
3 files changed, 147 insertions, 68 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 0000000..edea5d2
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,146 @@
1---
2version: 2
3
4jobs:
5 test:
6 docker:
7 - image: circleci/golang:1.10
8 working_directory: /go/src/github.com/prometheus/node_exporter
9
10 steps:
11 - checkout
12 - run: make promu
13 - run: make
14 - run: rm -v node_exporter
15
16 build:
17 machine: true
18 working_directory: /home/circleci/.go_workspace/src/github.com/prometheus/node_exporter
19
20 environment:
21 DOCKER_IMAGE_NAME: prom/node-exporter
22 QUAY_IMAGE_NAME: quay.io/prometheus/node-exporter
23 DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base
24 REPO_PATH: github.com/prometheus/node_exporter
25
26 steps:
27 - checkout
28 - run: make promu
29 - run: promu crossbuild -v
30 - persist_to_workspace:
31 root: .
32 paths:
33 - .build
34 - run: ln -s .build/linux-amd64/node_exporter node_exporter
35 - run:
36 command: |
37 if [ -n "$CIRCLE_TAG" ]; then
38 make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG
39 make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG
40 else
41 make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME
42 make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME
43 fi
44 - run: docker images
45 - run: docker run --rm -t -v "$(pwd):/app" "${DOCKER_TEST_IMAGE_NAME}" -i "${REPO_PATH}" -T
46 - run:
47 command: |
48 if [ -n "$CIRCLE_TAG" ]; then
49 make test-docker DOCKER_IMAGE_TAG=$CIRCLE_TAG
50 else
51 make test-docker
52 fi
53
54 docker_hub_master:
55 docker:
56 - image: circleci/golang:1.10
57 working_directory: /go/src/github.com/prometheus/node_exporter
58
59 environment:
60 DOCKER_IMAGE_NAME: prom/node-exporter
61 QUAY_IMAGE_NAME: quay.io/prometheus/node-exporter
62 DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base
63 REPO_PATH: github.com/prometheus/node_exporter
64
65 steps:
66 - checkout
67 - setup_remote_docker
68 - attach_workspace:
69 at: .
70 - run: ln -s .build/linux-amd64/node_exporter node_exporter
71 - run: make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME
72 - run: make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME
73 - run: docker images
74 - run: docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD
75 - run: docker login -u $QUAY_LOGIN -p $QUAY_PASSWORD quay.io
76 - run: docker push $DOCKER_IMAGE_NAME
77 - run: docker push $QUAY_IMAGE_NAME
78
79 docker_hub_release_tags:
80 docker:
81 - image: circleci/golang:1.10
82 working_directory: /go/src/github.com/prometheus/node_exporter
83
84 environment:
85 DOCKER_IMAGE_NAME: prom/node-exporter
86 QUAY_IMAGE_NAME: quay.io/prometheus/node-exporter
87 DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base
88 REPO_PATH: github.com/prometheus/node_exporter
89
90 steps:
91 - checkout
92 - setup_remote_docker
93 - run: mkdir -v -p ${HOME}/bin
94 - run: curl -L 'https://github.com/aktau/github-release/releases/download/v0.7.2/linux-amd64-github-release.tar.bz2' | tar xvjf - --strip-components 3 -C ${HOME}/bin
95 - run: echo 'export PATH=${HOME}/bin:${PATH}' >> ${BASH_ENV}
96 - run: make promu
97 - attach_workspace:
98 at: .
99 - run: make promu
100 - run: promu crossbuild tarballs
101 - run: promu checksum .tarballs
102 - run: promu release .tarballs
103 - store_artifacts:
104 path: .tarballs
105 destination: releases
106 - run:
107 command: |
108 if [ -n "$CIRCLE_TAG" ]; then
109 make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG
110 make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG
111 else
112 make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME
113 make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME
114 fi
115 - run: docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD
116 - run: docker login -u $QUAY_LOGIN -p $QUAY_PASSWORD quay.io
117 - run: |
118 if [[ "$CIRCLE_TAG" =~ ^v[0-9]+(\.[0-9]+){2}$ ]]; then
119 docker tag "$DOCKER_IMAGE_NAME:$CIRCLE_TAG" "$DOCKER_IMAGE_NAME:latest"
120 docker tag "$QUAY_IMAGE_NAME:$CIRCLE_TAG" "$QUAY_IMAGE_NAME:latest"
121 fi
122 - run: echo docker push $DOCKER_IMAGE_NAME
123 - run: echo docker push $QUAY_IMAGE_NAME
124
125workflows:
126 version: 2
127 node_exporter:
128 jobs:
129 - test
130 - build
131 - docker_hub_master:
132 requires:
133 - test
134 - build
135 filters:
136 branches:
137 only: master
138 - docker_hub_release_tags:
139 requires:
140 - test
141 - build
142 filters:
143 branches:
144 ignore: /.*/
145 tags:
146 only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
diff --git a/Makefile b/Makefile
index ce2f58d..e66a8a2 100644
--- a/Makefile
+++ b/Makefile
@@ -90,6 +90,7 @@ skip-test-32bit:
90 @echo ">> SKIP running tests in 32-bit mode: not supported on $(OS_detected)/$(GOARCH)" 90 @echo ">> SKIP running tests in 32-bit mode: not supported on $(OS_detected)/$(GOARCH)"
91 91
92collector/fixtures/sys/.unpacked: collector/fixtures/sys.ttar 92collector/fixtures/sys/.unpacked: collector/fixtures/sys.ttar
93 @echo ">> extracting sysfs fixtures"
93 ./ttar -C collector/fixtures -x -f collector/fixtures/sys.ttar 94 ./ttar -C collector/fixtures -x -f collector/fixtures/sys.ttar
94 touch $@ 95 touch $@
95 96
diff --git a/circle.yml b/circle.yml
deleted file mode 100644
index 3268554..0000000
--- a/circle.yml
+++ /dev/null
@@ -1,68 +0,0 @@
1machine:
2 environment:
3 DOCKER_IMAGE_NAME: prom/node-exporter
4 QUAY_IMAGE_NAME: quay.io/prometheus/node-exporter
5 DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base
6 REPO_PATH: github.com/prometheus/node_exporter
7 pre:
8 - sudo curl -L -o /usr/bin/docker 'https://s3-external-1.amazonaws.com/circle-downloads/docker-1.9.1-circleci'
9 - sudo chmod 0755 /usr/bin/docker
10 - sudo curl -L 'https://github.com/aktau/github-release/releases/download/v0.7.2/linux-amd64-github-release.tar.bz2' | tar xvjf - --strip-components 3 -C $HOME/bin
11 services:
12 - docker
13
14dependencies:
15 pre:
16 - make promu
17 - docker info
18 override:
19 - ln -s ${HOME}/${CIRCLE_PROJECT_REPONAME} ${HOME}/.go_workspace/src/github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}
20 - |
21 cd ${HOME}/.go_workspace/src/github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}
22 make
23 - rm -v ${HOME}/${CIRCLE_PROJECT_REPONAME}/node_exporter
24 - promu crossbuild
25 - ln -s .build/linux-amd64/node_exporter node_exporter
26 - |
27 if [ -n "$CIRCLE_TAG" ]; then
28 make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG
29 make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG
30 else
31 make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME
32 make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME
33 fi
34 post:
35 - mkdir $CIRCLE_ARTIFACTS/binaries/ && cp -a .build/* $CIRCLE_ARTIFACTS/binaries/
36 - docker images
37
38test:
39 override:
40 - docker run --rm -t -v "$(pwd):/app" "${DOCKER_TEST_IMAGE_NAME}" -i "${REPO_PATH}" -T
41 - make test-docker DOCKER_IMAGE_TAG=$CIRCLE_TAG
42
43deployment:
44 hub_branch:
45 branch: master
46 owner: prometheus
47 commands:
48 - docker login -e $DOCKER_EMAIL -u $DOCKER_LOGIN -p $DOCKER_PASSWORD
49 - docker login -e $QUAY_EMAIL -u $QUAY_LOGIN -p $QUAY_PASSWORD quay.io
50 - docker push $DOCKER_IMAGE_NAME
51 - docker push $QUAY_IMAGE_NAME
52 hub_tag:
53 tag: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
54 owner: prometheus
55 commands:
56 - promu crossbuild tarballs
57 - promu checksum .tarballs
58 - promu release .tarballs
59 - mkdir $CIRCLE_ARTIFACTS/releases/ && cp -a .tarballs/* $CIRCLE_ARTIFACTS/releases/
60 - docker login -e $DOCKER_EMAIL -u $DOCKER_LOGIN -p $DOCKER_PASSWORD
61 - docker login -e $QUAY_EMAIL -u $QUAY_LOGIN -p $QUAY_PASSWORD quay.io
62 - |
63 if [[ "$CIRCLE_TAG" =~ ^v[0-9]+(\.[0-9]+){2}$ ]]; then
64 docker tag "$DOCKER_IMAGE_NAME:$CIRCLE_TAG" "$DOCKER_IMAGE_NAME:latest"
65 docker tag "$QUAY_IMAGE_NAME:$CIRCLE_TAG" "$QUAY_IMAGE_NAME:latest"
66 fi
67 - docker push $DOCKER_IMAGE_NAME
68 - docker push $QUAY_IMAGE_NAME