Skip to content

Refactor CMake and CI scripting #1766

Refactor CMake and CI scripting

Refactor CMake and CI scripting #1766

name: Continuous Integration
on:
push:
branches:
- main
- develop
pull_request:
branches-ignore:
- documentation
workflow_dispatch:
defaults:
run:
# Enable Conda environment by using the login shell:
shell: bash -leo pipefail {0}
jobs:
CI:
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, macos-13, macos-latest, windows-2022]
gfortran-version: [12, 13, 14]
gfortran-from: [system, conda]
fpmodel: [DP, SP]
exclude:
- os: ubuntu-24.04
gfortran-from: conda
- os: macos-13
gfortran-from: system
- os: macos-13
gfortran-version: 14
gfortran-from: conda
- os: macos-latest
gfortran-from: system
- os: macos-latest
gfortran-version: 14
gfortran-from: conda
- os: windows-2022
include:
- os: ubuntu-24.04
gfortran-version: 13
gfortran-from: conda
fpmodel: DP
- os: windows-2022
gfortran-version: 13
gfortran-from: conda
fpmodel: DP
- os: windows-2022
gfortran-version: 13
gfortran-from: conda
fpmodel: SP
- os: windows-2022
gfortran-version: 14
gfortran-from: conda
fpmodel: DP
- os: windows-2022
gfortran-version: 14
gfortran-from: conda
fpmodel: SP
env:
FC: gfortran-${{ matrix.gfortran-version }}
FFLAGS: "-ffree-line-length-none -m64 -std=f2008 -march=native -fbounds-check -fmodule-private -fimplicit-none -finit-real=nan"
CMAKE_BUILD_PARALLEL_LEVEL: 8
VERBOSE:
# TODO: add missing test dependencies and run them in parallel:
# CTEST_PARALLEL_LEVEL: 8
CTEST_OUTPUT_ON_FAILURE: 1
runs-on: ${{ matrix.os }}
steps:
#
# Check out repository under $GITHUB_WORKSPACE
#
- name: Check out code
uses: actions/checkout@v4
#
# Cache Conda packages
#
- name: Cache Conda packages
uses: actions/cache@v4
with:
path: ~/conda_pkgs_dir
key: conda-pkgs-${{ matrix.os }}
#
# Set up Conda
#
- name: Set up Conda
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-version: latest
activate-environment: rte_rrtmgp_test
environment-file: environment-noplots.yml
python-version: 3.11
auto-activate-base: false
# Use the cache properly:
use-only-tar-bz2: false
#
# Install compiler
#
- name: Install compiler
if: matrix.gfortran-from == 'conda'
run: |
conda install -c conda-forge gfortran=${{ matrix.gfortran-version }} -y
echo "FC=gfortran" >> $GITHUB_ENV
#
# Install dependencies
#
- name: Install dependencies
run: conda install -c conda-forge netcdf-fortran ninja -y
#
# Adjust toolchain
#
- name: Adjust toolchain
if: matrix.os == 'windows-2022'
run: echo "FC=${FC}.exe" >> $GITHUB_ENV
#
# Build libraries, examples, and tests
#
- name: Build libraries and tests
run: |
cmake -S . -B build -G "Ninja" \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DRTE_ENABLE_SP=`test 'x${{ matrix.fpmodel }}' = xSP && echo ON || echo OFF` \
-DBUILD_TESTING=ON
cmake --build build
#
# Run examples, tests and checks
#
- name: Run examples, tests and checks
working-directory: build
run: ctest