Update CircleCI build (#318)
authorSimon Pasquier <spasquie@redhat.com>
Wed, 23 May 2018 09:18:45 +0000 (11:18 +0200)
committerBrian Brazil <brian.brazil@robustperception.io>
Wed, 23 May 2018 09:18:45 +0000 (10:18 +0100)
* Update CircleCI build
This change upgrades the build configuration to CircleCI 2.0.
* Use machine executor for IPv6 tests
* Fix working directory for test

Signed-off-by: Simon Pasquier <spasquie@redhat.com>
.circleci/config.yml [new file with mode: 0644]
circle.yml [deleted file]

diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644 (file)
index 0000000..c380f44
--- /dev/null
@@ -0,0 +1,126 @@
+---
+version: 2
+
+jobs:
+  # IPv6 tests require the machine executor.
+  # See https://circleci.com/docs/2.0/faq/#can-i-use-ipv6-in-my-tests for details.
+  test:
+    machine: true
+    working_directory: /home/circleci/.go_workspace/src/github.com/prometheus/blackbox_exporter
+    environment:
+      DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base
+
+    steps:
+    - checkout
+    - run:
+        name: enable ipv6
+        command: |
+          cat <<'EOF' | sudo tee /etc/docker/daemon.json
+          {
+            "ipv6": true,
+            "fixed-cidr-v6": "2001:db8:1::/64"
+          }
+          EOF
+          sudo service docker restart
+    - run: docker run --rm -t -v "$(pwd):/app" "${DOCKER_TEST_IMAGE_NAME}" -i github.com/prometheus/blackbox_exporter -T
+
+  build:
+    machine: true
+    working_directory: /home/circleci/.go_workspace/src/github.com/prometheus/blackbox_exporter
+
+    steps:
+    - checkout
+    - run: make promu
+    - run: promu crossbuild -v
+    - persist_to_workspace:
+        root: .
+        paths:
+        - .build
+
+  docker_hub_master:
+    docker:
+    - image: circleci/golang:1.10
+    working_directory: /go/src/github.com/prometheus/blackbox_exporter
+
+    environment:
+      DOCKER_IMAGE_NAME: prom/blackbox-exporter
+      QUAY_IMAGE_NAME: quay.io/prometheus/blackbox-exporter
+
+    steps:
+    - checkout
+    - setup_remote_docker
+    - attach_workspace:
+        at: .
+    - run: ln -s .build/linux-amd64/blackbox_exporter blackbox_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/blackbox_exporter
+
+    environment:
+      DOCKER_IMAGE_NAME: prom/blackbox-exporter
+      QUAY_IMAGE_NAME: quay.io/prometheus/blackbox-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
+    - run: promu crossbuild tarballs
+    - run: promu checksum .tarballs
+    - run: promu release .tarballs
+    - store_artifacts:
+        path: .tarballs
+        destination: releases
+    - run: ln -s .build/linux-amd64/blackbox_exporter blackbox_exporter
+    - run: make docker DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG
+    - run: make docker DOCKER_IMAGE_NAME=$QUAY_IMAGE_NAME DOCKER_IMAGE_TAG=$CIRCLE_TAG
+    - 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: docker push $DOCKER_IMAGE_NAME
+    - run: docker push $QUAY_IMAGE_NAME
+
+workflows:
+  version: 2
+  blackbox_exporter:
+    jobs:
+    - test:
+        filters:
+          tags:
+            only: /.*/
+    - build:
+        filters:
+          tags:
+            only: /.*/
+    - docker_hub_master:
+        requires:
+        - test
+        - build
+        filters:
+          branches:
+            only: master
+    - docker_hub_release_tags:
+        requires:
+        - test
+        - build
+        filters:
+          tags:
+            only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
+          branches:
+            ignore: /.*/
+
diff --git a/circle.yml b/circle.yml
deleted file mode 100644 (file)
index 0a2d2b1..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-machine:
-  environment:
-    DOCKER_IMAGE_NAME: prom/blackbox-exporter
-    QUAY_IMAGE_NAME: quay.io/prometheus/blackbox-exporter
-    DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.10-base
-    REPO_PATH: github.com/prometheus/blackbox_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.6.2/linux-amd64-github-release.tar.bz2' | tar xvjf - --strip-components 3 -C $HOME/bin
-  services:
-    - docker
-
-dependencies:
-  pre:
-    - make promu
-    - docker info
-  override:
-    - promu crossbuild
-    - ln -s .build/linux-amd64/blackbox_exporter blackbox_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
-
-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