Skip to content

Feature: perfect restart and n-cores CI #541

Feature: perfect restart and n-cores CI

Feature: perfect restart and n-cores CI #541

Workflow file for this run

name: build
on:
push:
branches: [ main, v5.2.x ]
pull_request:
branches: [ main, v5.2.x ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
inputs:
pr:
description: "PR to test"
required: true
jobs:
Model_Testing:
strategy:
fail-fast: false
matrix:
configuration: [nwm_ana, nwm_long_range, gridded, reach]
runs-on: ubuntu-latest
env:
MPI_HOME: /usr/share/miniconda
NETCDF: /usr/share/miniconda
NETCDF_INCLUDES: /usr/share/miniconda/include
NETCDF_LIBRARIES: /usr/share/miniconda/lib
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Checkout candidate (pull request / push)
if: ${{ github.event_name == 'pull_request' || github.event_name == 'push' }}
uses: actions/checkout@v4
with:
path: candidate
- name: Checkout candidate (manual)
if: ${{ github.event_name == 'workflow_dispatch' }}
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
run: gh repo clone ${{ github.repository }} candidate && cd candidate && gh pr checkout -R ${{ github.repository }} ${{ github.event.inputs.pr }}
- name: Checkout reference (pull request)
if: ${{ github.event_name == 'pull_request' }}
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.base.ref }}
path: reference
- name: Checkout reference (push)
if: ${{ github.event_name == 'push' }}
uses: actions/checkout@v4
with:
ref: ${{ github.event.before }}
path: reference
- name: Checkout reference (manual)
if: ${{ github.event_name == 'workflow_dispatch' }}
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
run: gh repo clone ${{ github.repository }} reference && cd reference && git checkout origin/$(gh pr view ${{ github.event.inputs.pr }} --json baseRefName --jq '.baseRefName')
- name: Install dependencies with apt-get
run: |
sudo apt-get update \
&& sudo apt-get install -yq --no-install-recommends \
wget \
curl \
bzip2 \
ca-certificates \
libhdf5-dev \
gfortran \
g++ \
m4 \
make \
libswitch-perl \
git \
bc \
openmpi-bin openmpi-common libopenmpi-dev \
libxml2-dev \
libnetcdf-dev \
libnetcdff-dev
- name: Install dependencies with pip
run: |
python3 -m pip install matplotlib numpy xarray dask netCDF4 pygithub
- name: Compile reference
run: |
cd $GITHUB_WORKSPACE/reference
cmake -B build
make -C build -j
- name: Compile candidate
run: |
cd $GITHUB_WORKSPACE/candidate
cmake -B build
make -C build -j
- name: Run reference model
run: |
cd $GITHUB_WORKSPACE/reference/build/Run
make run-croton-${{ matrix.configuration }}
- name: Run candidate model
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
make run-croton-${{ matrix.configuration }}
- name: Compare output of serial runs
uses: ./.github/actions/compare-output
- name: Clean candidate model output
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
make clean
- name: Run parallel candidate model
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
make run-croton-${{ matrix.configuration }}-parallel
- name: Compare output of n-cores candidate model
uses: ./.github/actions/compare-output
# Testing perfect restart, not cleaning candidate model output
- name: Setup and run candidate model perfect restart startup
run: |
cd $GITHUB_WORKSPACE/candidate/build/Run
sed -i 's|RESTART_FILENAME_REQUESTED = "RESTART/RESTART.2011082600_DOMAIN1"|RESTART_FILENAME_REQUESTED = "./RESTART.2011090100_DOMAIN1"|' namelist.hrldas
sed -i 's/KDAY = 7/KDAY = 1/' namelist.hrldas
rm RESTART.2011090200_DOMAIN1
make run-croton-${{ matrix.configuration }}-parallel
- name: Compare output of perfect restart candidate model
uses: ./.github/actions/compare-output