-
Notifications
You must be signed in to change notification settings - Fork 158
49 lines (46 loc) · 2.12 KB
/
github_autotools_gnu.yml
File metadata and controls
49 lines (46 loc) · 2.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
name: Autotools build and unit testing with GCC
on: [push, pull_request]
# cancel running jobs if theres a newer push
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
conf-flag: [ --disable-openmp, --with-mpi=no, --disable-r8-default]
input-flag: [--with-yaml, --enable-test-input=/home/unit_tests_input]
exclude:
- conf-flag: --with-mpi=no
input-flag: --enable-test-input=/home/unit_tests_input
container:
image: ghcr.io/noaa-gfdl/fms/fms-ci-rocky-gnu:15.1.0
env:
DISTCHECK_CONFIGURE_FLAGS: "${{ matrix.conf-flag }} ${{ matrix.input-flag }}"
DEBUG_FLAGS: "-O0 -g -fbounds-check -ffpe-trap=invalid,zero,overflow" # debug compiler flags taken from the mkmf template
# diag manager openmp + logical mask tests fail with gcc, these are reproducible outside the CI
# test_mpp_clock_begin_end_id is an expected fail that is passing, only happens in the CI
# test_time_interp2 tests fail from file issues, only happens in the CI
SKIP_TESTS: "test_time_none.10 test_time_sum.10 test_time_avg.10 test_time_min.10 test_time_max.10 test_time_pow.10 test_time_rms.10 test_mpp_clock_begin_end_id.10 test_time_interp2.7 test_time_interp2.8"
steps:
- name: Checkout code
uses: actions/checkout@v6.0.1
- name: Prepare GNU autoconf for build
run: autoreconf -if
- name: Configure the build
run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} FCFLAGS="$FCFLAGS $DEBUG_FLAGS" || cat config.log
- name: Run distcheck (compiles, tests, and packages)
run: make distcheck 2>&1 > distcheck.log
if: ${{ matrix.conf-flag != '--with-mpi=no' }}
- name: Output errors on failure
run: grep -E "^FAIL:|^XPASS:" distcheck.log
if: failure()
- name: Upload log on failure
uses: actions/upload-artifact@v7.0.0
if: failure()
with:
path: distcheck.log
- name: Build the library (without test suite for serial build)
run: make
if: ${{ matrix.conf-flag == '--with-mpi=no' }}