Add GCC subset CI workflow - #6
Conversation
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
There was a problem hiding this comment.
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.ymlto build MPAS-A with GCC foropenmpiandmpich3. - 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.
| 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 | ||
|
|
There was a problem hiding this comment.
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.
| 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 | ||
|
|
There was a problem hiding this comment.
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.
…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
Made-with: Cursor
Summary
test-gcc.yml-- a lightweight subset workflow for GCC-only testingMotivation
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