Skip to content

WIP: Use github actions #86

WIP: Use github actions

WIP: Use github actions #86

Workflow file for this run

name: "Branch next: Docker"
on:
pull_request:
types: [labeled, synchronize, opened, reopened]
branches: [next]
push:
branches: [next]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
prepare:
name: Prepare
runs-on: ubuntu-slim
outputs:
# Base SHA for this event
base_sha: ${{ steps.checkout.outputs.base_sha }}
# Whether or not to build a given packages
mpi_build: ${{ steps.package_context.outputs.mpi_build }}
petsc_build: ${{ steps.package_context.outputs.petsc_build }}
libmesh_build: ${{ steps.package_context.outputs.libmesh_build }}
moose_dev_build: ${{ steps.package_context.outputs.moose_dev_build }}
# Package tags for building and pulling
mpi_tag: ${{ steps.package_context.outputs.mpi_tag }}
petsc_tag: ${{ steps.package_context.outputs.petsc_tag }}
libmesh_tag: ${{ steps.package_context.outputs.libmesh_tag }}
moose_dev_tag: ${{ steps.package_context.outputs.moose_dev_tag }}
# Package URIs for building and pulling
mpi_uri: ${{ steps.package_context.outputs.mpi_uri }}
petsc_uri: ${{ steps.package_context.outputs.petsc_uri }}
libmesh_uri: ${{ steps.package_context.outputs.libmesh_uri }}
moose_dev_uri: ${{ steps.package_context.outputs.moose_dev_uri }}
# Submodule SHAs for building
conduit_sha: ${{ steps.dependency_refs.outputs.conduit_sha }}
libmesh_sha: ${{ steps.dependency_refs.outputs.libmesh_sha }}
mfem_sha: ${{ steps.dependency_refs.outputs.mfem_sha }}
neml2_sha: ${{ steps.dependency_refs.outputs.neml2_sha }}
petsc_sha: ${{ steps.dependency_refs.outputs.petsc_sha }}
wasp_sha: ${{ steps.dependency_refs.outputs.wasp_sha }}
vtk_version: ${{ steps.dependency_refs.outputs.vtk_version }}
steps:
- uses: idaholab/moose/checkout@actions
name: Checkout
id: checkout
- name: Get package versions
shell: bash
id: package_context
run: |
echo "::group::Install versioner dependencies"
pip install --no-cache --break-system-packages pyyaml jinja2
echo "::endgroup::"
echo "::group::Parse packages"
outputs=()
summary=()
uri_prefix="ghcr.io/${{ github.repository }}"
base_sha="${{ steps.checkout.outputs.base_sha }}"
packages=("mpi" "petsc" "libmesh" "moose-dev")
for package in "${packages[@]}"; do
base_json="$(./scripts/versioner.py "$package" "$base_sha" --json)"
head_json="$(./scripts/versioner.py "$package" --json)"
base_version="$(echo "$base_json" | jq -r '.full_version')"
head_version="$(echo "$head_json" | jq -r '.full_version')"
package_container="$package"
if [ "$package" != "moose-dev" ]; then
package_container="moose-${package_container}"
fi
package_tag="$head_version"
package_uri="${uri_prefix}/${package_container}"
package_build="false"
if [ "$base_version" != "$head_version" ]; then
package_build="true"
if [ "$GITHUB_EVENT_NAME" == "pull_request" ]; then
package_tag="pr-${{ github.event.pull_request.number }}"
package_uri="${uri_prefix}/pr-${package_container}"
fi
fi
package_var="${package//-/_}"
outputs+=("${package_var}_build=${package_build}")
outputs+=("${package_var}_tag=${package_tag}")
outputs+=("${package_var}_uri=${package_uri}")
summary+=("\`${package}\` | \`${base_version}\` | \`${head_version}\` | \`${package_uri}\` | \`${package_tag}\`")
done
echo "::endgroup::"
echo "::group::Output step change summary"
echo "## Docker package summary" >> $GITHUB_STEP_SUMMARY
echo "| Package | From version | To version | URI | Tag |" >> $GITHUB_STEP_SUMMARY
echo "| ------- | ------------ | ---------- | --- | --- |" >> $GITHUB_STEP_SUMMARY
for entry in "${summary[@]}"; do
echo "$entry" >> $GITHUB_STEP_SUMMARY
done
echo "::endgroup::"
echo "::group::Output packages"
for entry in "${outputs[@]}"; do
echo "$entry" >> $GITHUB_OUTPUT
echo "$entry"
done
echo "::endgroup::"
- name: Get dependency refs
id: dependency_refs
shell: bash
run: |
echo "::group::Build refs"
outputs=()
outputs+=("conduit_sha=$(git rev-parse HEAD:framework/contrib/conduit)")
outputs+=("libmesh_sha=$(git rev-parse HEAD:libmesh)")
outputs+=("mfem_sha=$(git rev-parse HEAD:framework/contrib/mfem)")
outputs+=("neml2_sha=$(git rev-parse HEAD:framework/contrib/neml2)")
outputs+=("petsc_sha=$(git rev-parse HEAD:petsc)")
outputs+=("wasp_sha=$(git rev-parse HEAD:framework/contrib/wasp)")
vtk_version="$(./scripts/versioner.py libmesh-vtk --json | jq -r '.version')"
outputs+=("vtk_version=${vtk_version}")
echo "::endgroup::"
echo "::group::Output refs"
for entry in "${outputs[@]}"; do
echo "$entry" >> $GITHUB_OUTPUT
echo "$entry"
done
echo "::endgroup::"
build_clang_mpich:
name: "Build clang-mpich"
needs: [prepare]
if: >-
!cancelled()
&& (needs.prepare.outputs.mpi_build == 'true' || needs.prepare.outputs.petsc_build == 'true' || needs.prepare.outputs.libmesh_build == 'true' || needs.prepare.outputs.moose_dev_build == 'true')
permissions:
contents: read
packages: write
uses: ./.github/workflows/reusable-build-docker.yml
with:
base_sha: ${{ needs.prepare.outputs.base_sha }}
mpi_from: ghcr.io/idaholab/moose-mpibase/rocky:8.10-clang20.1.8-mpich5.0.1_2026.04.14
mpi_to: "${{ needs.prepare.outputs.mpi_uri }}-clang:${{ needs.prepare.outputs.mpi_tag }}"
mpi_build: ${{ needs.prepare.outputs.mpi_build == 'true' }}
petsc_to: "${{ needs.prepare.outputs.petsc_uri }}-clang-mpich:${{ needs.prepare.outputs.petsc_tag }}"
petsc_build: ${{ needs.prepare.outputs.petsc_build == 'true' }}
petsc_build_args: |
MPI_FLAVOUR=mpich
PETSC_GIT_REF=${{ needs.prepare.outputs.petsc_sha }}
libmesh_to: "${{ needs.prepare.outputs.libmesh_uri }}-clang-mpich:${{ needs.prepare.outputs.libmesh_tag }}"
libmesh_build: ${{ needs.prepare.outputs.libmesh_build == 'true' }}
libmesh_build_args: |
LIBMESH_GIT_REF=${{ needs.prepare.outputs.libmesh_sha }}
VTK_VERSION=${{ needs.prepare.outputs.vtk_version }}
moose_dev_to: "${{ needs.prepare.outputs.moose_dev_uri }}-clang-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
moose_dev_build: ${{ needs.prepare.outputs.moose_dev_build == 'true' }}
moose_dev_build_args: |
CONDUIT_GIT_REF=${{ needs.prepare.outputs.conduit_sha }}
MFEM_GIT_REF=${{ needs.prepare.outputs.mfem_sha }}
NEML2_GIT_REF=${{ needs.prepare.outputs.neml2_sha }}
WASP_GIT_REF=${{ needs.prepare.outputs.wasp_sha }}
build_clang_min_mpich:
name: "Build clang_min-mpich"
needs: [prepare]
if: >-
!cancelled()
&& (needs.prepare.outputs.mpi_build == 'true' || needs.prepare.outputs.petsc_build == 'true' || needs.prepare.outputs.libmesh_build == 'true' || needs.prepare.outputs.moose_dev_build == 'true')
permissions:
contents: read
packages: write
uses: ./.github/workflows/reusable-build-docker.yml
with:
base_sha: ${{ needs.prepare.outputs.base_sha }}
mpi_from: ghcr.io/idaholab/moose-mpibase/rocky:8.10-clang14.0.6-mpich5.0.1_2026.04.12
mpi_to: "${{ needs.prepare.outputs.mpi_uri }}-clang_min:${{ needs.prepare.outputs.mpi_tag }}"
mpi_build: ${{ needs.prepare.outputs.mpi_build == 'true' }}
petsc_to: "${{ needs.prepare.outputs.petsc_uri }}-clang_min-mpich:${{ needs.prepare.outputs.petsc_tag }}"
petsc_build: ${{ needs.prepare.outputs.petsc_build == 'true' }}
petsc_build_args: |
MPI_FLAVOUR=mpich
PETSC_GIT_REF=${{ needs.prepare.outputs.petsc_sha }}
libmesh_to: "${{ needs.prepare.outputs.libmesh_uri }}-clang_min-mpich:${{ needs.prepare.outputs.libmesh_tag }}"
libmesh_build: ${{ needs.prepare.outputs.libmesh_build == 'true' }}
libmesh_build_args: |
LIBMESH_GIT_REF=${{ needs.prepare.outputs.libmesh_sha }}
VTK_VERSION=${{ needs.prepare.outputs.vtk_version }}
moose_dev_to: "${{ needs.prepare.outputs.moose_dev_uri }}-clang_min-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
moose_dev_build: ${{ needs.prepare.outputs.moose_dev_build == 'true' }}
moose_dev_build_args: |
CONDUIT_GIT_REF=${{ needs.prepare.outputs.conduit_sha }}
MFEM_GIT_REF=${{ needs.prepare.outputs.mfem_sha }}
WASP_GIT_REF=${{ needs.prepare.outputs.wasp_sha }}
LIBTORCH_SKIP=1
NEML2_SKIP=1
build_gcc_min_mpich:
name: "Build gcc_min-mpich"
needs: [prepare]
if: >-
!cancelled()
&& (needs.prepare.outputs.mpi_build == 'true' || needs.prepare.outputs.petsc_build == 'true' || needs.prepare.outputs.libmesh_build == 'true' || needs.prepare.outputs.moose_dev_build == 'true')
permissions:
contents: read
packages: write
uses: ./.github/workflows/reusable-build-docker.yml
with:
base_sha: ${{ needs.prepare.outputs.base_sha }}
mpi_from: ghcr.io/idaholab/moose-mpibase/rocky:8.10-gcc9.2.1-mpich5.0.1_2026.04.12
mpi_to: "${{ needs.prepare.outputs.mpi_uri }}-gcc_min:${{ needs.prepare.outputs.mpi_tag }}"
mpi_build: ${{ needs.prepare.outputs.mpi_build == 'true' }}
petsc_to: "${{ needs.prepare.outputs.petsc_uri }}-gcc_min-mpich:${{ needs.prepare.outputs.petsc_tag }}"
petsc_build: ${{ needs.prepare.outputs.petsc_build == 'true' }}
petsc_build_args: |
MPI_FLAVOUR=mpich
PETSC_GIT_REF=${{ needs.prepare.outputs.petsc_sha }}
libmesh_to: "${{ needs.prepare.outputs.libmesh_uri }}-gcc_min-mpich:${{ needs.prepare.outputs.libmesh_tag }}"
libmesh_build: ${{ needs.prepare.outputs.libmesh_build == 'true' }}
libmesh_build_args: |
LIBMESH_GIT_REF=${{ needs.prepare.outputs.libmesh_sha }}
VTK_VERSION=${{ needs.prepare.outputs.vtk_version }}
moose_dev_to: "${{ needs.prepare.outputs.moose_dev_uri }}-gcc_min-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
moose_dev_build: ${{ needs.prepare.outputs.moose_dev_build == 'true' }}
moose_dev_build_args: |
CONDUIT_GIT_REF=${{ needs.prepare.outputs.conduit_sha }}
MFEM_GIT_REF=${{ needs.prepare.outputs.mfem_sha }}
WASP_GIT_REF=${{ needs.prepare.outputs.wasp_sha }}
LIBTORCH_SKIP=1
NEML2_SKIP=1
build_intel_mpich:
name: "Build intel-mpich"
needs: [prepare]
if: >-
!cancelled()
&& (needs.prepare.outputs.mpi_build == 'true' || needs.prepare.outputs.petsc_build == 'true' || needs.prepare.outputs.libmesh_build == 'true' || needs.prepare.outputs.moose_dev_build == 'true')
permissions:
contents: read
packages: write
uses: ./.github/workflows/reusable-build-docker.yml
with:
base_sha: ${{ needs.prepare.outputs.base_sha }}
mpi_from: ghcr.io/idaholab/moose-mpibase/rocky:8.10-oneapi2025.3.3-mpich4.3.2_2026.04.12
mpi_to: "${{ needs.prepare.outputs.mpi_uri }}-intel:${{ needs.prepare.outputs.mpi_tag }}"
mpi_build: ${{ needs.prepare.outputs.mpi_build == 'true' }}
petsc_to: "${{ needs.prepare.outputs.petsc_uri }}-intel-mpich:${{ needs.prepare.outputs.petsc_tag }}"
petsc_build: ${{ needs.prepare.outputs.petsc_build == 'true' }}
petsc_build_args: |
MPI_FLAVOUR=mpich
PETSC_GIT_REF=${{ needs.prepare.outputs.petsc_sha }}
libmesh_to: "${{ needs.prepare.outputs.libmesh_uri }}-intel-mpich:${{ needs.prepare.outputs.libmesh_tag }}"
libmesh_build: ${{ needs.prepare.outputs.libmesh_build == 'true' }}
libmesh_build_args: |
LIBMESH_GIT_REF=${{ needs.prepare.outputs.libmesh_sha }}
VTK_VERSION=${{ needs.prepare.outputs.vtk_version }}
moose_dev_to: "${{ needs.prepare.outputs.moose_dev_uri }}-intel-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
moose_dev_build: ${{ needs.prepare.outputs.moose_dev_build == 'true' }}
moose_dev_build_args: |
CONDUIT_GIT_REF=${{ needs.prepare.outputs.conduit_sha }}
MFEM_GIT_REF=${{ needs.prepare.outputs.mfem_sha }}
WASP_GIT_REF=${{ needs.prepare.outputs.wasp_sha }}
LIBTORCH_SKIP=1
build_moose_mpi_rocky8:
name: "Build moose-mpi-rocky8"
needs:
- prepare
if: >-
!cancelled()
&& contains(fromJSON('["success", "skipped"]'), needs.prepare.result)
&& needs.prepare.outputs.mpi_build
runs-on: ubuntu-24.04
permissions:
contents: read
packages: write
steps:
- uses: idaholab/moose/checkout@actions
name: Checkout
with:
pr_base_sha: ${{ needs.prepare.outputs.base_sha }}
- uses: idaholab/moose/build-docker@actions
name: Build and push
with:
from: ghcr.io/idaholab/moose-mpibase/rocky:8.10-gcc13.3.1-mpich5.0.1-openmpi5.0.10_2026.04.12
file: docker/moose-mpi/Dockerfile
variant: rocky8
uri_prefix: ${{ needs.prepare.outputs.mpi_uri }}
tag: ${{ needs.prepare.outputs.mpi_tag }}
registry_token: ${{ secrets.GITHUB_TOKEN }}
build_rocky8_mpich:
name: "Build rocky8-mpich"
needs: [prepare, build_moose_mpi_rocky8]
if: >-
!cancelled()
&& contains(fromJSON('["success", "skipped"]'), needs.build_moose_mpi_rocky8.result)
&& (needs.prepare.outputs.petsc_build == 'true' || needs.prepare.outputs.libmesh_build == 'true' || needs.prepare.outputs.moose_dev_build == 'true')
permissions:
contents: read
packages: write
uses: ./.github/workflows/reusable-build-docker.yml
with:
base_sha: ${{ needs.prepare.outputs.base_sha }}
mpi_from: unused
mpi_to: "${{ needs.prepare.outputs.mpi_uri }}-rocky8:${{ needs.prepare.outputs.mpi_tag }}"
mpi_build: false
petsc_to: "${{ needs.prepare.outputs.petsc_uri }}-rocky8-mpich:${{ needs.prepare.outputs.petsc_tag }}"
petsc_build: ${{ needs.prepare.outputs.petsc_build == 'true' }}
petsc_build_args: |
MPI_FLAVOUR=mpich
PETSC_GIT_REF=${{ needs.prepare.outputs.petsc_sha }}
libmesh_to: "${{ needs.prepare.outputs.libmesh_uri }}-rocky8-mpich:${{ needs.prepare.outputs.libmesh_tag }}"
libmesh_build: ${{ needs.prepare.outputs.libmesh_build == 'true' }}
libmesh_build_args: |
LIBMESH_GIT_REF=${{ needs.prepare.outputs.libmesh_sha }}
VTK_VERSION=${{ needs.prepare.outputs.vtk_version }}
moose_dev_to: "${{ needs.prepare.outputs.moose_dev_uri }}-rocky8-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
moose_dev_build: ${{ needs.prepare.outputs.moose_dev_build == 'true' }}
moose_dev_build_args: |
CONDUIT_GIT_REF=${{ needs.prepare.outputs.conduit_sha }}
MFEM_GIT_REF=${{ needs.prepare.outputs.mfem_sha }}
NEML2_GIT_REF=${{ needs.prepare.outputs.neml2_sha }}
WASP_GIT_REF=${{ needs.prepare.outputs.wasp_sha }}
build_rocky8_openmpi:
name: "Build rocky8-openmpi"
needs: [prepare, build_moose_mpi_rocky8]
if: >-
!cancelled()
&& contains(fromJSON('["success", "skipped"]'), needs.build_moose_mpi_rocky8.result)
&& (needs.prepare.outputs.petsc_build == 'true' || needs.prepare.outputs.libmesh_build == 'true' || needs.prepare.outputs.moose_dev_build == 'true')
permissions:
contents: read
packages: write
uses: ./.github/workflows/reusable-build-docker.yml
with:
base_sha: ${{ needs.prepare.outputs.base_sha }}
mpi_from: unused
mpi_to: "${{ needs.prepare.outputs.mpi_uri }}-rocky8:${{ needs.prepare.outputs.mpi_tag }}"
mpi_build: false
petsc_to: "${{ needs.prepare.outputs.petsc_uri }}-rocky8-openmpi:${{ needs.prepare.outputs.petsc_tag }}"
petsc_build: ${{ needs.prepare.outputs.petsc_build == 'true' }}
petsc_build_args: |
MPI_FLAVOUR=openmpi
PETSC_GIT_REF=${{ needs.prepare.outputs.petsc_sha }}
libmesh_to: "${{ needs.prepare.outputs.libmesh_uri }}-rocky8-openmpi:${{ needs.prepare.outputs.libmesh_tag }}"
libmesh_build: ${{ needs.prepare.outputs.libmesh_build == 'true' }}
libmesh_build_args: |
LIBMESH_GIT_REF=${{ needs.prepare.outputs.libmesh_sha }}
VTK_VERSION=${{ needs.prepare.outputs.vtk_version }}
moose_dev_to: "${{ needs.prepare.outputs.moose_dev_uri }}-rocky8-openmpi:${{ needs.prepare.outputs.moose_dev_tag }}"
moose_dev_build: ${{ needs.prepare.outputs.moose_dev_build == 'true' }}
moose_dev_build_args: |
CONDUIT_GIT_REF=${{ needs.prepare.outputs.conduit_sha }}
MFEM_GIT_REF=${{ needs.prepare.outputs.mfem_sha }}
NEML2_GIT_REF=${{ needs.prepare.outputs.neml2_sha }}
WASP_GIT_REF=${{ needs.prepare.outputs.wasp_sha }}
build_rocky9_mpich:
name: "Build rocky9-mpich"
needs: [prepare]
if: >-
!cancelled()
&& (needs.prepare.outputs.mpi_build == 'true' || needs.prepare.outputs.petsc_build == 'true' || needs.prepare.outputs.libmesh_build == 'true' || needs.prepare.outputs.moose_dev_build == 'true')
permissions:
contents: read
packages: write
uses: ./.github/workflows/reusable-build-docker.yml
with:
base_sha: ${{ needs.prepare.outputs.base_sha }}
mpi_from: ghcr.io/idaholab/moose-mpibase/rocky:9.7-gcc13.3.1-mpich4.3.2-openmpi5.0.10_2026.04.12
mpi_to: "${{ needs.prepare.outputs.mpi_uri }}-rocky9:${{ needs.prepare.outputs.mpi_tag }}"
mpi_build: ${{ needs.prepare.outputs.mpi_build == 'true' }}
petsc_to: "${{ needs.prepare.outputs.petsc_uri }}-rocky9-mpich:${{ needs.prepare.outputs.petsc_tag }}"
petsc_build: ${{ needs.prepare.outputs.petsc_build == 'true' }}
petsc_build_args: |
MPI_FLAVOUR=mpich
PETSC_GIT_REF=${{ needs.prepare.outputs.petsc_sha }}
libmesh_to: "${{ needs.prepare.outputs.libmesh_uri }}-rocky9-mpich:${{ needs.prepare.outputs.libmesh_tag }}"
libmesh_build: ${{ needs.prepare.outputs.libmesh_build == 'true' }}
libmesh_build_args: |
LIBMESH_GIT_REF=${{ needs.prepare.outputs.libmesh_sha }}
VTK_VERSION=${{ needs.prepare.outputs.vtk_version }}
moose_dev_to: "${{ needs.prepare.outputs.moose_dev_uri }}-rocky9-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
moose_dev_build: ${{ needs.prepare.outputs.moose_dev_build == 'true' }}
moose_dev_build_args: |
CONDUIT_GIT_REF=${{ needs.prepare.outputs.conduit_sha }}
MFEM_GIT_REF=${{ needs.prepare.outputs.mfem_sha }}
NEML2_GIT_REF=${{ needs.prepare.outputs.neml2_sha }}
WASP_GIT_REF=${{ needs.prepare.outputs.wasp_sha }}
#
# Modules, with moose-dev-rocky8-mpich
#
modules:
name: "Modules"
needs:
- prepare
- build_rocky8_mpich
if: >-
!cancelled()
&& !always()
&& contains(fromJSON('["success", "skipped"]'), needs.build_rocky8_mpich.result)
runs-on: ubuntu-slim
steps:
- name: Test
shell: bash
run: |
echo "testing"
modules_debug:
name: "Modules debug"
needs:
- prepare
- build_rocky8_mpich
if: >-
!cancelled()
&& contains(fromJSON('["success", "skipped"]'), needs.build_rocky8_mpich.result)
runs-on: ubuntu-24.04
container:
image: "${{ needs.prepare.outputs.moose_dev_uri }}-rocky8-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
options: --shm-size=1gb
env:
METHOD: dbg
steps:
- uses: idaholab/moose/checkout@actions
name: Checkout
with:
pr_base_sha: ${{ needs.prepare.outputs.base_sha }}
- uses: idaholab/moose/configure-moose@actions
name: Configure with kokkos, libtorch, neml2, mfem
with:
args: --with-kokkos=cpu --with-libtorch --with-neml2 --with-mfem
- uses: idaholab/moose/build@actions
name: Build
with:
dir: modules
args: all builds
- uses: idaholab/moose/tests@actions
name: Test
with:
dir: modules
args: --use-subdir-exe
modules_parallel:
name: "Modules parallel"
needs:
- prepare
- build_rocky8_mpich
if: >-
!cancelled()
&& !always()
&& contains(fromJSON('["success", "skipped"]'), needs.build_rocky8_mpich.result)
runs-on: ubuntu-slim
steps:
- name: Test
shell: bash
run: |
echo "testing"
modules_recover:
name: "Modules recover"
needs:
- prepare
- build_rocky8_mpich
if: >-
!cancelled()
&& !always()
&& contains(fromJSON('["success", "skipped"]'), needs.build_rocky8_mpich.result)
runs-on: ubuntu-slim
steps:
- name: Test
shell: bash
run: |
echo "testing"
modules_restep:
name: "Modules restep"
needs:
- prepare
- build_rocky8_mpich
if: >-
!cancelled()
&& !always()
&& contains(fromJSON('["success", "skipped"]'), needs.build_rocky8_mpich.result)
runs-on: ubuntu-slim
steps:
- name: Test
shell: bash
run: |
echo "testing"
fluid_properties_apps:
name: "Fluid properties apps"
needs:
- prepare
- build_rocky8_mpich
if: >-
!cancelled()
&& !always()
&& contains(fromJSON('["success", "skipped"]'), needs.build_rocky8_mpich.result)
runs-on: ubuntu-slim
steps:
- name: Test
shell: bash
run: |
echo "testing"
#
# Sweeps, with moose-dev-rocky8-mpich
# On: push, PR with "CI: sweeps" label
#
sweeps:
name: "Sweeps"
needs:
- prepare
- build_rocky8_mpich
if: >-
!cancelled()
&& contains(fromJSON('["success", "skipped"]'), needs.build_rocky8_mpich.result)
&& (github.event_name == 'push' || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'CI\u003A sweeps')))
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
type:
- -p
- --recover -p
- --distributed-mesh -p
- --distributed-mesh --recover -p
number:
- odd
- even
container:
image: "${{ needs.prepare.outputs.moose_dev_uri }}-rocky8-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
options: --shm-size=1gb
steps:
- uses: idaholab/moose/checkout@actions
name: Checkout
with:
pr_base_sha: ${{ needs.prepare.outputs.base_sha }}
- uses: idaholab/moose/configure-moose@actions
name: Configure with kokkos
with:
args: --with-kokkos
- uses: idaholab/moose/build@actions
name: Build
with:
dir: test
- uses: idaholab/moose/tests@actions
name: Test ${{ matrix.type }} ${{ matrix.number == 'odd' && '3' || '4' }}
with:
dir: test
args: ${{ matrix.type }} ${{ matrix.number == 'odd' && '3' || '4' }}
- uses: idaholab/moose/tests@actions
name: Test ${{ matrix.type }} ${{ matrix.number == 'odd' && '5' || '6' }}
with:
dir: test
args: ${{ matrix.type }} ${{ matrix.number == 'odd' && '5' || '6' }}
- uses: idaholab/moose/tests@actions
name: Test ${{ matrix.type }} ${{ matrix.number == 'odd' && '7' || '8' }}
with:
dir: test
args: ${{ matrix.type }} ${{ matrix.number == 'odd'&& '7' || '8' }}
- uses: idaholab/moose/tests@actions
name: Test ${{ matrix.type }} ${{ matrix.number == 'odd' && '15' || '16' }}
with:
dir: test
args: ${{ matrix.type }} ${{ matrix.number == 'odd' && '15' || '16' }}
#
# Clang, with moose-dev-clang-mpich
#
clang:
name: "Clang"
needs:
- prepare
- build_clang_mpich
if: >-
!cancelled()
&& contains(fromJSON('["success", "skipped"]'), needs.build_clang_mpich.result)
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
method:
- opt
- dbg
env:
METHOD: ${{ matrix.method }}
container:
image: "${{ needs.prepare.outputs.moose_dev_uri }}-clang-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
options: --shm-size=1gb
steps:
- uses: idaholab/moose/checkout@actions
name: Checkout
with:
pr_base_sha: ${{ needs.prepare.outputs.base_sha }}
- uses: idaholab/moose/configure-moose@actions
name: Configure with kokkos
with:
args: --with-kokkos
- uses: idaholab/moose/build@actions
name: Build test
with:
dir: test
- uses: idaholab/moose/tests@actions
name: Test moose test
with:
dir: test
- uses: idaholab/moose/build@actions
name: Build modules
with:
dir: modules
args: all builds
- uses: idaholab/moose/tests@actions
name: Test modules
with:
dir: modules
args: --use-subdir-exe
- uses: idaholab/moose/build@actions
name: Build unit
with:
dir: unit
- uses: idaholab/moose/tests@actions
name: Test unit
with:
dir: unit
#
# Clang min, with moose-dev-clang_min-mpich
#
clang_min:
name: "Clang min"
needs:
- prepare
- build_clang_min_mpich
if: >-
!cancelled()
&& contains(fromJSON('["success", "skipped"]'), needs.build_clang_min_mpich.result)
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
method:
- opt
- dbg
env:
METHOD: ${{ matrix.method }}
container:
image: "${{ needs.prepare.outputs.moose_dev_uri }}-clang_min-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
options: --shm-size=1gb
steps:
- uses: idaholab/moose/checkout@actions
name: Checkout
with:
pr_base_sha: ${{ needs.prepare.outputs.base_sha }}
- uses: idaholab/moose/configure-moose@actions
name: Configure with kokkos, mfem
with:
args: --with-kokkos --with-mfem
- uses: idaholab/moose/build@actions
name: Build test
with:
dir: test
- uses: idaholab/moose/tests@actions
name: Test moose test
with:
dir: test
- uses: idaholab/moose/build@actions
name: Build modules
with:
dir: modules
args: all builds
- uses: idaholab/moose/tests@actions
name: Test modules
with:
dir: modules
args: --use-subdir-exe
- uses: idaholab/moose/build@actions
name: Build unit
with:
dir: unit
- uses: idaholab/moose/tests@actions
name: Test unit
with:
dir: unit
#
# GCC min, with moose-dev-gcc_min-mpich
#
gcc_min:
name: "GCC min"
needs:
- prepare
- build_gcc_min_mpich
if: >-
!cancelled()
&& contains(fromJSON('["success", "skipped"]'), needs.build_gcc_min_mpich.result)
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
method:
- opt
- dbg
env:
METHOD: ${{ matrix.method }}
container:
image: "${{ needs.prepare.outputs.moose_dev_uri }}-gcc_min-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
options: --shm-size=1gb
steps:
- uses: idaholab/moose/checkout@actions
name: Checkout
with:
pr_base_sha: ${{ needs.prepare.outputs.base_sha }}
- uses: idaholab/moose/configure-moose@actions
name: Configure with kokkos, mfem
with:
args: --with-kokkos --with-mfem
- uses: idaholab/moose/build@actions
name: Build test
with:
dir: test
- uses: idaholab/moose/tests@actions
name: Test moose test
with:
dir: test
- uses: idaholab/moose/build@actions
name: Build modules
with:
dir: modules
args: all builds
- uses: idaholab/moose/tests@actions
name: Test modules
with:
dir: modules
args: --use-subdir-exe
- uses: idaholab/moose/build@actions
name: Build unit
with:
dir: unit
- uses: idaholab/moose/tests@actions
name: Test unit
with:
dir: unit
#
# Intel, with moose-dev-intel-mpich
#
intel:
name: "Intel"
needs:
- prepare
- build_intel_mpich
if: >-
!cancelled()
&& contains(fromJSON('["success", "skipped"]'), needs.build_intel_mpich.result)
runs-on: ubuntu-24.04
steps:
- uses: idaholab/moose/checkout@actions
name: Checkout
with:
pr_base_sha: ${{ needs.prepare.outputs.base_sha }}
- uses: idaholab/moose/configure-moose@actions
name: Configure with kokkos, mfem
with:
args: --with-kokkos --with-mfem
- uses: idaholab/moose/build@actions
name: Build test
with:
dir: test
- uses: idaholab/moose/build@actions
name: Build unit
with:
dir: unit
- uses: idaholab/moose/tests@actions
name: Test unit
with:
dir: unit
#
# Heavy, with moose-dev-rocky8-mpich
#
heavy:
name: "Heavy"
needs:
- prepare
- build_rocky8_mpich
if: >-
!cancelled()
&& contains(fromJSON('["success", "skipped"]'), needs.build_rocky8_mpich.result)
runs-on: ubuntu-24.04
container:
image: "${{ needs.prepare.outputs.moose_dev_uri }}-rocky8-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
options: --shm-size=1gb
steps:
- uses: idaholab/moose/checkout@actions
name: Checkout
with:
pr_base_sha: ${{ needs.prepare.outputs.base_sha }}
- uses: idaholab/moose/configure-moose@actions
name: Configure with kokkos, libtorch, neml2, mfem
with:
args: --with-kokkos=cpu --with-libtorch --with-neml2 --with-mfem
- uses: idaholab/moose/build@actions
name: Build test
with:
dir: test
- uses: idaholab/moose/tests@actions
name: Test test --heavy
with:
dir: test
args: --heavy
- uses: idaholab/moose/build@actions
name: Build modules
with:
dir: modules
- uses: idaholab/moose/tests@actions
name: Test modules --heavy
with:
dir: modules
args: --heavy
#
# No optional, with moose-dev-rocky8-mpich
#
no_optional:
name: "No optional"
needs:
- prepare
- build_rocky8_mpich
if: >-
!cancelled()
&& contains(fromJSON('["success", "skipped"]'), needs.build_rocky8_mpich.result)
runs-on: ubuntu-24.04
container:
image: "${{ needs.prepare.outputs.moose_dev_uri }}-rocky8-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
options: --shm-size=1gb
steps:
- uses: idaholab/moose/checkout@actions
name: Checkout
with:
pr_base_sha: ${{ needs.prepare.outputs.base_sha }}
- uses: idaholab/moose/build@actions
name: Build test
with:
dir: test
- uses: idaholab/moose/tests@actions
name: Test test
with:
dir: test
- uses: idaholab/moose/build@actions
name: Build unit
with:
dir: unit
- uses: idaholab/moose/tests@actions
name: Test unit
with:
dir: unit
- uses: idaholab/moose/build@actions
name: Build modules
with:
dir: modules
args: all builds
- uses: idaholab/moose/tests@actions
name: Test modules
with:
dir: modules
args: --use-subdir-exe
#
# No unity, with moose-dev-rocky8-mpich
#
no_unity:
name: "No unity"
needs:
- prepare
- build_rocky8_mpich
if: >-
!cancelled()
&& contains(fromJSON('["success", "skipped"]'), needs.build_rocky8_mpich.result)
runs-on: ubuntu-24.04
container:
image: "${{ needs.prepare.outputs.moose_dev_uri }}-rocky8-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
options: --shm-size=1gb
env:
MOOSE_UNITY: false
steps:
- uses: idaholab/moose/checkout@actions
name: Checkout
with:
pr_base_sha: ${{ needs.prepare.outputs.base_sha }}
- uses: idaholab/moose/build@actions
name: Build test
with:
dir: test
- uses: idaholab/moose/build@actions
name: Build modules
with:
dir: modules
#
# Python, with moose-dev-rocky8-mpich
#
python:
name: "Python"
needs:
- prepare
- build_rocky8_mpich
if: >-
!cancelled()
&& contains(fromJSON('["success", "skipped"]'), needs.build_rocky8_mpich.result)
runs-on: ubuntu-24.04
container:
image: "${{ needs.prepare.outputs.moose_dev_uri }}-rocky8-mpich:${{ needs.prepare.outputs.moose_dev_tag }}"
options: --shm-size=1gb
steps:
- uses: idaholab/moose/checkout@actions
name: Checkout
with:
pr_base_sha: ${{ needs.prepare.outputs.base_sha }}
- uses: idaholab/moose/build@actions
name: Build test
with:
dir: test
- uses: idaholab/moose/tests@actions
name: Test python
with:
dir: python
- uses: idaholab/moose/tests@actions
name: Test scripts
with:
dir: scripts