Skip to content

Always run eamxx workflows on PRs #17

Always run eamxx workflows on PRs

Always run eamxx workflows on PRs #17

name: eamxx-sa
on:
# Runs on PRs against master
pull_request:
branches: [ master ]
types: [opened, synchronize, ready_for_review, reopened]
# Manual run is used to bless
workflow_dispatch:
inputs:
job_to_run:
description: 'Job to run'
required: true
type: choice
options:
- gcc-openmp
- gcc-cuda
- all
bless:
description: 'Generate baselines'
required: true
type: boolean
# 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
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
submit: ${{ github.event_name == 'schedule' && 'true' || 'false' }} # Submit to cdash only for nightlies
jobs:
should_run_sa:
runs-on: ubuntu-latest # This job runs can run anywhere
outputs:
value: ${{ steps.check.outputs.value }}
steps:
- name: Check paths
id: check
run: |
# For non-pull_request events, no need to check files
if [[ "${{ github.event_name }}" != "pull_request" ]]; then
echo "value=true" >> $GITHUB_OUTPUT
exit 0 # Early exit
fi
paths=(
"components/eamxx"
"components/eam/src/physics/rrtmgp"
"components/eam/src/physics/p3/scream"
"components/eam/src/physics/cam"
"components/eam/src/physics/rrtmgp/external"
"externals/ekat"
"externals/scorpio"
"externals/haero"
"externals/YAKL"
".github/workflows/eamxx-sa-testing.yml"
)
pattern=$(IFS=\|; echo "${paths[*]}")
# Use the GitHub API to get the list of changed files
response=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.number }}/files")
# Extract the filenames from the response
changed_files=$(echo "$response" | jq -r '.[].filename')
if echo "$changed_files" | grep -qE "^($pattern)"; then
echo "value=true" >> $GITHUB_OUTPUT
else
echo "value=false" >> $GITHUB_OUTPUT
fi
gcc-openmp:
runs-on: [self-hosted, ghci-snl-cpu, gcc]
needs: should_run_sa
if: ${{ needs.should_run_sa.outputs.value == 'true' &&
(github.event_name != 'workflow_dispatch' ||
github.event.inputs.job_to_run == 'gcc-openmp' ||
github.event.inputs.job_to_run == 'all') }}
strategy:
fail-fast: false
matrix:
build_type: [sp, dbg, fpe, opt]
name: gcc-openmp / ${{ matrix.build_type }}
steps:
- name: Check out the repository
uses: actions/checkout@v4
with:
persist-credentials: false
show-progress: false
submodules: recursive
- name: Show action trigger
uses: ./.github/actions/show-workflow-trigger
- name: Check for skip labels
if: ${{ github.event_name == 'pull_request' || github.event_name == 'pull_request_review' }}
uses: ./.github/actions/check-skip-labels
with:
skip_labels: 'AT: skip gcc,AT: skip openmp,AT: skip eamxx-sa,AT: skip eamxx-all'
token: ${{ secrets.GITHUB_TOKEN }}
pr_number: ${{ github.event.pull_request.number }}
- name: Set test-all inputs based on event specs
run: |
echo "generate=false" >> $GITHUB_ENV
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
if [ "${{ inputs.bless }}" == "true" ]; then
echo "generate=true" >> $GITHUB_ENV
fi
fi
- name: Run tests
uses: ./.github/actions/test-all-scream
with:
build_type: ${{ matrix.build_type }}
machine: ghci-snl-cpu
generate: ${{ env.generate }}
submit: ${{ env.submit }}
cmake-configs: Kokkos_ENABLE_OPENMP=ON
gcc-cuda:
needs: should_run_sa
if: ${{ needs.should_run_sa.outputs.value == 'true' &&
(github.event_name != 'workflow_dispatch' ||
github.event.inputs.job_to_run == 'gcc-cuda' ||
github.event.inputs.job_to_run == 'all') }}
runs-on: [self-hosted, ghci-snl-cuda, cuda, gcc]
strategy:
fail-fast: false
matrix:
build_type: [sp, dbg, opt]
name: gcc-cuda / ${{ matrix.build_type }}
steps:
- name: Check out the repository
uses: actions/checkout@v4
with:
persist-credentials: false
show-progress: false
submodules: recursive
- name: Show action trigger
uses: ./.github/actions/show-workflow-trigger
- name: Check for skip labels
if: ${{ github.event_name == 'pull_request' || github.event_name == 'pull_request_review' }}
uses: ./.github/actions/check-skip-labels
with:
skip_labels: 'AT: skip gcc,AT: skip cuda,AT: skip eamxx-sa,AT: skip eamxx-all'
token: ${{ secrets.GITHUB_TOKEN }}
pr_number: ${{ github.event.pull_request.number }}
- name: Set test-all inputs based on event specs
run: |
echo "generate=false" >> $GITHUB_ENV
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
if [ "${{ inputs.bless }}" == "true" ]; then
echo "generate=true" >> $GITHUB_ENV
fi
fi
- name: Run tests
uses: ./.github/actions/test-all-scream
with:
build_type: ${{ matrix.build_type }}
machine: ghci-snl-cuda
generate: ${{ env.generate }}
submit: ${{ env.submit }}
cmake-configs: Kokkos_ARCH_VOLTA70=ON;CMAKE_CUDA_ARCHITECTURES=70