From 65e485c4e926083c8cb4baf36a8d80d16a963421 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Thu, 8 Mar 2018 12:43:49 +0100 Subject: [PATCH] Convert circleci config to 2.0. (#844) --- .circleci/config.yml | 146 +++++++++++++++++++++++++++++++++++++++++++ Makefile | 1 + circle.yml | 68 -------------------- 3 files changed, 147 insertions(+), 68 deletions(-) create mode 100644 .circleci/config.yml delete mode 100644 circle.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..edea5d25 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,146 @@ +--- +version: 2 + +jobs: + test: + docker: + - image: circleci/golang:1.10 + working_directory: /go/src/github.com/prometheus/node_exporter + + steps: + - checkout + - run: make promu + - run: make + - run: rm -v node_exporter + + build: + machine: true + working_directory: /home/circleci/.go_workspace/src/github.com/prometheus/node_exporter + + environment: + DOCKER_IMAGE_NAME: prom/node-exporter + QUAY_IMAGE_NAME: quay.io/prometheus/node-exporter + DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base + REPO_PATH: github.com/prometheus/node_exporter + + steps: + - checkout + - run: make promu + - run: promu crossbuild -v + - persist_to_workspace: + root: . + paths: + - .build + - run: ln -s .build/linux-amd64/node_exporter node_exporter + - run: + command: | + if [ -n "$CIRCLE_TAG" ]; then + make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG + make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG + else + make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME + make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME + fi + - run: docker images + - run: docker run --rm -t -v "$(pwd):/app" "${DOCKER_TEST_IMAGE_NAME}" -i "${REPO_PATH}" -T + - run: + command: | + if [ -n "$CIRCLE_TAG" ]; then + make test-docker DOCKER_IMAGE_TAG=$CIRCLE_TAG + else + make test-docker + fi + + docker_hub_master: + docker: + - image: circleci/golang:1.10 + working_directory: /go/src/github.com/prometheus/node_exporter + + environment: + DOCKER_IMAGE_NAME: prom/node-exporter + QUAY_IMAGE_NAME: quay.io/prometheus/node-exporter + DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base + REPO_PATH: github.com/prometheus/node_exporter + + steps: + - checkout + - setup_remote_docker + - attach_workspace: + at: . + - run: ln -s .build/linux-amd64/node_exporter node_exporter + - run: make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME + - run: make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME + - run: docker images + - run: docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD + - run: docker login -u $QUAY_LOGIN -p $QUAY_PASSWORD quay.io + - run: docker push $DOCKER_IMAGE_NAME + - run: docker push $QUAY_IMAGE_NAME + + docker_hub_release_tags: + docker: + - image: circleci/golang:1.10 + working_directory: /go/src/github.com/prometheus/node_exporter + + environment: + DOCKER_IMAGE_NAME: prom/node-exporter + QUAY_IMAGE_NAME: quay.io/prometheus/node-exporter + DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base + REPO_PATH: github.com/prometheus/node_exporter + + steps: + - checkout + - setup_remote_docker + - run: mkdir -v -p ${HOME}/bin + - 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 + - run: echo 'export PATH=${HOME}/bin:${PATH}' >> ${BASH_ENV} + - run: make promu + - attach_workspace: + at: . + - run: make promu + - run: promu crossbuild tarballs + - run: promu checksum .tarballs + - run: promu release .tarballs + - store_artifacts: + path: .tarballs + destination: releases + - run: + command: | + if [ -n "$CIRCLE_TAG" ]; then + make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG + make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG + else + make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME + make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME + fi + - run: docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD + - run: docker login -u $QUAY_LOGIN -p $QUAY_PASSWORD quay.io + - run: | + if [[ "$CIRCLE_TAG" =~ ^v[0-9]+(\.[0-9]+){2}$ ]]; then + docker tag "$DOCKER_IMAGE_NAME:$CIRCLE_TAG" "$DOCKER_IMAGE_NAME:latest" + docker tag "$QUAY_IMAGE_NAME:$CIRCLE_TAG" "$QUAY_IMAGE_NAME:latest" + fi + - run: echo docker push $DOCKER_IMAGE_NAME + - run: echo docker push $QUAY_IMAGE_NAME + +workflows: + version: 2 + node_exporter: + jobs: + - test + - build + - docker_hub_master: + requires: + - test + - build + filters: + branches: + only: master + - docker_hub_release_tags: + requires: + - test + - build + filters: + branches: + ignore: /.*/ + tags: + only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/ diff --git a/Makefile b/Makefile index ce2f58d6..e66a8a21 100644 --- a/Makefile +++ b/Makefile @@ -90,6 +90,7 @@ skip-test-32bit: @echo ">> SKIP running tests in 32-bit mode: not supported on $(OS_detected)/$(GOARCH)" collector/fixtures/sys/.unpacked: collector/fixtures/sys.ttar + @echo ">> extracting sysfs fixtures" ./ttar -C collector/fixtures -x -f collector/fixtures/sys.ttar touch $@ diff --git a/circle.yml b/circle.yml deleted file mode 100644 index 3268554a..00000000 --- a/circle.yml +++ /dev/null @@ -1,68 +0,0 @@ -machine: - environment: - DOCKER_IMAGE_NAME: prom/node-exporter - QUAY_IMAGE_NAME: quay.io/prometheus/node-exporter - DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base - REPO_PATH: github.com/prometheus/node_exporter - pre: - - sudo curl -L -o /usr/bin/docker 'https://s3-external-1.amazonaws.com/circle-downloads/docker-1.9.1-circleci' - - sudo chmod 0755 /usr/bin/docker - - 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 - services: - - docker - -dependencies: - pre: - - make promu - - docker info - override: - - ln -s ${HOME}/${CIRCLE_PROJECT_REPONAME} ${HOME}/.go_workspace/src/github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME} - - | - cd ${HOME}/.go_workspace/src/github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME} - make - - rm -v ${HOME}/${CIRCLE_PROJECT_REPONAME}/node_exporter - - promu crossbuild - - ln -s .build/linux-amd64/node_exporter node_exporter - - | - if [ -n "$CIRCLE_TAG" ]; then - make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG - make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG - else - make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME - make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME - fi - post: - - mkdir $CIRCLE_ARTIFACTS/binaries/ && cp -a .build/* $CIRCLE_ARTIFACTS/binaries/ - - docker images - -test: - override: - - docker run --rm -t -v "$(pwd):/app" "${DOCKER_TEST_IMAGE_NAME}" -i "${REPO_PATH}" -T - - make test-docker DOCKER_IMAGE_TAG=$CIRCLE_TAG - -deployment: - hub_branch: - branch: master - owner: prometheus - commands: - - docker login -e $DOCKER_EMAIL -u $DOCKER_LOGIN -p $DOCKER_PASSWORD - - docker login -e $QUAY_EMAIL -u $QUAY_LOGIN -p $QUAY_PASSWORD quay.io - - docker push $DOCKER_IMAGE_NAME - - docker push $QUAY_IMAGE_NAME - hub_tag: - tag: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/ - owner: prometheus - commands: - - promu crossbuild tarballs - - promu checksum .tarballs - - promu release .tarballs - - mkdir $CIRCLE_ARTIFACTS/releases/ && cp -a .tarballs/* $CIRCLE_ARTIFACTS/releases/ - - docker login -e $DOCKER_EMAIL -u $DOCKER_LOGIN -p $DOCKER_PASSWORD - - docker login -e $QUAY_EMAIL -u $QUAY_LOGIN -p $QUAY_PASSWORD quay.io - - | - if [[ "$CIRCLE_TAG" =~ ^v[0-9]+(\.[0-9]+){2}$ ]]; then - docker tag "$DOCKER_IMAGE_NAME:$CIRCLE_TAG" "$DOCKER_IMAGE_NAME:latest" - docker tag "$QUAY_IMAGE_NAME:$CIRCLE_TAG" "$QUAY_IMAGE_NAME:latest" - fi - - docker push $DOCKER_IMAGE_NAME - - docker push $QUAY_IMAGE_NAME