Patch transient CI failures due to busy file system #987
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: CI for Autotools/Linux | |
on: | |
push: | |
paths-ignore: | |
- "**/CMakeLists.txt" | |
- "**.cmake" | |
- "**.cmake.in" | |
- "cmake/**" | |
- "CMake*" | |
- ".github/workflows/ci_cmake.yml" | |
- ".github/workflows/ci_darwin.yml" | |
- ".github/workflows/composite-cmake/**" | |
pull_request: | |
env: | |
# Due to busy file system problems on the CI runners, we introduced a patch to | |
# sleep if the MPI count of an I/O operation is unexpectedly 0 and then retry | |
# the I/O operation once. The time is in milliseconds. | |
IO_SLEEP_TIME: 5 | |
jobs: | |
linux-multi: | |
runs-on: ubuntu-latest | |
name: Autotools build on Linux | |
steps: | |
- name: Install system dependencies | |
run: | | |
sudo apt-get update -yq | |
sudo apt-get install -yq --no-install-recommends \ | |
zlib1g-dev libmpich-dev mpich | |
- name: Checkout source code | |
uses: actions/checkout@main | |
- name: Patch I/O for CI by sleeping if I/O intensity is too high | |
run: git apply doc/patch/patch-CI-IO.patch | |
- name: Run bootstrap script | |
run: ./bootstrap | |
- name: Make check with MPI and debug, without shared | |
shell: bash | |
run: | | |
DIR="checkMPIdebug_shared" && mkdir -p "$DIR" && cd "$DIR" | |
../configure --enable-mpi --enable-debug --disable-shared \ | |
CFLAGS="-O0 -g -Wall -Wextra -Wno-unused-parameter" \ | |
CPPFLAGS="-DSC_HACK_MPI_SLEEP=$IO_SLEEP_TIME" | |
make -j V=0 | |
make -j check V=0 | |
- name: Make check with MPI, without debug | |
shell: bash | |
run: | | |
DIR="checkMPI" && mkdir -p "$DIR" && cd "$DIR" | |
../configure --enable-mpi CFLAGS="-O2" \ | |
CPPFLAGS="-DSC_HACK_MPI_SLEEP=$IO_SLEEP_TIME" | |
make -j V=0 | |
make -j check V=0 | |
- name: Make check without MPI, with debug | |
shell: bash | |
run: | | |
DIR="checkdebug" && mkdir -p "$DIR" && cd "$DIR" | |
../configure --enable-debug CFLAGS="-O0 -g -Wall -Wno-uninitialized" \ | |
CPPFLAGS="-DSC_HACK_MPI_SLEEP=$IO_SLEEP_TIME" | |
make -j V=0 | |
make -j check V=0 | |
- name: Install JSON parser library halfway through CI run | |
run: | | |
sudo apt-get install -yq --no-install-recommends \ | |
libjansson-dev | |
- name: Make check with MPI, debug and C++ compiler | |
shell: bash | |
run: | | |
DIR="checkMPIdebugCXX" && mkdir -p "$DIR" && cd "$DIR" | |
../configure --enable-mpi --enable-debug CFLAGS="-O0" CC=mpicxx \ | |
CPPFLAGS="-DSC_HACK_MPI_SLEEP=$IO_SLEEP_TIME" | |
make -j V=0 | |
make -j check V=0 | |
- name: Make check with OpenMP, MPI, debug | |
shell: bash | |
run: | | |
DIR="checkOpenMPMPIdebug" && mkdir -p "$DIR" && cd "$DIR" | |
../configure --enable-openmp="-fopenmp" --enable-mpi \ | |
--enable-debug CFLAGS="-O0" \ | |
CPPFLAGS="-DSC_HACK_MPI_SLEEP=$IO_SLEEP_TIME" | |
make -j V=0 | |
make -j check V=0 | |
- name: Make distcheck | |
shell: bash | |
run: | | |
DIR="distcheck" && mkdir -p "$DIR" && cd "$DIR" | |
../configure CPPFLAGS="-DSC_HACK_MPI_SLEEP=$IO_SLEEP_TIME" | |
make -j distcheck V=0 | |
- name: Upload log files | |
if: always() | |
uses: actions/upload-artifact@main | |
with: | |
name: linux_multi_log | |
path: | | |
./**/config.log | |
./**/test-suite.log | |
./**/test/*.log | |
linux-valgrind: | |
runs-on: ubuntu-latest | |
name: Autotools with valgrind | |
steps: | |
- name: Install system dependencies | |
run: | | |
sudo apt-get update -yq | |
sudo apt-get install -yq --no-install-recommends \ | |
zlib1g-dev libmpich-dev mpich valgrind | |
- name: Checkout source code | |
uses: actions/checkout@main | |
- name: Patch I/O for CI by sleeping if I/O intensity is too high | |
run: git apply doc/patch/patch-CI-IO.patch | |
- name: Run bootstrap script | |
run: ./bootstrap | |
- name: Make check with MPI, debug and valgrind, without shared | |
shell: bash | |
run: | | |
DIR="checkMPIdebug_valgrind" && mkdir -p "$DIR" && cd "$DIR" | |
../configure --enable-mpi --enable-debug \ | |
--disable-shared --enable-valgrind \ | |
CFLAGS="-O0 -g -Wall -Wextra -Wno-unused-parameter" \ | |
CPPFLAGS="-DSC_HACK_MPI_SLEEP=$IO_SLEEP_TIME" | |
make -j V=0 | |
make -j check V=0 | |
- name: Upload log files | |
if: always() | |
uses: actions/upload-artifact@main | |
with: | |
name: linux_valgrind_log | |
path: | | |
./**/config.log | |
./**/test-suite.log | |
./**/test/*.log | |
linux-tarball: | |
runs-on: ubuntu-latest | |
name: Pack tarball on Linux | |
steps: | |
- name: Install system dependencies | |
run: | | |
sudo apt-get update -yq | |
sudo apt-get install -yq --no-install-recommends \ | |
zlib1g-dev libmpich-dev mpich | |
- name: Checkout source code | |
uses: actions/checkout@main | |
with: | |
fetch-depth: 0 | |
- name: Patch I/O for CI by sleeping if I/O intensity is too high | |
run: git apply doc/patch/patch-CI-IO.patch | |
- name: Identify version | |
shell: bash | |
run: | | |
git tag | |
git describe --abbrev=4 --match 'v*' | |
- name: Run bootstrap script | |
run: ./bootstrap | |
- name: Configure and make | |
shell: bash | |
run: | | |
DIR="tarball" && mkdir -p "$DIR" && cd "$DIR" | |
../configure --enable-mpi --enable-debug \ | |
CFLAGS="-O0 -g -pedantic -Wall -Wextra -Werror \ | |
-Wno-unused-parameter -Wno-builtin-declaration-mismatch \ | |
-Wno-implicit-fallthrough" \ | |
CPPFLAGS="-DSC_HACK_MPI_SLEEP=$IO_SLEEP_TIME" | |
make -j V=0 | |
make -j check V=0 | |
make -j distcheck V=0 | |
mv libsc-*.tar.gz .. | |
- name: Upload tarball | |
uses: actions/upload-artifact@main | |
with: | |
name: libsc_tarball | |
path: ./libsc-*.tar.gz | |
- name: Upload log files | |
if: always() | |
uses: actions/upload-artifact@main | |
with: | |
name: linux_tarball_log | |
path: | | |
./**/config.log | |
./**/test-suite.log | |
./**/test/*.log |