From 1647e37e6c66884f0b981d0b3d63409450811231 Mon Sep 17 00:00:00 2001 From: Simon Pasquier Date: Wed, 3 Jul 2019 09:42:52 +0200 Subject: [PATCH] Build ARM container images (#496) It also updates the Circle CI configuration to use the Prometheus orb. Signed-off-by: Simon Pasquier --- .circleci/config.yml | 82 +++++--------------------------------------- .dockerignore | 2 ++ Dockerfile | 8 +++-- Makefile | 3 ++ 4 files changed, 20 insertions(+), 75 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2680ee4..bb6fd31 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -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 diff --git a/.dockerignore b/.dockerignore index 69c6945..ca39bcf 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,3 +2,5 @@ .tarballs/ !.build/linux-amd64/ +!.build/linux-armv7 +!.build/linux-arm64 diff --git a/Dockerfile b/Dockerfile index 19b9f06..b46002e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 " -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 diff --git a/Makefile b/Makefile index 6012f30..ee6a772 100644 --- 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 -- 2.25.1