Add Ubuntu 24.04 runner to CI action (#81) #1
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: Coverage Build | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
types: [opened, reopened, synchronize] | |
jobs: | |
build: | |
name: Code coverage | |
runs-on: ubuntu-22.04 | |
env: | |
CC: gcc-12 | |
CXX: g++-12 | |
FC: gfortran-12 | |
GCOV: gcov-12 | |
OMP_NUM_THREADS: 1 | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Install prerequisites | |
run: | | |
sudo apt-get -y install lcov | |
pip3 install pytest pytest-cov numpy scipy h5py triangle | |
- name: Cache external libraries | |
id: cache-ext-libs | |
uses: actions/cache@v4 | |
with: | |
path: libs | |
key: cov_build-${{ hashFiles('src/utilities/build_libs.py') }} | |
- name: Create build dir | |
if: ${{ steps.cache-ext-libs.outputs.cache-hit != 'true' }} | |
run: mkdir libs | |
- name: Check compilers | |
run: | | |
$CC --version | |
$CXX --version | |
$FC --version | |
$GCOV --version | |
- name: Build external | |
shell: bash | |
timeout-minutes: 30 | |
working-directory: libs | |
run: > | |
python3 ../src/utilities/build_libs.py --no_dl_progress --nthread=2 | |
--ref_blas --build_mpi=1 --build_umfpack=1 --build_superlu=1 --build_superlu_dist=1 | |
--build_arpack=1 --oft_build_tests=1 --oft_build_coverage | |
- name: Upload library failure log | |
uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: Library failure log | |
path: libs/build/build_error.log | |
- name: Remove external build directory | |
shell: bash | |
working-directory: libs | |
run: rm -rf build | |
- name: Configure OFT | |
shell: bash | |
working-directory: libs | |
run: bash config_cmake.sh | |
- name: Build OFT | |
shell: bash | |
working-directory: libs/build_release | |
run: make | |
- name: Test OFT | |
shell: bash | |
timeout-minutes: 60 | |
working-directory: libs/build_release | |
run: make test_cov | |
- name: Generate coverage report | |
shell: bash | |
working-directory: libs/build_release | |
run: | | |
lcov -c --directory . --output-file main_coverage.info --gcov-tool $GCOV | |
lcov --ignore-errors unused -r main_coverage.info -o cleaned_coverage.txt '/opt/*' '/usr/*' | |
- name: Upload coverage report to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
files: libs/build_release/cleaned_coverage.txt,libs/build_release/tests/coverage.xml | |
token: ${{ secrets.CODECOV_TOKEN }} | |
slug: openfusiontoolkit/OpenFUSIONToolkit | |
verbose: true |