diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..71893b8 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,117 @@ +--- +version: 2 + +jobs: + test: + docker: + - image: circleci/golang:1.10 + working_directory: /go/src/github.com/prometheus/statsd_exporter + resource_class: large + + steps: + - checkout + - run: make promu + - run: make check_license style unused staticcheck build + - run: rm -v statsd_exporter + + build: + machine: true + working_directory: /home/circleci/.go_workspace/src/github.com/prometheus/statsd_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/statsd_exporter + + environment: + DOCKER_IMAGE_NAME: prom/statsd-exporter + QUAY_IMAGE_NAME: quay.io/prometheus/statsd-exporter + + steps: + - checkout + - setup_remote_docker + - attach_workspace: + at: . + - run: ln -s .build/linux-amd64/statsd_exporter statsd_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/statsd_exporter + + environment: + DOCKER_IMAGE_NAME: prom/statsd-exporter + QUAY_IMAGE_NAME: quay.io/prometheus/statsd-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} + - 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/statsd_exporter statsd_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 + statsd_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 index ca90a69..0000000 --- a/circle.yml +++ /dev/null @@ -1,62 +0,0 @@ -machine: - environment: - DOCKER_IMAGE_NAME: prom/statsd-exporter - QUAY_IMAGE_NAME: quay.io/prometheus/statsd-exporter - DOCKER_TEST_IMAGE_NAME: quay.io/prometheus/golang-builder:1.8-base - REPO_PATH: github.com/prometheus/statsd_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/statsd_exporter statsd_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