dropme: CI use "unofficial" container images #1056
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: Continuous integration in a box | |
on: | |
push: | |
branches-ignore: | |
- documentation | |
pull_request: | |
branches-ignore: | |
- documentation | |
jobs: | |
Containerized-CI: | |
runs-on: ubuntu-22.04 | |
continue-on-error: ${{ matrix.experimental }} | |
strategy: | |
fail-fast: false | |
matrix: | |
fortran-compiler: [ifort, ifx, nvfortran] | |
rte-kernels: [default, accel] | |
fpmodel: [DP, SP] | |
include: | |
# The tests are not experimental by default: | |
- experimental: false | |
# Disable GPU support to use the default kernels: | |
- rte-kernels: default | |
enable-gpu: no | |
# Enable GPU support with OpenMP for Intel Fortran Compiler Classic but | |
# ignore the directives: | |
- fortran-compiler: ifort | |
rte-kernels: accel | |
enable-gpu: openmp | |
extra-config-args: acx_cv_fc_openmp_flag= | |
# Enable GPU support with OpenMP for Intel Fortran Compiler: | |
- fortran-compiler: ifx | |
rte-kernels: accel | |
enable-gpu: openmp | |
# Enable GPU support with OpenACC for NVIDIA Fortran Compiler: | |
- fortran-compiler: nvfortran | |
rte-kernels: accel | |
enable-gpu: openacc | |
# Set flags for Intel Fortran Compiler Classic: | |
- fortran-compiler: ifort | |
fcflags: -m64 -g -traceback -heap-arrays -assume realloc_lhs -extend-source 132 -check bounds,uninit,pointers,stack -stand f08 | |
# Set flags for Intel Fortran Compiler: | |
- fortran-compiler: ifx | |
rte-kernels: default | |
fcflags: -debug -traceback -O0 -heap-arrays -assume realloc_lhs -extend-source 132 -stand f08 | |
- fortran-compiler: ifx | |
rte-kernels: accel | |
fcflags: -debug -traceback -O0 -heap-arrays -assume realloc_lhs -extend-source 132 -stand f08 -fiopenmp -fopenmp-targets=spir64 | |
# The compiler produces two module files per Fortran module, which | |
# confuses the configure script: | |
extra-config-args: acx_cv_fc_module_naming_ext=mod | |
experimental: true | |
# Set flags for NVIDIA Fortran Compiler: | |
- fortran-compiler: nvfortran | |
fcflags: -Mallocatable=03 -Mstandard -Mbounds -Mchkptr -Kieee -Mchkstk | |
# Set container images: | |
- fortran-compiler: ifort | |
image: skosukhin/rte-rrtmgp-ci:ifort | |
- fortran-compiler: ifx | |
image: skosukhin/rte-rrtmgp-ci:ifort | |
- fortran-compiler: nvfortran | |
image: skosukhin/rte-rrtmgp-ci:nvfortran | |
container: | |
image: ${{ matrix.image }} | |
env: | |
# Core variables: | |
FC: ${{ matrix.fortran-compiler }} | |
FCFLAGS: ${{ matrix.fcflags }} | |
# Configure script variables: | |
LAUNCH_PREFIX: | |
# Auxiliary variables: | |
NFHOME: /opt/netcdf-fortran | |
RFMIP_CACHEDIR: .testcache | |
steps: | |
# | |
# Checks-out repository under $GITHUB_WORKSPACE | |
# | |
- uses: actions/checkout@v4 | |
# | |
# Cache RFMIP files | |
# | |
- name: Cache RFMIP files | |
uses: actions/cache@v3 | |
with: | |
path: ${{ env.RFMIP_CACHEDIR }} | |
key: rfmip-files-autoconf | |
# | |
# Configure | |
# | |
- name: Configure | |
run: | | |
test 'x${{ matrix.fpmodel }}' = xSP && enable_sp=yes || enable_sp=no | |
./configure \ | |
--disable-silent-rules \ | |
--enable-gpu='${{ matrix.enable-gpu }}' \ | |
--enable-single-precision="${enable_sp}" \ | |
--enable-tests \ | |
--with-netcdf-root="${NFHOME}" \ | |
${{ matrix.extra-config-args }} \ | |
|| { cat ./config.log; exit 1; } | |
# | |
# Build | |
# | |
- name: Build | |
run: make -j | |
# | |
# Check | |
# | |
- name: Check | |
run: | | |
make -j check || { | |
find . -name '*.test' | sort | sed 's|.test$|.log|' | while read file; do | |
echo "$file"; | |
cat "$file"; | |
done | |
exit 1 | |
} | |
# | |
# Generate validation plots | |
# | |
- name: Generate validation plots | |
if: matrix.fortran-compiler == 'ifort' && matrix.rte-kernels == 'default' && matrix.fpmodel == 'DP' | |
working-directory: tests | |
run: python validation-plots.py | |
# | |
# Upload validation plots | |
# | |
- name: Upload validation plots | |
if: matrix.fortran-compiler == 'ifort' && matrix.rte-kernels == 'default' && matrix.fpmodel == 'DP' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: valdiation-plot | |
path: tests/validation-figures.pdf |