Add CI to repo #12
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: Compile SHiELD SOLO and run tests | |
# This GitHub Action Workflow is running on the cloud devcimultiintel cluster | |
# The tests are run inside of a container with the following software/libraries: | |
# -intel: 2023.2.0 | |
# -hdf5: 1.14.0 | |
# -netcdf-c: 4.9.2 | |
# -netcdf-fortran: 4.6.0 | |
# -cmake | |
# -libyaml | |
on: | |
pull_request: | |
branches: | |
- main | |
#this should cancel in progress ci runs for the same PR | |
#(e.g. a second commit on the same PR comes in while CI is still running) | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
checkout: | |
if: github.repository == 'NOAA-GFDL/SHiELD_build' | |
runs-on: [shieldbuild] | |
name: Checkout Code | |
steps: | |
# It can take a long time (5-15 minutes) to spinup nodes | |
# so this salloc will prompt 46 nodes to startup and stay active for 20 min | |
# this is enough nodes for the first 17 tests to run in parallel, and we | |
# have 17 runners configured. | |
- run: salloc --partition=p2 -N 46 -J $GITHUB_SHA sleep 20m & | |
- run: /contrib/fv3/SHiELD_build_CI/checkout.sh -b $GITHUB_REF -h $GITHUB_SHA | |
build: | |
if: github.repository == 'NOAA-GFDL/SHiELD_build' | |
runs-on: [shieldbuild] | |
name: SOLO SHiELD build | |
needs: [checkout] | |
strategy: | |
fail-fast: true | |
max-parallel: 3 | |
matrix: | |
runscript: [/contrib/fv3/SHiELD_build_CI/compile.sh] | |
config: [shield, solo] | |
hydro: [sw, nh, hydro] | |
bit: [32bit, 64bit] | |
mode: [repro, prod, debug] | |
steps: | |
- env: | |
RUNSCRIPT: ${{ matrix.runscript }} | |
CONFIG: ${{ matrix.config }} | |
HYDRO: ${{ matrix.hydro }} | |
BIT: ${{ matrix.bit }} | |
MODE: ${{ matrix.mode }} | |
run: $RUNSCRIPT -b $GITHUB_REF -h $GITHUB_SHA -c $CONFIG -hy $HYDRO -b $BIT -m $MODE | |
test: | |
if: github.repository == 'NOAA-GFDL/SHiELD_build' | |
runs-on: [shieldbuild] | |
name: SOLO SHiELD test suite | |
needs: [checkout, build] | |
strategy: | |
fail-fast: false | |
max-parallel: 17 | |
matrix: | |
runscript: [/contrib/fv3/SHiELD_build_CI/run_test.sh] | |
argument: | |
# These are placed in order of largest to smallest jobs | |
#layout 8,8 needs 8 nodes | |
- C512r20.solo.superC | |
- C768.sw.BTwave | |
#layout 4,8 needs 4 nodes | |
- C256r20.solo.superC | |
- C384.sw.BLvortex | |
#layout 4,4 needs 2 nodes | |
- C128r20.solo.superC | |
- C128r3.solo.TC.d1 | |
- C128r3.solo.TC.h6 | |
- C128r3.solo.TC | |
- C128r3.solo.TC.tr8 | |
- C192.sw.BLvortex | |
- C192.sw.BTwave | |
- C192.sw.modon | |
- C384.sw.BTwave | |
#layout 4,1 and 2,2 need 1 node | |
- C96.solo.BCdry.hyd | |
- C96.solo.BCdry | |
- C96.solo.BCmoist.hyd.d3 | |
- C96.solo.BCmoist.hyd | |
- C96.solo.BCmoist.nhK | |
- C96.solo.BCmoist | |
- C96.solo.mtn_rest.hyd.diff2 | |
- C96.solo.mtn_rest.hyd | |
- C96.solo.mtn_rest.nonmono.diff2 | |
- C96.solo.mtn_rest | |
- C96.sw.BLvortex | |
- C96.sw.BTwave | |
- C96.sw.modon | |
- C96.sw.RHwave | |
- d96_1k.solo.mtn_rest_shear.olddamp | |
- d96_1k.solo.mtn_rest_shear | |
- d96_1k.solo.mtn_schar.mono | |
- d96_1k.solo.mtn_schar | |
- d96_2k.solo.bubble.n0 | |
- d96_2k.solo.bubble.nhK | |
- d96_2k.solo.bubble | |
- d96_500m.solo.mtn_schar | |
steps: | |
# This will end the slurm job started in the checkout job | |
- run: scancel -n $GITHUB_SHA | |
- env: | |
RUNSCRIPT: ${{ matrix.runscript }} | |
ARG1: ${{ matrix.argument }} | |
run: $RUNSCRIPT -t $ARG1 -b $GITHUB_REF -h $GITHUB_SHA | |
shutdown: | |
if: always() && github.repository == 'NOAA-GFDL/SHiELD_build' | |
runs-on: [shieldbuild] | |
name: Shutdown Processes | |
needs: [checkout, build, test] | |
strategy: | |
fail-fast: false | |
max-parallel: 17 | |
matrix: | |
test: | |
- C512r20.solo.superC | |
- C768.sw.BTwave | |
- C256r20.solo.superC | |
- C384.sw.BLvortex | |
- C128r20.solo.superC | |
- C128r3.solo.TC.d1 | |
- C128r3.solo.TC.h6 | |
- C128r3.solo.TC | |
- C128r3.solo.TC.tr8 | |
- C192.sw.BLvortex | |
- C192.sw.BTwave | |
- C192.sw.modon | |
- C384.sw.BTwave | |
- C96.solo.BCdry.hyd | |
- C96.solo.BCdry | |
- C96.solo.BCmoist.hyd.d3 | |
- C96.solo.BCmoist.hyd | |
- C96.solo.BCmoist.nhK | |
- C96.solo.BCmoist | |
- C96.solo.mtn_rest.hyd.diff2 | |
- C96.solo.mtn_rest.hyd | |
- C96.solo.mtn_rest.nonmono.diff2 | |
- C96.solo.mtn_rest | |
- C96.sw.BLvortex | |
- C96.sw.BTwave | |
- C96.sw.modon | |
- C96.sw.RHwave | |
- d96_1k.solo.mtn_rest_shear.olddamp | |
- d96_1k.solo.mtn_rest_shear | |
- d96_1k.solo.mtn_schar.mono | |
- d96_1k.solo.mtn_schar | |
- d96_2k.solo.bubble.n0 | |
- d96_2k.solo.bubble.nhK | |
- d96_2k.solo.bubble | |
- d96_500m.solo.mtn_schar | |
steps: | |
- run: scancel -n $GITHUB_SHA | |
- env: | |
JOB: ${{ github.sha }}_${{ matrix.test }} | |
run: scancel -n $JOB |