diff --git a/.github/workflows/spack-ci.yml b/.github/workflows/spack-ci.yml deleted file mode 100644 index 59c5bdd62..000000000 --- a/.github/workflows/spack-ci.yml +++ /dev/null @@ -1,124 +0,0 @@ -name: Spack CI GCC Build - -on: - pull_request: - types: [opened, synchronize, reopened] - # Do not run if the only files changed cannot affect the build - paths-ignore: - - "**.md" - - "**.pro" - - "**.sh" - - "**.perl" - - ".github/CODEOWNERS" - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} - -jobs: - build_gcm: - name: Spack CI GCC Build - runs-on: ubuntu-24.04 - steps: - - - name: Checkout GCM - uses: actions/checkout@v4 - with: - fetch-depth: 1 - filter: blob:none - repository: GEOS-ESM/GEOSgcm - ref: feature/sdrabenh/gcm_v12 - - - name: Set all directories as git safe - run: | - git config --global --add safe.directory '*' - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: '3.13' - - - name: Pip install mepo - run: | - python -m pip install --upgrade pip - pip install mepo - mepo --version - - - name: Mepo clone external repos - run: | - ls - mepo clone --partial blobless - mepo status - - - name: Mepo develop usual suspects - run: | - ls - mepo develop GEOSgcm_GridComp GEOSgcm_App GMAO_Shared GEOS_Util - mepo status - - - name: Debug PR branch - run: echo "PR is coming from ${{ github.event.pull_request.head.ref }}" - - - name: Update other branches - if: ${{ github.event.pull_request.head.ref != 'main' && github.event.pull_request.head.ref != 'develop' }} - run: | - mepo checkout-if-exists ${GITHUB_HEAD_REF} - mepo status - - - name: Set up Spack - uses: spack/setup-spack@v2 - with: - ref: develop # Spack version (examples: develop, releases/v0.21) - color: true # Force color output (SPACK_COLOR=always) - path: spack # Where to clone Spack - buildcache: false # Do not use the spack buildcache - - - name: Find compilers - shell: spack-bash {0} - run: | - spack compiler find - - - name: Set default compiler and target - shell: spack-bash {0} - run: | - spack config add 'packages:all:require:target=x86_64_v3' - - - name: Create Spack environment - shell: spack-bash {0} - run: | - spack env create spack-env - spack env activate spack-env - - - name: Login - shell: spack-bash {0} - run: | - spack -e spack-env mirror add geos-buildcache oci://ghcr.io/GEOS-ESM/geos-buildcache - spack -e spack-env mirror set --oci-username-variable "${{ secrets.BUILDCACHE_USERNAME }}" --oci-password-variable "${{ secrets.BUILDCACHE_TOKEN }}" geos-buildcache - spack -e spack-env mirror list - spack -e spack-env buildcache list --allarch - - - name: Concretize - shell: spack-bash {0} - run: | - spack -e spack-env concretize - - - name: Install - shell: spack-bash {0} - run: | - spack clean -m - spack -e spack-env install --add --no-check-signature --use-buildcache only \ - esmf gftl gftl-shared fargparse pflogger pfunit yafyaml ecbuild udunits openblas fms - - - name: Build with Cmake - shell: spack-bash {0} - run: | - spack env activate spack-env - spack load \ - esmf gftl gftl-shared fargparse pflogger pfunit yafyaml ecbuild udunits openblas - spack find --loaded - FC=gfortran-14 CC=gcc-14 CXX=g++-14 - cmake -B build -S . -DCMAKE_INSTALL_PREFIX=$PWD/install -DCMAKE_BUILD_TYPE=Debug -DUSE_F2PY=OFF -DCMAKE_Fortran_COMPILER=${FC} -DCMAKE_C_COMPILER=${CC} -DCMAKE_CXX_COMPILER=${CXX} - cmake --build build -j 4 - cmake --install build - diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 395ce7ed7..aaaa1e0c3 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -17,70 +17,22 @@ concurrency: jobs: build_gcm: - name: Build GEOSgcm - if: "!contains(github.event.pull_request.labels.*.name, '0 diff trivial')" - runs-on: ubuntu-24.04 - container: - image: gmao/ubuntu24-geos-env:v8.19.0-intelmpi_2021.13-ifort_2021.13 - # Per https://github.com/actions/virtual-environments/issues/1445#issuecomment-713861495 - # It seems like we might not need secrets on GitHub Actions which is good for forked - # pull requests - #credentials: - #username: ${{ secrets.DOCKERHUB_USERNAME }} - #password: ${{ secrets.DOCKERHUB_TOKEN }} - - env: - OMPI_ALLOW_RUN_AS_ROOT: 1 - OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1 - OMPI_MCA_btl_vader_single_copy_mechanism: none - - steps: - # https://github.com/orgs/community/discussions/25678#discussioncomment-5242449 - - name: Delete huge unnecessary tools folder - run: rm -rf /opt/hostedtoolcache - - - name: Checkout GCM - uses: actions/checkout@v4 - with: - fetch-depth: 1 - filter: blob:none - repository: GEOS-ESM/GEOSgcm - ref: feature/sdrabenh/gcm_v12 - - - name: Set all directories as git safe - run: | - git config --global --add safe.directory '*' - - - name: Versions etc. - run: | - ifort --version - mpirun --version - echo $BASEDIR - - - name: Mepo clone external repos - run: | - mepo clone --partial blobless - mepo status - - - name: Mepo develop usual suspects - run: | - mepo develop GEOSgcm_GridComp GEOSgcm_App GMAO_Shared GEOS_Util - mepo status - - - name: Debug PR branch - run: echo "PR is coming from ${{ github.event.pull_request.head.ref }}" - - - name: Update other branches - if: ${{ github.event.pull_request.head.ref != 'main' && github.event.pull_request.head.ref != 'develop' }} - run: | - mepo checkout-if-exists ${GITHUB_HEAD_REF} - mepo status - - - name: CMake - run: | - cmake -B build -S . --install-prefix=${pwd}/install -DCMAKE_Fortran_COMPILER=ifort -DCMAKE_BUILD_TYPE=Debug -DMPIEXEC_PREFLAGS='--oversubscribe' -DUSE_F2PY=OFF - - - name: Build - run: | - cmake --build build -j 4 - cmake --install build + strategy: + matrix: + compiler: [ifort, gfortran-14, gfortran-15] + build-type: [Debug] + uses: GEOS-ESM/CI-workflows/.github/workflows/geosgcm_build_tests.yml@project/geosgcm + with: + compiler: ${{ matrix.compiler }} + cmake-build-type: ${{ matrix.build-type }} + fixture-repo: GEOS-ESM/GEOSgcm + fixture-ref: feature/sdrabenh/gcm_v12 + + spack_build: + uses: GEOS-ESM/CI-workflows/.github/workflows/spack_gcc_build.yml@project/geosgcm + secrets: + BUILDCACHE_USERNAME: ${{ secrets.BUILDCACHE_USERNAME }} + BUILDCACHE_TOKEN: ${{ secrets.BUILDCACHE_TOKEN }} + with: + fixture-repo: GEOS-ESM/GEOSgcm + fixture-ref: feature/sdrabenh/gcm_v12