Skip to content

Add GCC subset CI workflow - #6

Merged
cenamiller merged 3 commits into
masterfrom
feature-ci-subset-gcc
Mar 25, 2026
Merged

Add GCC subset CI workflow#6
cenamiller merged 3 commits into
masterfrom
feature-ci-subset-gcc

Conversation

@cenamiller

Copy link
Copy Markdown
Collaborator

Summary

  • Adds test-gcc.yml -- a lightweight subset workflow for GCC-only testing
  • Builds gcc with openmpi and mpich3 (SMIOL, 1 MPI rank)
  • Validates logs against reference output
  • Triggers on push to master/develop and workflow_dispatch
  • ~5 jobs total vs 100+ in the full matrix workflow

Motivation

The full matrix workflow (test-ga-nogpu.yml) is rarely 100% green due to infrastructure
failures in unrelated compiler/MPI combos. This subset provides quick, targeted GCC feedback.

Test plan

  • Trigger manually via Actions tab after merge
  • Verify build/run/validate complete for both openmpi and mpich3

Lightweight workflow that builds and runs GCC with openmpi and mpich3
(SMIOL, 1 proc). Validates against reference logs. Supplements the
full matrix in test-ga-nogpu.yml for quick GCC-specific feedback.

Made-with: Cursor
Copilot AI review requested due to automatic review settings March 25, 2026 04:23

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a lightweight GitHub Actions workflow to provide quick GCC-only CI signal (OpenMPI + MPICH3, SMIOL, 1 MPI rank), intended as a faster alternative to the full matrix workflow.

Changes:

  • Introduces .github/workflows/test-gcc.yml to build MPAS-A with GCC for openmpi and mpich3.
  • Runs a 1-rank test case for each MPI implementation and uploads logs.
  • Validates produced logs against the 240km reference log and cleans up build artifacts.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +45 to +66
needs: build
if: ${{ !cancelled() && needs.build.result != 'cancelled' }}
strategy:
fail-fast: false
matrix:
mpi: [openmpi, mpich3]

name: Run 1proc (gcc, ${{ matrix.mpi }}, smiol)
runs-on: ubuntu-latest
container:
image: docker.io/ncarcisl/cisldev-x86_64-almalinux9-gcc-${{ matrix.mpi }}:devel

steps:
- uses: actions/checkout@v4

- name: Download executable
id: download
uses: actions/download-artifact@v4
continue-on-error: true
with:
name: exe-gcc-${{ matrix.mpi }}-smiol

Copilot AI Mar 25, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The run job is allowed to execute even when the build job fails (needs.build.result will be failure, which still satisfies this condition), and the artifact download is continue-on-error. Together this can silently skip the actual run (no executable) while the job still succeeds. Consider gating the job on needs.build.result == 'success' and/or removing continue-on-error so missing executables fail the workflow run.

Copilot uses AI. Check for mistakes.
Comment on lines +84 to +114
validate:
needs: run
if: always()
runs-on: ubuntu-latest
name: Validate Results

steps:
- uses: actions/checkout@v4
with:
sparse-checkout: .github

- uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Download all logs
uses: actions/download-artifact@v4
with:
pattern: logs-*
path: logs

- name: Validate 1-proc logs against reference
uses: ./.github/actions/validate-logs
with:
logs-path: logs
log-filter: 1proc
reference-log: .github/test-cases/240km/reference_log.atmosphere.0000.out
expected-configs: >-
logs-1proc-gcc-openmpi-nogpu-smiol,
logs-1proc-gcc-mpich3-nogpu-smiol

Copilot AI Mar 25, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

validate-logs is invoked in a mode that always passes when logs are missing (--allow-missing is hard-coded in the composite action). In this subset workflow that can produce false-green validations if one/both runs never produced logs. Add an explicit pre-check that the expected log artifact directories/files exist (and fail if not), or extend the action to make allow-missing configurable and disable it here.

Copilot uses AI. Check for mistakes.
…figurable

- Remove continue-on-error from artifact download in run job so a
  failed build correctly fails the corresponding run job.
- Add allow-missing input to validate-logs action (defaults to true
  for backward compatibility) and set it to false in test-gcc.yml
  so missing logs are treated as failures.

Made-with: Cursor
@cenamiller
cenamiller merged commit f7fc206 into master Mar 25, 2026
6 checks passed
@cenamiller
cenamiller deleted the feature-ci-subset-gcc branch March 26, 2026 21:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants