refactor buildnml to use the CIME-CCS python based namelist generation capabilities #457
Workflow file for this run
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: Continuous Integration testing | |
on: [push, pull_request] | |
env: | |
# This version of Meson should be available as an EasyBuild on Fram and Betzy | |
MESON_VERSION: '0.55.1' | |
jobs: | |
build: | |
name: Build BLOM on Github provided OS | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
mpi: [true, false] | |
openmp: ['enabled', 'disabled'] | |
exclude: | |
# Do not build on macOS with MPI as that is having some dependency issues | |
- os: macos-latest | |
mpi: true | |
steps: | |
- name: Install dependencies - Ubuntu | |
run: | | |
sudo apt update | |
sudo apt install -y libnetcdff-dev mpi-default-dev ninja-build | |
if: runner.os == 'Linux' | |
- name: Install dependencies - macOS | |
run: brew install netcdf-fortran open-mpi ninja | |
env: | |
HOMEBREW_NO_INSTALL_CLEANUP: 1 | |
if: runner.os == 'macOS' | |
- name: Setup Python for newer version of Meson | |
uses: actions/setup-python@v2 | |
- name: Install Meson | |
run: python -m pip install meson==${{ env.MESON_VERSION }} | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- name: Build | |
env: | |
CC: gcc-12 | |
FC: gfortran-12 | |
run: | | |
meson setup builddir -Dmpi=${{ matrix.mpi }} -Dopenmp=${{ matrix.openmp }} --buildtype=debugoptimized | |
meson compile -C builddir | |
- name: Test code | |
if: ${{ matrix.mpi == false }} | |
run: | | |
ulimit -s 65532 | |
meson test -C builddir | |
- name: Upload test log | |
if: ${{ matrix.mpi == false }} | |
uses: actions/upload-artifact@v2 | |
with: | |
name: testlog-${{ runner.os }}-gcc | |
path: builddir/meson-logs/testlog.txt | |
intel: | |
name: Build BLOM using Intel compilers | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
mpi: [true, false] | |
openmp: ['enabled', 'disabled'] | |
# Tell Meson to use Intel compilers | |
env: | |
CC: icc | |
FC: ifort | |
NFDIR: '/opt/netcdf' | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt update | |
sudo apt install -y ninja-build libnetcdf-dev | |
- name: Cache Intel setup | |
id: cache-intel | |
uses: actions/cache@v2 | |
with: | |
path: /opt/intel/ | |
key: intel-${{ runner.os }}-compiler | |
- name: Setup Intel compiler | |
if: steps.cache-intel.outputs.cache-hit != 'true' | |
run: | | |
wget -q https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB | |
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB | |
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main" | |
sudo apt update | |
sudo apt install -y\ | |
intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic\ | |
intel-oneapi-compiler-fortran intel-oneapi-mpi-devel | |
- name: Cache netCDF install | |
id: cache-netcdf | |
uses: actions/cache@v2 | |
with: | |
path: ${{ env.NFDIR }} | |
key: netcdf-4.5.2-${{ runner.os }}-intel | |
- name: Checkout netCDF for compiling with Intel | |
if: steps.cache-netcdf.outputs.cache-hit != 'true' | |
uses: actions/checkout@v2 | |
with: | |
repository: 'Unidata/netcdf-fortran' | |
ref: 'v4.5.2' | |
- name: Compile and install custom netCDF | |
if: steps.cache-netcdf.outputs.cache-hit != 'true' | |
run: | | |
source /opt/intel/oneapi/setvars.sh | |
./configure --prefix="$NFDIR" | |
make | |
sudo make install | |
- name: Setup netCDF environment | |
run: | | |
echo "${NFDIR}/bin" >> $GITHUB_PATH | |
echo "PKG_CONFIG_PATH=${NFDIR}/lib/pkgconfig" >> $GITHUB_ENV | |
- name: Setup Python for newer version of Meson | |
uses: actions/setup-python@v2 | |
- name: Install Meson | |
run: python -m pip install meson==${{ env.MESON_VERSION }} | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- name: Build with Intel compilers | |
run: | | |
source /opt/intel/oneapi/setvars.sh | |
meson setup builddir -Dmpi=${{ matrix.mpi }} -Dopenmp=${{ matrix.openmp }} --buildtype=debugoptimized | |
meson compile -C builddir | |
- name: Test code | |
if: ${{ matrix.mpi == false }} | |
run: | | |
source /opt/intel/oneapi/setvars.sh | |
meson test -C builddir | |
- name: Upload test log | |
uses: actions/upload-artifact@v2 | |
if: ${{ matrix.mpi == false }} | |
with: | |
name: testlog-${{ runner.os }}-intel | |
path: builddir/meson-logs/testlog.txt |