diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..26e6e0d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,23 @@ +language: go + +go: + - "1.13" +services: + - docker +env: + global: + - TAG=$TRAVIS_BRANCH + +if: branch = master OR tag IS present + +before_script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - make before_build + +script: + - make docker_build && make docker_push && make docker_manifest + +notifications: + email: + on_success: never # default: change + on_failure: always # default: always diff --git a/Makefile b/Makefile index 0fec327..6846969 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,9 @@ COMMIT = $(shell git rev-parse --short HEAD) FULL_COMMIT = $(shell git rev-parse HEAD) RELEASE_NOTES = $(shell git log ${LAST_TAG}..HEAD --oneline --decorate) DATE = $(shell date +%Y-%m-%d) +DOCKER_REPO = wi1dcard/v2ray-exporter + +export DOCKER_CLI_EXPERIMENTAL=enabled lint: golangci-lint run *.go @@ -29,6 +32,17 @@ release: build @ghr -u wi1dcard -b "${RELEASE_NOTES}" -c "${FULL_COMMIT}" "${TAG}" dist/ docker_build: build - docker build --build-arg ARCH=amd64 -t "wi1dcard/v2ray-exporter:${TAG}" . - docker build --build-arg ARCH=arm64 -t "wi1dcard/v2ray-exporter:${TAG}-arm64" . - docker build --build-arg ARCH=arm -t "wi1dcard/v2ray-exporter:${TAG}-arm" . + docker build --build-arg ARCH=amd64 -t "${DOCKER_REPO}:${TAG}-amd64" . + docker build --build-arg ARCH=arm64 -t "${DOCKER_REPO}:${TAG}-arm64" . + docker build --build-arg ARCH=arm -t "${DOCKER_REPO}:${TAG}-arm" . + +docker_push: check_tag + docker push "${DOCKER_REPO}:${TAG}-amd64" + docker push "${DOCKER_REPO}:${TAG}-arm64" + docker push "${DOCKER_REPO}:${TAG}-arm" + +docker_manifest: check_tag + docker manifest create --amend "${DOCKER_REPO}:${TAG}" "${DOCKER_REPO}:${TAG}-amd64" "${DOCKER_REPO}:${TAG}-arm64" "${DOCKER_REPO}:${TAG}-arm" + docker manifest annotate "${DOCKER_REPO}:${TAG}" "${DOCKER_REPO}:${TAG}-arm64" --os linux --arch arm64 + docker manifest annotate "${DOCKER_REPO}:${TAG}" "${DOCKER_REPO}:${TAG}-arm" --os linux --arch arm + docker manifest push "${DOCKER_REPO}:${TAG}"