Skip to content

Build workflow

Build workflow #201

name: Build NeoFOAM on ubuntu
run-name: 'Build workflow'
on:
push:
branches:
- dev
- main
pull_request:
types: synchronize
schedule:
- cron: "* 0 * * 0"
env:
CTEST_OUTPUT_ON_FAILURE: 1
OMPI_MCA_rmaps_base_oversubscribe: 1
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
if: ${{!contains(github.event.pull_request.labels.*.name, 'Skip-build')}}
name: Build NeoFOAM on ubuntu
strategy:
fail-fast: false
matrix:
compiler:
- CC: clang
CXX: clang++
- CC: gcc
CXX: g++
preset: ["develop", "profiling", "production"]
exclude:
- compiler:
CC: gcc
CXX: g++
preset: "develop"
- compiler:
CC: clang
CXX: clang++
preset: "profiling"
runs-on: ubuntu-latest
steps:
- name: Checkout to repository
uses: actions/checkout@v4
- name: Add clang repo
run: |
sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main'
wget https://apt.llvm.org/llvm-snapshot.gpg.key
sudo apt-key add llvm-snapshot.gpg.key
- name: Set up cache
uses: actions/cache@v4
if: ${{!contains(github.event.pull_request.labels.*.name, 'Skip-cache')}}
with:
path: build
key: ubuntu_build_PR_${{ github.event.pull_request.number }}_${{matrix.compiler.CC}}_${{matrix.preset}}
- name: Install dependencies
run: |
sudo apt update
sudo apt install \
ninja-build \
clang-16 \
gcc-10 \
libomp-16-dev \
python3 \
python3-dev \
build-essential \
libopenmpi-dev \
openmpi-bin
sudo apt remove clang-14
sudo rm /usr/bin/clang
sudo rm /usr/bin/clang++
sudo ln -s /usr/bin/clang-16 /usr/bin/clang
sudo ln -s /usr/bin/clang++-16 /usr/bin/clang++
- name: Get versions
run: |
clang --version
ninja --version
cmake --version
- name: Build NeoFOAM
run: |
CC=${{matrix.compiler.CC}} \
CXX=${{matrix.compiler.CXX}} \
cmake --preset ${{matrix.preset}} \
-DNEOFOAM_BUILD_TESTS=ON \
-DNEOFOAM_DEVEL_TOOLS=OFF \
-DNEOFOAM_ENABLE_MPI_WITH_THREAD_SUPPORT=OFF
cmake --build --preset ${{matrix.preset}}
- name: Execute unit tests NeoFOAM
run: |
ctest --preset ${{matrix.preset}}