Skip to content

Add GitHub pfunit tests #52

Add GitHub pfunit tests

Add GitHub pfunit tests #52

Workflow file for this run

# This is a workflow to compile the share source without cime
name: extbuild
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the main branch
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
build-share:
runs-on: ubuntu-latest
env:
CC: mpicc
FC: mpifort
CXX: mpicxx
CPPFLAGS: "-I/usr/include -I/usr/local/include "
LDFLAGS: "-L/usr/lib/x86_64-linux-gnu "
# Versions of all dependencies can be updated here - these match tag names in the github repo
ESMF_VERSION: v8.6.1
ParallelIO_VERSION: pio2_6_2
PFUNIT_VERSION: v4.9.0
steps:
- id: checkout-share
uses: actions/checkout@v4
- id: load-env
run: |
sudo apt-get update
sudo apt-get install gfortran
sudo apt-get install openmpi-bin libopenmpi-dev
sudo apt-get install libxml2-utils
sudo apt-get install netcdf-bin libnetcdf-dev libnetcdff-dev
sudo apt-get install pnetcdf-bin libpnetcdf-dev
- name: Cache PARALLELIO
id: cache-PARALLELIO
uses: actions/cache@v4
with:
path: pio
key: ${{ runner.os }}-${{ env.ParallelIO_VERSION }}
- name: Build ParallelIO
if: steps.cache-PARALLELIO.outputs.cache-hit != 'true'
uses: NCAR/ParallelIO/.github/actions/parallelio_cmake@9390e30e29d4ebbfbef0fc72162cacd9e8f25e4e
with:
parallelio_version: ${{ env.ParallelIO_VERSION }}
enable_fortran: True
install_prefix: ${GITHUB_WORKSPACE}/pio
- name: Install ESMF
uses: esmf-org/install-esmf-action@v1
env:
ESMF_COMPILER: gfortran
ESMF_BOPT: g
ESMF_COMM: openmpi
ESMF_NETCDF: nc-config
ESMF_PNETCDF: pnetcdf-config
ESMF_INSTALL_PREFIX: ${GITHUB_WORKSPACE}/ESMF
ESMF_PIO: external
ESMF_PIO_INCLUDE: ${GITHUB_WORKSPACE}/pio/include
ESMF_PIO_LIBPATH: ${GITHUB_WORKSPACE}/pio/lib
with:
version: ${{ env.ESMF_VERSION }}
esmpy: false
cache: true
- name: Build SHARE
uses: ./.github/actions/buildshare
with:
esmfmkfile: $ESMFMKFILE
pio_path: ${GITHUB_WORKSPACE}/pio
src_root: ${GITHUB_WORKSPACE}
cmake_flags: " -Wno-dev -DCMAKE_BUILD_TYPE=DEBUG -DWERROR=ON -DCMAKE_Fortran_FLAGS=\"-DCPRGNU -g -Wall \
-ffree-form -ffree-line-length-none -fallow-argument-mismatch\" \
-DCMAKE_MODULE_PATH=$ESMF_ROOT/cmake"
- name: Test CDEPS
run: |
cd build-share
make VERBOSE=1
- name: Cache PFUNIT
id: cache-pfunit
uses: actions/cache@v4
with:
path: pfunit
key: ${{ runner.os }}-${{ env.PFUNIT_VERSION }}
- name: Checkout PFUNIT
if: steps.cache-pfunit.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
path: pfunit
ref: ${{ env.PFUNIT_VERSION }}
repository: Goddard-Fortran-Ecosystem/pFUnit
- name: build PFUNIT
if: steps.cache-pfunit.outputs.cache-hit != 'true'
run: |
pushd pfunit
cmake -DSKIP_MPI=YES -DSKIP_OPENMP=YES -B build
cmake --build build
popd
- name: Checkout cime
uses: actions/checkout@v4
with:
path: cime
ref: remove_esmf_wrf_timemanager
repository: jedwards4b/cime
- name: Checkout ccs_config
uses: actions/checkout@v4
with:
path: ccs_config
ref: main
repository: ESMCI/ccs_config_cesm
- name: run unit testing
run: |
# this line is to satisfy the config_files.xml path structure
ln -fs . share
pushd cime
export CIME_MODEL=cesm
export NetCDF_ROOT=/usr
mkdir ftest
cat ../ccs_config/machines/cmake_macros/ubuntu-latest.cmake
python ./scripts/fortran_unit_testing/run_tests.py --build-dir `pwd`/ftest --machine ubuntu-latest
# the following can be used by developers to login to the github server in case of errors
# see https://github.com/marketplace/actions/debugging-with-tmate for further details
- name: Setup tmate session
if: ${{ failure() }}
uses: mxschmitt/action-tmate@v3