JDBetteridge/merge pyop2 tsfc #18
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: Pip install Firedrake | |
on: | |
# Push to master or PR | |
push: | |
branches: | |
- master | |
pull_request: | |
concurrency: | |
# Cancels jobs running if new commits are pushed | |
group: > | |
${{ github.workflow }}- | |
${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: "Build Firedrake using pip" | |
# Run on our self-hosted machines | |
runs-on: [self-hosted, Linux] | |
container: | |
image: firedrakeproject/firedrake-env:latest | |
options: --user root | |
defaults: | |
run: | |
shell: bash | |
working-directory: /home/firedrake | |
strategy: | |
# Don't immediately kill real if complex fails and vice versa. | |
fail-fast: false | |
matrix: | |
include: | |
- scalar-type: real | |
petsc_arch: default | |
- scalar-type: complex | |
petsc_arch: complex | |
env: | |
# PETSC_DIR, HDF5_DIR and MPICH_DIR are set inside the docker image | |
FIREDRAKE_CI_TESTS: 1 | |
PYOP2_CI_TESTS: 1 | |
PETSC_ARCH: ${{ matrix.petsc_arch }} | |
OMP_NUM_THREADS: 1 | |
OPENBLAS_NUM_THREADS: 1 | |
RDMAV_FORK_SAFE: 1 | |
steps: | |
- name: Cleanup | |
if: ${{ always() }} | |
run: rm -rf pip_venv | |
- name: Create a venv | |
run: python3 -m venv pip_venv | |
- uses: actions/checkout@v4 | |
with: | |
path: src/firedrake | |
- name: Pip install | |
run: | | |
ln -s /__w/firedrake/firedrake/src pip_venv/ | |
source pip_venv/bin/activate | |
cd pip_venv/src | |
export CC="$MPICH_DIR/mpicc" | |
export CXX="$MPICH_DIR/mpicxx" | |
export MPICC="$MPICH_DIR/mpicc" | |
export MPI_HOME="$PETSC_DIR/packages" | |
pip install \ | |
--log=firedrake-install.log \ | |
--no-binary mpi4py,h5py \ # do these need to be no-binary? | |
-v -e './firedrake[test]' # must the install be editable? | |
- name: Add mpiexec to the venv and install timeout | |
run: | | |
source pip_venv/bin/activate | |
cat << EOF > "$VIRTUAL_ENV/bin/mpiexec" | |
#!/bin/bash | |
"$MPICH_DIR"/mpiexec "\$@" | |
EOF | |
chmod +x "$VIRTUAL_ENV"/bin/mpiexec | |
pip install -U pytest-timeout | |
- name: Run Firedrake smoke tests | |
run: | | |
source pip_venv/bin/activate | |
cd pip_venv/src/firedrake | |
pytest -v tests/firedrake/test_0init.py | |
pytest \ | |
--durations=200 \ | |
--timeout=1800 \ | |
--timeout-method=thread \ | |
-o faulthandler_timeout=1860 \ | |
-n 12 --dist worksteal \ | |
--junit-xml=firedrake.xml \ | |
-sv tests/firedrake/regression -k "poisson_strong or stokes_mini or dg_advection" | |
timeout-minutes: 120 | |
- name: Publish Test Report | |
uses: mikepenz/[email protected] | |
if: ${{ always() && ( github.ref != 'refs/heads/master') }} | |
with: | |
report_paths: '/home/firedrake/pip_venv/src/firedrake/firedrake.xml' | |
comment: true | |
check_name: "Firedrake ${{ matrix.scalar-type }}" | |
updateComment: true | |
flaky_summary: true | |
- name: Cleanup | |
# Belt and braces: clean up before and after the run. | |
if: ${{ always() }} | |
run: rm -rf pip_venv |