Skip to content

Enable testing on Github Actions (#841) #42

Enable testing on Github Actions (#841)

Enable testing on Github Actions (#841) #42

# UFS_UTILS test workflow.
#
# Check different versions of the external libraries that are used by UFS_UTILS.
#
# Ed Hartnett 12/16/22
name: Linux_versions_ext
on:
push:
branches:
- develop
paths-ignore:
- README.md
pull_request:
branches:
- develop
paths-ignore:
- README.md
defaults:
run:
shell: bash -exo pipefail {0}
jobs:
Linux_versions_ext:
runs-on: ubuntu-latest
env:
FC: mpifort
CC: mpicc
FCFLAGS: -fallow-argument-mismatch
strategy:
fail-fast: true
matrix:
esmf_version: [8_2_0, 8.3.1, 8.4.0]
bacio_version: [2.4.1]
g2_version: [3.4.3]
sp_version: [2.3.3]
ip_version: [3.3.3]
w3emc_version: [2.9.3]
nemsio_version: [2.5.0]
sfcio_version: [1.4.0]
sigio_version: [2.3.0]
steps:
- name: install-dependencies
run: |
sudo apt-get update
sudo apt-get install libpng-dev zlib1g-dev libjpeg-dev libmpich-dev
sudo apt-get install libnetcdf-dev libnetcdff-dev netcdf-bin pkg-config
sudo apt-get install autoconf automake libtool
- name: checkout-esmf
id: cache-esmf
uses: actions/cache@v2
with:
path: ~/esmf
key: Linux_versions-esmf-${{ matrix.esmf_version }}-${{ runner.os }}
- name: build-esmf
if: steps.cache-esmf.outputs.cache-hit != 'true'
run: |
pushd ~
if [[ ${{ matrix.esmf_version }} == "8_2_0" ]]; then
wget https://github.com/esmf-org/esmf/archive/ESMF_${{ matrix.esmf_version }}.tar.gz &> /dev/null
tar zxf ESMF_${{ matrix.esmf_version }}.tar.gz
cd esmf-ESMF_${{ matrix.esmf_version }}
export ESMF_DIR=~/esmf-ESMF_${{ matrix.esmf_version }}
else
wget https://github.com/esmf-org/esmf/archive/refs/tags/v${{ matrix.esmf_version }}.tar.gz &> /dev/null
ls -l
tar zxf v${{ matrix.esmf_version }}.tar.gz
cd esmf-${{ matrix.esmf_version }}
export ESMF_DIR=~/esmf-${{ matrix.esmf_version }}
fi
export ESMF_COMM=mpich3
export ESMF_INSTALL_BINDIR=bin
export ESMF_INSTALL_LIBDIR=lib
export ESMF_INSTALL_MODDIR=mod
export ESMF_COMPILER=gfortran
export ESMF_INSTALL_PREFIX=~/esmf
export ESMF_NETCDF=split
export ESMF_NETCDF_INCLUDE=/usr/include
export ESMF_NETCDF_LIBPATH=/usr/x86_64-linux-gnu
export ESMF_PIO=OFF
export ESMF_MOAB=OFF
export ESMF_ARRAY_LITE=TRUE
make -j2
make install
- name: cache-jasper
id: cache-jasper
uses: actions/cache@v2
with:
path: ~/jasper
key: Linux_versions-jasper-${{ runner.os }}-2.0.33-1
- name: checkout-jasper
if: steps.cache-jasper.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: jasper-software/jasper
path: jasper
ref: version-2.0.33
- name: build-jasper
if: steps.cache-jasper.outputs.cache-hit != 'true'
run: |
cd jasper
mkdir build-jasper && cd build-jasper
cmake .. -DCMAKE_INSTALL_PREFIX=~/jasper
make -j2
make install
- name: cache-bacio
id: cache-bacio
uses: actions/cache@v2
with:
path: ~/bacio
key: Linux_versions-bacio-${{ runner.os }}-${{ matrix.bacio_version }}
- name: checkout-bacio
if: steps.cache-bacio.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-bacio
path: bacio
ref: v${{ matrix.bacio_version }}
- name: build-bacio
if: steps.cache-bacio.outputs.cache-hit != 'true'
run: |
cd bacio
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/bacio
make -j2
make install
- name: cache-g2
id: cache-g2
uses: actions/cache@v2
with:
path: ~/g2
key: Linux_versions-g2-${{ runner.os }}-${{ matrix.g2_version }}
- name: checkout-g2
if: steps.cache-g2.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-g2
path: g2
ref: v${{ matrix.g2_version }}
- name: build-g2
if: steps.cache-g2.outputs.cache-hit != 'true'
run: |
cd g2
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=~/g2 -DCMAKE_PREFIX_PATH="~/bacio;~/jasper" ..
make -j2
make install
- name: cache-sp
id: cache-sp
uses: actions/cache@v2
with:
path: ~/sp
key: Linux_versions-sp-${{ runner.os }}-${{ matrix.sp_version }}
- name: checkout-sp
if: steps.cache-sp.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-sp
path: sp
ref: v${{ matrix.sp_version }}
- name: build-sp
if: steps.cache-sp.outputs.cache-hit != 'true'
run: |
cd sp
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/sp
make -j2
make install
- name: cache-ip
id: cache-ip
uses: actions/cache@v2
with:
path: ~/ip
key: Linux_versions-ip-${{ runner.os }}-${{ matrix.ip_version }}
- name: checkout-ip
if: steps.cache-ip.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-ip
path: ip
ref: v${{ matrix.ip_version }}
- name: build-ip
if: steps.cache-ip.outputs.cache-hit != 'true'
run: |
cd ip
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=~/ip -DCMAKE_PREFIX_PATH=~/sp ..
make -j2
make install
# - name: checkout-g2c
# uses: actions/checkout@v2
# with:
# repository: NOAA-EMC/NCEPLIBS-g2c
# path: g2c
# ref: develop
# - name: build-g2c
# run: |
# cd g2c
# mkdir build
# cd build
# cmake .. -DCMAKE_INSTALL_PREFIX=~/g2c -DJasper_ROOT=~/jasper
# make -j2
# make install
- name: cache-sfcio
id: cache-sfcio
uses: actions/cache@v2
with:
path: ~/sfcio
key: Linux_versions-sfcio-${{ runner.os }}-${{ matrix.sfcio_version }}
- name: checkout-sfcio
if: steps.cache-sfcio.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-sfcio
path: sfcio
ref: v${{ matrix.sfcio_version }}
- name: build-sfcio
if: steps.cache-sfcio.outputs.cache-hit != 'true'
run: |
cd sfcio
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/sfcio
make -j2
make install
- name: cache-w3emc
id: cache-w3emc
uses: actions/cache@v2
with:
path: ~/w3emc
key: Linux_versions-w3emc-${{ runner.os }}-${{ matrix.w3emc_version }}
- name: checkout-w3emc
if: steps.cache-w3emc.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-w3emc
path: w3emc
ref: v${{ matrix.w3emc_version }}
- name: build-w3emc
if: steps.cache-w3emc.outputs.cache-hit != 'true'
run: |
cd w3emc
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/w3emc -DCMAKE_PREFIX_PATH=~/bacio
make -j2
make install
- name: cache-nemsio
id: cache-nemsio
uses: actions/cache@v2
with:
path: ~/nemsio
key: Linux_versions-nemsio-${{ runner.os }}-${{ matrix.nemsio_version }}
- name: checkout-nemsio
if: steps.cache-nemsio.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-nemsio
path: nemsio
ref: v${{ matrix.nemsio_version }}
- name: build-nemsio
if: steps.cache-nemsio.outputs.cache-hit != 'true'
run: |
cd nemsio
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=~/nemsio -DCMAKE_PREFIX_PATH="~/bacio;~/w3emc" ..
make -j2
make install
- name: cache-sigio
id: cache-sigio
uses: actions/cache@v2
with:
path: ~/sigio
key: Linux_versions-sigio-${{ runner.os }}-${{ matrix.sigio_version }}
- name: checkout-sigio
if: steps.cache-sigio.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-sigio
path: sigio
ref: v${{ matrix.sigio_version }}
- name: build-sigio
if: steps.cache-sigio.outputs.cache-hit != 'true'
run: |
cd sigio
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/sigio
make -j2
make install
- name: checkout
uses: actions/checkout@v2
with:
path: ufs_utils
submodules: true
- name: cache-data
id: cache-data
uses: actions/cache@v2
with:
path: ~/data
key: data-1
- name: build
run: |
set -x
cd ufs_utils
mkdir build
cd build
export ESMFMKFILE=~/esmf/lib/esmf.mk
cmake -DTEST_FILE_DIR=/home/runner/data -DCMAKE_PREFIX_PATH="~/jasper;~/g2c;~/bacio;~/g2;~/w3emc;~/sfcio;~/sigio;~/nemsio;~/sp;~/ip" ..
make -j2 VERBOSE=1
- name: test
run: |
cd ufs_utils/build
ctest --verbose --rerun-failed --output-on-failure
- name: cache-data
if: steps.cache-data.outputs.cache-hit != 'true'
run: |
mkdir ~/data
cp ufs_utils/build/tests/chgres_cube/data/* ~/data
cp ufs_utils/build/tests/sfc_climo_gen/data/* ~/data
cp ufs_utils/build/tests/cpld_gridgen/data/* ~/data
cp ufs_utils/tests/filter_topo/data/* ~/data
cp ufs_utils/tests/emcsfc_snow2mdl/data/* ~/data
cp ufs_utils/tests/chgres_cube/data/* ~/data
ls -l ~/data