Skip to content

Fast test of code coverage: #2

Fast test of code coverage:

Fast test of code coverage: #2

Workflow file for this run

on:
workflow_call:
inputs:
cmake_build_type:
description: 'Value for CMAKE_BUILD_TYPE'
type: string
default: Release
required: true
add_cmake_cfg_args:
description: 'Additional arguments for configuration step'
required: false
type: string
branch_name:
description: 'Branch to checkout when tests are manually triggered'
required: false
type: string
code_coverage:
description: 'Code coverage'
required: false
default: true
type: boolean
# job
jobs:
ci:
if: "! contains(github.event.head_commit.message, '[skip ci]')"
runs-on: ${{ matrix.os }}
# Launch a matrix of jobs
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04,macos-12]
pattern: [on,off]
pointmap: [off]
scotch: [on,off]
vtk: [off]
int: [int32_t]
include:
# test vtk only without scotch and with delaunay insertion (more
# tests are useless)
- os: ubuntu-20.04
pattern: off
pointmap: off
scotch: off
vtk: on
int: int32_t
- os: macos-12
pattern: off
pointmap: off
scotch: off
vtk: on
int: int32_t
# Test pointmap with scotch except on windows
- os: ubuntu-20.04
pattern: off
pointmap: on
scotch: on
vtk: off
int: int32_t
- os: macos-12
pattern: off
pointmap: on
scotch: on
vtk: off
int: int32_t
# Add windows basic test (matrix is not testable as dependencies
# don't build with MSVC)
- os: windows-2022
pattern: off
pointmap: off
scotch: off
vtk: off
int: int32_t
- os: windows-2022
pattern: on
pointmap: off
scotch: off
vtk: off
int: int32_t
# Add test for pointmap only if pattern off
- os: windows-2022
pattern: off
pointmap: on
scotch: off
vtk: off
int: int32_t
# Test int64_t build on all archi, and try to cover all code
- os: ubuntu-20.04
pattern: on
pointmap: on
scotch: on
vtk: on
int: int64_t
- os: ubuntu-20.04
pattern: off
pointmap: off
scotch: on
vtk: on
int: int64_t
- os: ubuntu-20.04
pattern: off
pointmap: off
scotch: off
vtk: off
int: int64_t
- os: macos-12
pattern: on
pointmap: on
scotch: on
vtk: on
int: int64_t
- os: macos-12
pattern: off
pointmap: off
scotch: off
vtk: off
int: int64_t
- os: windows-2022
pattern: on
pointmap: on
scotch: off
vtk: off
int: int64_t
- os: windows-2022
pattern: off
pointmap: off
scotch: off
vtk: off
int: int64_t
steps:

Check failure on line 149 in .github/workflows/main-job.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/main-job.yml

Invalid workflow file

You have an error in your yaml syntax on line 149
- name: Set cmake_build_type and export coverage flags
run: |
if ${{ matrix.os == 'ubuntu-20.04' && inputs.code_coverage == true }}; then
# if code coverage is enabled, linux build is runned in Debug mode
if [[ ${{ inputs.cmake_build_type }} != Debug ]]; then
echo "WARNING: build type is forced to debug mode on ubuntu to allow coverage."
fi
echo "BUILD_TYPE=Debug" >> "$GITHUB_ENV"
echo "C_FLG_PROF=-fprofile-arcs -ftest-coverage" >> "$GITHUB_ENV"
else
echo "BUILD_TYPE=${{ inputs.cmake_build_type }}" >> "$GITHUB_ENV"
fi
shell: bash
- name: Print options and set environment variables
run: |
echo "${{ github.event.inputs.name }}:
Os: ${{ matrix.os }},
Pattern: ${{ matrix.pattern }},
Scotch: ${{ matrix.scotch }},
VTK: ${{ matrix.vtk }},
int: ${{ matrix.int }},
Build: ${{ env.BUILD_TYPE }}"
# gfortran compiler and scotch makefile depends on the os
if [ "$RUNNER_OS" == "macOS" ]; then
echo "SCOTCH_MAKE=Make.inc/Makefile.inc.i686_mac_darwin10" >> "$GITHUB_ENV"
echo "FORT_FLG=\"-DCMAKE_Fortran_COMPILER=gfortran-11\"" >> "$GITHUB_ENV"
elif [ "$RUNNER_OS" == "Linux" ]; then
echo "SCOTCH_MAKE=Make.inc/Makefile.inc.x86-64_pc_linux2" >> "$GITHUB_ENV"
echo "FORT_FLG=\"-DCMAKE_Fortran_COMPILER=gfortran-9\"" >> "$GITHUB_ENV"
fi
echo "NJOBS=$NJOBS" >> "$GITHUB_ENV"
# Remark: variable values are still empty inside this context
shell: bash
env:
NJOBS: "2"
- name: Set environment variables for output comparison
if: "! contains(github.event.head_commit.message, '[skip output comparison]')"
run: |
echo "C_FLG=-DMMG_COMPARABLE_OUTPUT" >> "$GITHUB_ENV"
echo "MMG_ERROR_RULE=\"COMMAND_ERROR_IS_FATAL ANY\"" >> "$GITHUB_ENV"
- name: Assign CMAKE_C_FLAGS if needed
if: ${{ env.C_FLG || env.C_FLG_PROF }}
run: |
echo "CMAKE_C_FLG=-DCMAKE_C_FLAGS=\"${{ env.C_FLG }} ${{ env.C_FLG_PROF }}\"" >> "$GITHUB_ENV"
- name: Install VTK
# Download vtk only if used
if: matrix.vtk == 'on'
run: |
if [ "$RUNNER_OS" == "macOS" ]; then
brew install vtk
elif [ "$RUNNER_OS" == "Linux" ]; then
sudo sed -i 's/azure\.//' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install -y libvtk7-dev
fi
- name: Install Sctoch
# Download scotch only if used
if: matrix.scotch == 'on'
run: |
git clone https://gitlab.inria.fr/scotch/scotch.git
cd scotch
git checkout v6.1.3
cd src
cp ${{ env.SCOTCH_MAKE }} Makefile.inc
make scotch -j ${{ env.NJOBS }}
make prefix=scotch install scotch -j ${{ env.NJOBS }}
- name: Install LibCommons
# LinearElasticity don't build with MSVC
if: runner.os != 'windows'
run: |
git clone https://github.com/ISCDtoolbox/Commons.git
cd Commons
mkdir build
cd build
cmake ..
make install
- name: Install LinearElasticity
# LinearElasticity don't build with MSVC
if: runner.os != 'windows'
run: |
git clone https://github.com/ISCDtoolbox/LinearElasticity.git
cd LinearElasticity
mkdir build
cd build
cmake ..
make install
# checkout the provided branch name if workflow is manually run
- uses: actions/checkout@v3
if: inputs.branch_name
with:
ref: ${{github.event.inputs.branch}}
# checkout the event branch for automatic workflows
- uses: actions/checkout@v3
if: inputs.branch_name == ''
with:
- name: Test compilation with shared libs linkage
run: |
cmake -S. -Bbuild_shared \
${{ env.CMAKE_C_FLG }} \
${{ env.FORT_FLG }} \
-DCI_CONTEXT=ON \
-DBUILD_TESTING=ON \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-DMMG_PATTERN=${{ matrix.pattern }} \
-DUSE_SCOTCH=${{ matrix.scotch }} \
-DSCOTCH_DIR=scotch \
-DUSE_VTK=${{ matrix.vtk }} \
-DMMG5_INT=${{ matrix.int }} \
-DBUILD_SHARED_LIBS=ON \
-DTEST_LIBMMG=ON \
-DTEST_LIBMMGS=ON \
-DTEST_LIBMMG2D=ON \
-DTEST_LIBMMG3D=ON \
${{ inputs.add_cmake_cfg_args }}
cmake --build build_shared --config ${{ env.BUILD_TYPE }} -j ${{ env.NJOBS }}
shell: bash
#- name: Test compilation without library linkage
# run: |
# cmake -S. -Bbuild_nolibs \
# ${{ env.C_FLG }} \
# ${{ env.FORT_FLG }} \
# -DCI_CONTEXT=ON \
# -DBUILD_TESTING=ON \
# -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
# -DMMG_PATTERN=${{ matrix.pattern }} \
# -DUSE_SCOTCH=${{ matrix.scotch }} \
# -DSCOTCH_DIR=scotch \
# -DUSE_VTK=${{ matrix.vtk }} \
# -DMMG5_INT=${{ matrix.int }} \
# -DLIBMMG_STATIC=OFF \
# -DLIBMMGS_STATIC=OFF \
# -DLIBMMG2D_STATIC=OFF \
# -DLIBMMG3D_STATIC=OFF \
# ${{ inputs.add_cmake_cfg_args }}
# cmake --build build_nolibs --config ${{ env.BUILD_TYPE }} -j ${{ env.NJOBS }}
# shell: bash
#
#- name: Configure Mmg with static libs (default behaviour)
# run: |
# cmake -S. -Bbuild \
# ${{ env.C_FLG }} \
# ${{ env.FORT_FLG }} \
# -DCMAKE_INSTALL_PREFIX=mmg-install \
# -DCI_CONTEXT=ON \
# -DBUILD_TESTING=ON \
# -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
# -DMMG_PATTERN=${{ matrix.pattern }} \
# -DUSE_SCOTCH=${{ matrix.scotch }} \
# -DSCOTCH_DIR=scotch \
# -DUSE_VTK=${{ matrix.vtk }} \
# -DMMG5_INT=${{ matrix.int }} \
# -DTEST_LIBMMG=ON \
# -DTEST_LIBMMGS=ON \
# -DTEST_LIBMMG2D=ON \
# -DTEST_LIBMMG3D=ON \
# ${{ inputs.add_cmake_cfg_args }}
# shell: bash
#
- name: Build Mmg
run: |
cmake --build build --config ${{ env.BUILD_TYPE }} -j ${{ env.NJOBS }}
- name: Install Mmg
run: |
cmake --build build --target install --config ${{ env.BUILD_TYPE }} -j ${{ env.NJOBS }}
- name: Archive production artifacts
uses: actions/upload-artifact@v3
with:
name: Mmg-bin
path: |
build/bin
- name: Test Mmg with in32_t integers
# Run long tests only with vtk off and int32_t integers
if: matrix.vtk == 'off' && matrix.int == 'int32_t'
run: |
cd build
ctest --timeout 7200 -VV -C ${{ env.BUILD_TYPE }} -j ${{ env.NJOBS }}
- name: Test Mmg with in64_t integers
# Run long tests only on ubuntu with pattern off, scotch on, vtk on and int64_t integers
if: matrix.os == 'ubuntu-20.04' && matrix.pattern == 'off' && matrix.scotch == 'on' && matrix.vtk == 'on' && matrix.int == 'int64_t'
run: |
cd build
ctest --timeout 7200 -VV -C ${{ env.BUILD_TYPE }} -j ${{ env.NJOBS }}
- name: Test non native I/Os of Mmg
if: matrix.vtk == 'on'
run: |
cd build
ctest -R "msh|vtk" -VV -C ${{ env.BUILD_TYPE }} -j ${{ env.NJOBS }}
- name: Archive production artifacts for tests
if: success() || failure()
uses: actions/upload-artifact@v2
with:
name: Mmg-tests
path: |
build/TEST_OUTPUTS
- name: Upload coverage to Codecov
#if: inputs.CODE_COVERAGE
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}