diff --git a/.github/workflows/ansible-test.yml b/.github/workflows/ansible-test.yml index 7bf0103a..52be4297 100644 --- a/.github/workflows/ansible-test.yml +++ b/.github/workflows/ansible-test.yml @@ -48,3 +48,6 @@ jobs: - name: Run integration tests on Python ${{ matrix.python_version }} run: ansible-test integration --docker -v --color --retry-on-error --python ${{ matrix.python_version }} --continue-on-error --diff --coverage + + - name: Upload coverage data + run: tests/coverage.sh diff --git a/README.md b/README.md index bd8217ac..7454f8c9 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Kubernetes Collection for Ansible -[![CI](https://github.com/ansible-collections/kubernetes/workflows/CI/badge.svg?branch=master)](https://github.com/ansible-collections/kubernetes/actions) +[![CI](https://github.com/ansible-collections/kubernetes/workflows/CI/badge.svg?branch=master)](https://github.com/ansible-collections/kubernetes/actions) ![Codecov](https://img.shields.io/codecov/c/github/ansible-collections/kubernetes) This repo hosts the `community.kubernetes` Ansible Collection. diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 00000000..f0f6358e --- /dev/null +++ b/codecov.yml @@ -0,0 +1,4 @@ +coverage: + precision: 2 + round: down + range: "70...100" diff --git a/tests/coverage.sh b/tests/coverage.sh new file mode 100755 index 00000000..388d9270 --- /dev/null +++ b/tests/coverage.sh @@ -0,0 +1,34 @@ +#!/bin/bash -eux + +set -o pipefail + +# Script Collection CI +# Once working, we may move this script elsewhere - gundalow + +if find tests/output/coverage/ -mindepth 1 -name '.*' -prune -o -print -quit | grep -q .; then + stub="" + + # shellcheck disable=SC2086 + ansible-test coverage xml -v --requirements --group-by command --group-by version ${stub:+"$stub"} + + # upload coverage report to codecov.io + # Example: tests/output/coverage/integration=kubernetes_team=docker-default=python-3.6=coverage.98a48352c8fc.4207.186313 + for file in tests/output/coverage/coverage=*.xml; do + flags="${file##*/coverage=}" + flags="${flags%.xml}" + flags="${flags//=/,}" + flags="${flags//[^a-zA-Z0-9_,]/_}" + + bash <(curl -s https://codecov.io/bash) \ + -f "${file}" \ + -F "${flags}" \ + -t TODO \ # kubernetes + -X coveragepy \ + -X gcov \ + -X fix \ + -X search \ + -X xcode \ + -K \ + || echo "Failed to upload code coverage report to codecov.io: ${file}" + done +fi