Build ARM container images (#496)
authorSimon Pasquier <spasquie@redhat.com>
Wed, 3 Jul 2019 07:42:52 +0000 (09:42 +0200)
committerGitHub <noreply@github.com>
Wed, 3 Jul 2019 07:42:52 +0000 (09:42 +0200)
It also updates the Circle CI configuration to use the Prometheus orb.

Signed-off-by: Simon Pasquier <spasquie@redhat.com>
.circleci/config.yml
.dockerignore
Dockerfile
Makefile

index 2680ee4d48795f4302b413ae1140017d8daa8f68..bb6fd310abaf748405c9a4de4503b671e03e8f40 100644 (file)
@@ -1,12 +1,8 @@
 ---
 version: 2.1
 
-executors:
-  # Whenever the Go version is updated here, .travis.yml and .promu.yml
-  # should also be updated.
-  golang:
-    docker:
-    - image: circleci/golang:1.12
+orbs:
+  prometheus: prometheus/prometheus@0.1.0
 
 jobs:
   # IPv6 tests require the machine executor.
@@ -14,8 +10,10 @@ jobs:
   test:
     machine: true
     working_directory: /home/circleci/.go_workspace/src/github.com/prometheus/blackbox_exporter
+    # Whenever the Go version is updated here, .travis.yml and .promu.yml
+    # should also be updated.
     environment:
-      DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.11-base
+      DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.12-base
 
     steps:
     - checkout
@@ -31,69 +29,6 @@ jobs:
           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
-    - store_artifacts:
-        path: .build
-        destination: /build
-
-  docker_hub_master:
-    executor: golang
-
-    steps:
-    - checkout
-    - setup_remote_docker
-    - attach_workspace:
-        at: .
-    - run: ln -s .build/linux-amd64/blackbox_exporter blackbox_exporter
-    - run: make docker
-    - run: make docker DOCKER_REPO=quay.io/prometheus
-    - run: docker images
-    - run: docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD
-    - run: docker login -u $QUAY_LOGIN -p $QUAY_PASSWORD quay.io
-    - run: make docker-publish
-    - run: make docker-publish DOCKER_REPO=quay.io/prometheus
-
-  docker_hub_release_tags:
-    executor: golang
-
-    steps:
-    - checkout
-    - setup_remote_docker
-    - 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: ln -s .build/linux-amd64/blackbox_exporter blackbox_exporter
-    - run: make docker DOCKER_IMAGE_TAG=$CIRCLE_TAG
-    - run: make docker DOCKER_IMAGE_TAG=$CIRCLE_TAG DOCKER_REPO=quay.io/prometheus
-    - 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
-          make docker-tag-latest DOCKER_IMAGE_TAG="$CIRCLE_TAG"
-          make docker-tag-latest DOCKER_IMAGE_TAG="$CIRCLE_TAG" DOCKER_REPO=quay.io/prometheus
-          make docker-publish DOCKER_IMAGE_TAG="latest"
-          make docker-publish DOCKER_IMAGE_TAG="latest" DOCKER_REPO=quay.io/prometheus
-        fi
-    - run: make docker-publish DOCKER_IMAGE_TAG="$CIRCLE_TAG"
-    - run: make docker-publish DOCKER_REPO=quay.io/prometheus DOCKER_IMAGE_TAG="$CIRCLE_TAG"
-
 workflows:
   version: 2
   blackbox_exporter:
@@ -102,11 +37,12 @@ workflows:
         filters:
           tags:
             only: /.*/
-    - build:
+    - prometheus/build:
+        name: build
         filters:
           tags:
             only: /.*/
-    - docker_hub_master:
+    - prometheus/publish_master:
         context: org-context
         requires:
         - test
@@ -114,7 +50,7 @@ workflows:
         filters:
           branches:
             only: master
-    - docker_hub_release_tags:
+    - prometheus/publish_release:
         context: org-context
         requires:
         - test
index 69c6945349c1c67a0e7b227e511f41a1e7fecf76..ca39bcffdb6466fc6c548f361151067efce81494 100644 (file)
@@ -2,3 +2,5 @@
 .tarballs/
 
 !.build/linux-amd64/
+!.build/linux-armv7
+!.build/linux-arm64
index 19b9f0659ab4e5eab6ce8cbb1e48000a5c8f4e2d..b46002e4d6e4dae8025324a5a14d5a491db6af00 100644 (file)
@@ -1,7 +1,11 @@
-FROM        quay.io/prometheus/busybox:latest
+ARG ARCH="amd64"
+ARG OS="linux"
+FROM quay.io/prometheus/busybox-${OS}-${ARCH}:latest
 LABEL maintainer="The Prometheus Authors <prometheus-developers@googlegroups.com>"
 
-COPY blackbox_exporter  /bin/blackbox_exporter
+ARG ARCH="amd64"
+ARG OS="linux"
+COPY .build/${OS}-${ARCH}/blackbox_exporter  /bin/blackbox_exporter
 COPY blackbox.yml       /etc/blackbox_exporter/config.yml
 
 EXPOSE      9115
index 6012f30162f21519ed6142d9401f3a18cab5cf17..ee6a772caefc0d84be4468e5d71c66f6f02ba7ee 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -11,6 +11,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+# Needs to be defined before including Makefile.common to auto-generate targets
+DOCKER_ARCHS ?= amd64 armv7 arm64
+
 include Makefile.common
 
 DOCKER_IMAGE_NAME       ?= blackbox-exporter