Skip to content

Commit

Permalink
common: move on to the new coverage uploader
Browse files Browse the repository at this point in the history
Move on to the new coverage uploader.
The old bash uploader is long EOL now.

See: pmem/pmdk#5548
  • Loading branch information
ldorau committed Mar 14, 2023
1 parent 4676ba6 commit 1a8f0a8
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 50 deletions.
43 changes: 43 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#
# Builds run on every pull request and every push to the repo.
#

name: CodeCoverage
on: [push, pull_request]

env:
GITHUB_REPO: pmem/rpma
# use GitHub Container Registry as a repository of docker images
GH_CR_ADDR: ghcr.io
DOCKER_REPO: ghcr.io/pmem/rpma
# use org's Private Access Token to log in to GitHub Container Registry
GH_CR_USER: ${{ secrets.GH_CR_USER }}
GH_CR_PAT: ${{ secrets.GH_CR_PAT }}
HOST_WORKDIR: /home/runner/work/rpma/rpma
WORKDIR: utils/docker
TYPE: normal
OS: ubuntu
OS_VER: latest-with-rdma-core-45
CC: gcc
TESTS_COVERAGE: 1

jobs:
linux:
name: Linux
runs-on: ubuntu-latest
steps:
- name: Clone the git repo
uses: actions/checkout@v1

- name: Pull or rebuild the image
run: cd $WORKDIR && ${{ matrix.CONFIG }} ./pull-or-rebuild-image.sh

- name: Run the build
run: cd $WORKDIR && ${{ matrix.CONFIG }} ./build.sh

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
gcov: true
root_dir: /home/runner/work/rpma/
working-directory: /home/runner/work/rpma/
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ if(DEBUG_USE_UBSAN)
endif()

if(TESTS_COVERAGE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -coverage")
set(CMAKE_C_FLAGS "-O0 --coverage ${CMAKE_C_FLAGS}")
endif()

if(BUILD_DEVELOPER_MODE)
Expand Down
4 changes: 0 additions & 4 deletions utils/docker/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,6 @@ if [[ "$command" == "" ]]; then
esac
fi

if [ "$TESTS_COVERAGE" == "1" ]; then
docker_opts="${docker_opts} `bash <(curl -s https://codecov.io/env)`";
fi

if [ -n "$DNS_SERVER" ]; then DNS_SETTING=" --dns=$DNS_SERVER "; fi

if [ "$AUTO_DOC_UPDATE" == "1" ]; then
Expand Down
65 changes: 20 additions & 45 deletions utils/docker/run-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -53,32 +53,6 @@ function sudo_password() {
echo $USERPASS | sudo -S $*
}

function upload_codecov() {
printf "\n$(tput setaf 1)$(tput setab 7)COVERAGE ${FUNCNAME[0]} START$(tput sgr 0)\n"

# set proper gcov command
clang_used=$($CMAKE -LA -N . | grep CMAKE_C_COMPILER | grep clang | wc -c)
if [[ $clang_used > 0 ]]; then
gcovexe="llvm-cov gcov"
else
gcovexe="gcov"
fi

# run gcov exe, using their bash (remove parsed coverage files, set flag and exit 1 if not successful)
# we rely on parsed report on codecov.io; the output is quite long, hence it's disabled using -X flag
/opt/scripts/codecov -c -F $1 -Z -x "$gcovexe" -X "gcovout"

printf "check for any leftover gcov files\n"
leftover_files=$(find . -name "*.gcov" | wc -l)
if [[ $leftover_files > 0 ]]; then
# display found files and exit with error (they all should be parsed)
find . -name "*.gcov"
return 1
fi

printf "$(tput setaf 1)$(tput setab 7)COVERAGE ${FUNCNAME[0]} END$(tput sgr 0)\n\n"
}

function compile_example_standalone() {
rm -rf $EXAMPLE_TEST_DIR
mkdir $EXAMPLE_TEST_DIR
Expand Down Expand Up @@ -142,7 +116,7 @@ LIB=$(find /lib* -name "*protobuf-c.so*" || true)

echo
echo "##################################################################"
echo "### Verify build with ASAN and UBSAN ($CC, DEBUG)"
echo "### Verify build and install (in dir: ${PREFIX}) ($CC, DEBUG)"
echo "##################################################################"

mkdir -p $WORKDIR/build
Expand All @@ -151,19 +125,31 @@ cd $WORKDIR/build
CC=$CC \
$CMAKE .. -DCMAKE_BUILD_TYPE=Debug \
-DTEST_DIR=$TEST_DIR \
-DBUILD_DEVELOPER_MODE=1 \
-DDEBUG_USE_ASAN=${CI_SANITS} \
-DDEBUG_USE_UBSAN=${CI_SANITS}
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DTESTS_COVERAGE=$TESTS_COVERAGE \
-DBUILD_DEVELOPER_MODE=1

make -j$(nproc)

if [ "$TESTS_COVERAGE" == "1" ]; then
exit 0
fi

ctest --output-on-failure
sudo_password make -j$(nproc) install

test_compile_all_examples_standalone

# Uninstall libraries
cd $WORKDIR/build
sudo_password make uninstall

cd $WORKDIR
rm -rf $WORKDIR/build

echo
echo "##################################################################"
echo "### Verify build and install (in dir: ${PREFIX}) ($CC, DEBUG)"
echo "### Verify build with ASAN and UBSAN ($CC, DEBUG)"
echo "##################################################################"

mkdir -p $WORKDIR/build
Expand All @@ -172,23 +158,12 @@ cd $WORKDIR/build
CC=$CC \
$CMAKE .. -DCMAKE_BUILD_TYPE=Debug \
-DTEST_DIR=$TEST_DIR \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DTESTS_COVERAGE=$TESTS_COVERAGE \
-DBUILD_DEVELOPER_MODE=1
-DBUILD_DEVELOPER_MODE=1 \
-DDEBUG_USE_ASAN=${CI_SANITS} \
-DDEBUG_USE_UBSAN=${CI_SANITS}

make -j$(nproc)
ctest --output-on-failure
sudo_password make -j$(nproc) install

if [ "$TESTS_COVERAGE" == "1" ]; then
upload_codecov tests
fi

test_compile_all_examples_standalone

# Uninstall libraries
cd $WORKDIR/build
sudo_password make uninstall

cd $WORKDIR
rm -rf $WORKDIR/build
Expand Down

0 comments on commit 1a8f0a8

Please sign in to comment.