update codecoverage v9 #10
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: C/C++ CodeCov | |
on: | |
push: | |
branches: [ main, dev ] | |
pull_request: | |
branches: [ main, dev ] | |
schedule: | |
- cron: '0 0 * * *' | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Install Homebrew | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y build-essential libncurses5-dev libncursesw5-dev cmake curl lcov | |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | |
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.profile | |
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc | |
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.zshrc | |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
- name: Verify Homebrew installation | |
run: | | |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
brew --version | |
- name: Install Clang via Homebrew | |
run: | | |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
brew install llvm | |
echo 'export PATH="/home/linuxbrew/.linuxbrew/opt/llvm/bin:$PATH"' >> ~/.profile | |
echo 'export PATH="/home/linuxbrew/.linuxbrew/opt/llvm/bin:$PATH"' >> ~/.bashrc | |
echo 'export PATH="/home/linuxbrew/.linuxbrew/opt/llvm/bin:$PATH"' >> ~/.zshrc | |
export PATH="/home/linuxbrew/.linuxbrew/opt/llvm/bin:$PATH" | |
- name: Install xmake via Homebrew | |
run: | | |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
brew install xmake | |
- name: Install xxHash | |
run: | | |
git clone https://github.com/Cyan4973/xxHash.git | |
cd xxHash | |
make | |
sudo make install | |
cd .. | |
- name: Configure xmake with Clang | |
run: | | |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
export CC=clang | |
export CXX=clang++ | |
xmake f --cc=$(which clang) --cxx=$(which clang++) --ld=$(which clang++) --plat=linux --arch=x86_64 --mode=debug | |
xmake f --cflags="-fprofile-instr-generate -fcoverage-mapping" --cxxflags="-fprofile-instr-generate -fcoverage-mapping" --ldflags="-fprofile-instr-generate -fcoverage-mapping" | |
- name: Build project with Clang | |
run: | | |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
export CC=clang | |
export CXX=clang++ | |
xmake build | |
- name: Run tests and generate coverage data | |
run: | | |
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
xmake run | |
llvm-profdata merge -sparse default.profraw -o default.profdata | |
llvm-cov export -format=lcov -instr-profile=default.profdata $(find . -name "*.o") > coverage.info | |
- name: Upload coverage reports to Codecov | |
uses: codecov/[email protected] | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: coverage.info | |
flags: unittests | |
name: codecov-umbrella |