Skip to content

Github Actions New CI Comparison Method #392

Github Actions New CI Comparison Method

Github Actions New CI Comparison Method #392

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]
configuration: [nwm_ana]
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: conda-incubator/setup-miniconda@v3
# with:
# miniconda-version: "latest"
# activate-environment: foo
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
# - uses: conda-incubator/setup-miniconda@v3
# with:
# activate-environment:
- 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: Run testing container
# run: |
# docker -v run -e TRAVIS=1 -t --name test_container \
# -v $GITHUB_WORKSPACE/candidate:/home/docker/candidate \
# -v $GITHUB_WORKSPACE/reference:/home/docker/reference \
# wrfhydro/dev:modeltesting --config ${{ matrix.configuration }} --domain_tag dev
- name: Install Dependencies With Apt
run: |
sudo apt-get update \
&& sudo apt-get install -yq --no-install-recommends \
wget \
curl \
emacs-nox \
bzip2 \
ca-certificates \
vim \
libhdf5-dev \
gfortran \
g++ \
valgrind \
m4 \
make \
libswitch-perl \
git \
nano \
tcsh \
bc \
less \
openmpi-bin openmpi-common libopenmpi-dev \
libxml2-dev \
libnetcdf-dev \
libnetcdff-dev
- name: Install Dependencies with pip
run: |
python3 -m pip install wrfhydropy>=0.0.21 gdown matplotlib numpy nccmp importlib-metadata pytest pytest-datadir-ng
# - name: Install Dependencies with Conda
# run: |
# conda update conda
# conda install numpy>=1.23.5 conda-forge::nccmp
# - name: Add conda bin to GITHUB_PATH
# run: echo "/usr/share/miniconda/bin" >> $GITHUB_PATH
- name: which python
run: which python
- name: Find pip path
run: python -m pip -V
# - name: Set PYTHONPATH
# run: echo "export PYTHONPATH=$PYTHONPATH:$HOME" >> $GITHUB_ENV
- name: Test Python Pip Packages
run: python -c "import gdown; print('Fin')"
# - name: ls conda
# run: |
# ls /usr/share/miniconda
# - name: ls conda/bin
# run: |
# ls /usr/share/miniconda/bin
# - name: ls conda/lib
# run: |
# ls /usr/share/miniconda/lib
# - name: ls conda/include
# run: |
# ls /usr/share/miniconda/include
- 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: Get and Extract Testcase
run: |
wget -q -O $GITHUB_WORKSPACE/croton_NY_training_example_v5.2.tar.gz https://github.com/NCAR/wrf_hydro_nwm_public/releases/download/v5.2.0/croton_NY_training_example_v5.2.tar.gz
ls $GITHUB_WORKSPACE/croton_NY_training_example_v5.2.tar.gz
tar zxf $GITHUB_WORKSPACE/croton_NY_training_example_v5.2.tar.gz -C $HOME
- name: Run Testing Command
run: |
python $GITHUB_WORKSPACE/candidate/tests/local/run_tests.py \
--compiler gfort \
--output_dir $GITHUB_WORKSPACE/test_out \
--candidate_dir $GITHUB_WORKSPACE/candidate \
--reference_dir $GITHUB_WORKSPACE/reference \
--domain_dir $GITHUB_WORKSPACE/example_case \
--config ${{ matrix.configuration }} --domain_tag dev \
--print
# ADD BACK IN AFTER DEBUGGING
# - name: Copy test results from container
# if: ${{ always() }}
# run: docker cp test_container:/home/docker/test_out $GITHUB_WORKSPACE/test_report
# - name: Checkout Github API
# if: ${{ always() }}
# run: |
# pip install pygithub
# - name: Attach diff plots to PR
# if: ${{ always() }}
# run: |
# cd $GITHUB_WORKSPACE/candidate/tests/local/utils
# bash attach_all_plots.bash $(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH") ${{ matrix.configuration }}
# - name: Archive test results to GitHub
# if: ${{ always() }}
# uses: actions/upload-artifact@v3
# with:
# name: test-reports
# path: |
# ${{ github.workspace }}/test_report/**.html
# ${{ github.workspace }}/test_report/*/diff_plots