Skip to content

MacOS Docker containers #6625

MacOS Docker containers

MacOS Docker containers #6625

Workflow file for this run

name: Install and Test Firedrake
on:
# Push to master or PR
push:
branches:
- master
pull_request:
schedule:
- cron: '0 0 * * 0'
- cron: '0 0 1 * *' # Monthly release
concurrency:
# Cancels jobs running if new commits are pushed
group: >
${{ github.workflow }}-
${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
RELEASE_TAG: latest
jobs:
# build:
# name: "Build Firedrake"
# # Run on our self-hosted machines
# runs-on: [self-hosted, Linux]
# container:
# image: firedrakeproject/firedrake-env:latest
# strategy:
# # Don't immediately kill real if complex fails and vice versa.
# fail-fast: false
# matrix:
# include:
# - scalar-type: real
# complex: ""
# petsc_arch: default
# - scalar-type: complex
# complex: --complex
# petsc_arch: complex
# env:
# # PETSC_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
# COMPLEX: ${{ matrix.complex }}
# RDMAV_FORK_SAFE: 1
# steps:
# - uses: actions/checkout@v4
# - name: Cleanup
# if: ${{ always() }}
# run: |
# cd ..
# rm -rf firedrake_venv
# - name: Build Firedrake
# run: |
# cd ..
# # Linting should ignore unquoted shell variable $COMPLEX
# # shellcheck disable=SC2086
# ./firedrake/scripts/firedrake-install \
# $COMPLEX \
# --honour-petsc-dir \
# --mpicc="$MPICH_DIR"/mpicc \
# --mpicxx="$MPICH_DIR"/mpicxx \
# --mpif90="$MPICH_DIR"/mpif90 \
# --mpiexec="$MPICH_DIR"/mpiexec \
# --mpihome="$MPICH_DIR"/.. \
# --venv-name firedrake_venv \
# --no-package-manager \
# --disable-ssh \
# --documentation-dependencies \
# --torch \
# --jax \
# --netgen \
# --slepc \
# --install thetis \
# --install gusto \
# --install icepack \
# --install irksome \
# --install femlium \
# --install fascd \
# --install defcon \
# --install gadopt \
# --install asQ \
# || (cat firedrake-install.log && /bin/false)
# - name: Install test dependencies
# run: |
# . ../firedrake_venv/bin/activate
# python "$(which firedrake-clean)"
# python -m pip install \
# pytest-xdist pytest-timeout ipympl
# python -m pip list
# - name: Test Firedrake
# run: |
# . ../firedrake_venv/bin/activate
# echo OMP_NUM_THREADS is "$OMP_NUM_THREADS"
# echo OPENBLAS_NUM_THREADS is "$OPENBLAS_NUM_THREADS"
# python -m pytest -v tests/firedrake/test_0init.py
# python -m pytest \
# --durations=200 \
# --timeout=1800 \
# --timeout-method=thread \
# -o faulthandler_timeout=1860 \
# -n 12 --dist worksteal \
# --junit-xml=firedrake.xml \
# -sv tests/firedrake
# timeout-minutes: 120
# - name: Publish Test Report
# uses: mikepenz/[email protected]
# if: ${{ always() && ( github.ref != 'refs/heads/master') }}
# with:
# report_paths: '/__w/firedrake/firedrake/firedrake.xml'
# comment: true
# check_name: "Firedrake ${{ matrix.scalar-type }}"
# updateComment: true
# flaky_summary: true
# - name: Test pyadjoint
# if: ${{ matrix.scalar-type == 'real' }}
# run: |
# . ../firedrake_venv/bin/activate
# cd ../firedrake_venv/src/pyadjoint
# python -m pytest \
# --durations=200 \
# --timeout=600 \
# --timeout-method=thread \
# -o faulthandler_timeout=660 \
# -n 12 --dist worksteal \
# -sv tests/firedrake_adjoint
# timeout-minutes: 30
# - name: Cleanup
# # Belt and braces: clean up before and after the run.
# if: ${{ always() }}
# run: |
# cd ..
# rm -rf firedrake_venv
#
# docker_tag:
# name: "Set the Docker release tag"
# runs-on: [self-hosted, Linux]
# if: ${{ github.ref == 'refs/heads/master' }}
# steps:
# - name: Set release tag
# # Set a release tag if triggered by monthly CRON job
# if: github.event.schedule == '0 0 1 * *'
# run: |
# DATE_TAG="$(date +%Y-%m)"
# echo "RELEASE_TAG=$DATE_TAG" >> "$GITHUB_ENV"
# - name: Print release tag being used
# run: |
# echo The release tag is "$RELEASE_TAG"
# outputs:
# tag: ${{ env.RELEASE_TAG }}
docker:
name: "Build Docker containers"
# Only run on master, but always generate firedrake-env image,
# even if build fails (see docker.yml)
# if: ${{ (github.ref == 'refs/heads/master') && always() }}
if: ${{ always() }}
uses: ./.github/workflows/docker.yml
with:
tag: testing
status: success
secrets: inherit