--- version: 2.1 executors: # Whenever the Go version is updated here, .promu.yml should # also be updated. golang: docker: - image: circleci/golang:1.12 jobs: test: executor: golang steps: - checkout - run: make promu - run: make - store_artifacts: path: node_exporter destination: /build/node_exporter - run: rm -v node_exporter codespell: docker: - image: circleci/python steps: - checkout - run: sudo pip install codespell - run: codespell --skip=".git,./vendor,ttar,go.mod,go.sum" -L uint,packages\',uptodate build: machine: image: ubuntu-1604:201903-01 environment: DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.11-base REPO_PATH: github.com/prometheus/node_exporter steps: - checkout - run: docker run --privileged linuxkit/binfmt:v0.6 - run: make promu - run: promu crossbuild - run: promu --config .promu-cgo.yml crossbuild - persist_to_workspace: root: . paths: - .build - store_artifacts: path: .build destination: /build - run: command: | if [ -n "$CIRCLE_TAG" ]; then make docker DOCKER_IMAGE_TAG=$CIRCLE_TAG else make docker 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: executor: golang steps: - checkout - setup_remote_docker: version: 18.06.0-ce - run: docker run --privileged linuxkit/binfmt:v0.6 - attach_workspace: at: . - 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 - run: make docker-manifest - run: make docker-manifest DOCKER_REPO=quay.io/prometheus docker_hub_release_tags: executor: golang steps: - checkout - setup_remote_docker: version: 18.06.0-ce - run: docker run --privileged linuxkit/binfmt:v0.6 - 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: 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: make docker-publish DOCKER_IMAGE_TAG="$CIRCLE_TAG" - run: make docker-publish DOCKER_IMAGE_TAG="$CIRCLE_TAG" DOCKER_REPO=quay.io/prometheus - run: make docker-manifest DOCKER_IMAGE_TAG="$CIRCLE_TAG" - run: make docker-manifest DOCKER_IMAGE_TAG="$CIRCLE_TAG" DOCKER_REPO=quay.io/prometheus - 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 make docker-manifest DOCKER_IMAGE_TAG="latest" make docker-manifest DOCKER_IMAGE_TAG="latest" DOCKER_REPO=quay.io/prometheus fi workflows: version: 2 node_exporter: jobs: - test: filters: tags: only: /.*/ - build: filters: tags: only: /.*/ - codespell: filters: tags: only: /.*/ - docker_hub_master: context: org-context requires: - test - build filters: branches: only: master - docker_hub_release_tags: context: org-context requires: - test - build filters: tags: only: /^v.*/ branches: ignore: /.*/