From adeb973c31f63c61a7314b152729801326e253c0 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 22 Mar 2020 10:55:04 +0100 Subject: [PATCH] Make test-coverage in one step, deploy release only on tags --- .travis.yml | 13 ++++---- Makefile | 4 +++ scripts/ginkgo.coverage.sh | 61 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 6 deletions(-) create mode 100755 scripts/ginkgo.coverage.sh diff --git a/.travis.yml b/.travis.yml index 8ff0f8f7..914e034c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,10 +9,11 @@ before_install: - make deps - curl -LO https://storage.googleapis.com/container-diff/latest/container-diff-linux-amd64 && chmod +x container-diff-linux-amd64 && mkdir -p $HOME/bin && export PATH=$PATH:$HOME/bin && mv container-diff-linux-amd64 $HOME/bin/container-diff script: - - make multiarch-build test test-integration + - make multiarch-build test-integration test-coverage after_success: - - make coverage - - bash <(curl -s https://codecov.io/bash) - - git config --global user.name "Deployer" && git config --global user.email foo@bar.com - - go get github.com/tcnksm/ghr - - ghr -u mudler -r luet --replace $TRAVIS_TAG release/ + - | + if [ -n "$TRAVIS_TAG" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then + git config --global user.name "Deployer" && git config --global user.email foo@bar.com + go get github.com/tcnksm/ghr + ghr -u mudler -r luet --replace $TRAVIS_TAG release/ + fi diff --git a/Makefile b/Makefile index a91a54b1..55e8850c 100644 --- a/Makefile +++ b/Makefile @@ -29,6 +29,10 @@ test-integration: coverage: go test ./... -race -coverprofile=coverage.txt -covermode=atomic +.PHONY: test-coverage +test-coverage: + scripts/ginkgo.coverage.sh --codecov + .PHONY: help help: # make all => deps test lint build diff --git a/scripts/ginkgo.coverage.sh b/scripts/ginkgo.coverage.sh new file mode 100755 index 00000000..adf87990 --- /dev/null +++ b/scripts/ginkgo.coverage.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +# Copyright 2016 The Kubernetes Authors All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -euo pipefail + +covermode=${COVERMODE:-atomic} +coverdir=$(mktemp -d /tmp/coverage.XXXXXXXXXX) +profile="${coverdir}/cover.out" +coveragetxt="coverage.txt" + +hash goveralls 2>/dev/null || go get github.com/mattn/goveralls +hash godir 2>/dev/null || go get github.com/Masterminds/godir + +generate_cover_data() { + ginkgo -failFast -cover -r -v . + echo "" > ${coveragetxt} + find . -type f -name "*.coverprofile" | while read -r file; do cat "$file" >> ${coveragetxt} && mv "$file" "${coverdir}"; done + echo "mode: $covermode" >"$profile" + grep -h -v "^mode:" "$coverdir"/*.coverprofile >>"$profile" +} + +push_to_coveralls() { + goveralls -coverprofile="${profile}" -service=circle-ci -repotoken "$COVERALLS_REPO_TOKEN" || echo "push to coveralls failed" +} + +push_to_codecov() { + bash <(curl -s https://codecov.io/bash) || echo "push to codecov failed" +} + +generate_cover_data +go tool cover -func "${profile}" + +case "${1-}" in + --html) + go tool cover -html "${profile}" + ;; + --coveralls) + if [ -z "$COVERALLS_REPO_TOKEN" ]; then + # shellcheck disable=SC2016 + echo '$COVERALLS_REPO_TOKEN not set. Skipping pushing coverage report to coveralls.io' + exit + fi + push_to_coveralls + ;; + --codecov) + push_to_codecov + ;; +esac