Skip to content

MAM4xx Autotester

MAM4xx Autotester #428

name: "MAM4xx Autotester"
on:
# Runs on PRs against main
pull_request:
branches: [ main ]
types: [opened, synchronize, ready_for_review, reopened]
paths:
# first, yes to these
- '.github/workflows/*'
- 'src/mam4xx/*'
- 'src/tests/*'
- 'src/validation/**'
- 'ext/**'
# make sure it still builds when the top-level cml.txt changes
- 'CMakeLists.txt'
- 'cmake/*'
# second, no to these
# don't test when it's only unit test data changing
- '!src/tests/data/**'
# not sure whether this should be disabled--keep for now
# - '!src/validation/mam_x_validation/**'
# Manual run
workflow_dispatch:
inputs:
architecture:
description: 'Test Machine Architecture'
required: true
type: choice
default: 'GPU-NVIDIA_H100'
options:
- GPU-NVIDIA_H100
- CPU-Ubuntu_22-04
- ALL
precision:
description: 'Floating-point Precision'
required: true
type: choice
default: 'double'
options:
- double
- single
- ALL
build_type:
description: 'Build Type'
required: true
type: choice
default: 'Debug'
options:
- Debug
- Release
- ALL
# Add schedule trigger for nightly runs at midnight MT (Standard Time)
schedule:
- cron: '0 7 * * *' # Runs at 7 AM UTC, which is midnight MT during Standard Time
concurrency:
# Two runs are in the same group if they are testing the same git ref
# - if trigger=pull_request, the ref is refs/pull/<PR_NUMBER>/merge
# - for other triggers, the ref is the branch tested
# TODO: There's probably a less ugly way to create this group name, but
# currently unsure how to add a literal '-', contingent upon existence of
# github.event.inputs.architecture
group: ${{ github.workflow }}-${{ github.ref }}${{ github.event.inputs.architecture }}
cancel-in-progress: true
jobs:
gcc-cuda:
if: ${{ github.event.pull_request || github.event.schedule }}
uses:
./.github/workflows/at2_gcc-cuda.yml
gcc-cpu_gh:
if: ${{ github.event.pull_request || github.event.schedule }}
secrets:
cc_token: ${{ secrets.CODECOV_TOKEN }}
uses:
./.github/workflows/gh_gcc-cpu.yml
clang-format_check:
if: ${{ github.event.pull_request }}
uses:
./.github/workflows/clang-format-check.yml
manual-gpu_cuda:
if: ${{ contains(github.event.inputs.architecture, 'GPU-NVIDIA_H100') ||
contains(github.event.inputs.architecture, 'ALL') }}
with:
precision: ${{ github.event.inputs.precision }}
build_type: ${{ github.event.inputs.build_type }}
uses:
"./.github/workflows/at2_gcc-cuda.yml"
manual-cpu_gh:
if: ${{ contains(github.event.inputs.architecture, 'CPU-Ubuntu_22-04') ||
contains(github.event.inputs.architecture, 'ALL') }}
with:
precision: ${{ github.event.inputs.precision }}
build_type: ${{ github.event.inputs.build_type }}
secrets:
cc_token: ${{ secrets.CODECOV_TOKEN }}
uses:
./.github/workflows/gh_gcc-cpu.yml