Skip to content

Commit

Permalink
update GH CI workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
RussTreadon-NOAA committed Jan 3, 2025
1 parent e6ce414 commit bca9f90
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 90 deletions.
72 changes: 25 additions & 47 deletions .github/workflows/gcc.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: GCC Linux Build
on: [push, pull_request]
on: [push, pull_request, workflow_dispatch]

# Use custom shell with -l so .bash_profile is sourced
# without having to do it in manually every step
Expand All @@ -9,102 +9,80 @@ defaults:

env:
cache_key: gcc
CC: gcc-10
FC: gfortran-10
CXX: g++-10

# A note on flushing Action cache and relevance to "cache_key" above.
# There is no way to flush the Action cache, and hence a number (#) is appended
# to the "cache_key" (gcc).
# If the dependencies change, increment this number and a new cache will be
# generated by the dependency build step "setup"
# There is a Github issue to force clear the cache.
# See discussion on:
# https://stackoverflow.com/questions/63521430/clear-cache-in-github-actions
CC: gcc-13
FC: gfortran-13
CXX: g++-13

# The jobs are split into:
# 1. a dependency build step (setup), and
# 2. a GSI-utils build step (gsi-utils)
# 2. a GSI build step (gsi)
# The setup is run once and the environment is cached,
# so each subsequent build of GSI-utils can reuse the cached dependencies to save time (and compute).
# so each subsequent build of GSI can reuse the cached dependencies to save time (and compute).

jobs:
setup:
runs-on: ubuntu-latest

steps:
# Free up disk space
- name: free-disk-spack
run: |
df -h
sudo swapoff -a
sudo rm -rf /swapfile
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
sudo apt clean
docker rmi $(docker image ls -aq)
df -h
- name: checkout # This is for getting spack.yaml
# Checkout the GSI to get the ci/spack.yaml file
- name: checkout
if: steps.cache-env.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
path: gsi-utils
path: gsi

# Cache spack, compiler and dependencies
- name: cache-env
id: cache-env
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
spack
~/.spack
key: spack-${{ runner.os }}-${{ env.cache_key }}-${{ hashFiles('gsi-utils/ci/spack.yaml') }}
key: spack-${{ runner.os }}-${{ env.cache_key }}-${{ hashFiles('gsi/ci/spack.yaml') }}

# Install dependencies using Spack
- name: install-dependencies-with-spack
if: steps.cache-env.outputs.cache-hit != 'true'
# if: steps.cache-env.outputs.cache-hit != 'true'
run: |
sudo apt-get install cmake
rm -rf spack
git clone -c feature.manyFiles=true https://github.com/JCSDA/spack.git
source spack/share/spack/setup-env.sh
spack env create gsiutils-env gsi-utils/ci/spack.yaml
spack env activate gsiutils-env
spack env create gsi-env gsi/ci/spack_gcc.yaml
spack env activate gsi-env
spack compiler find
sudo apt install cmake
spack external find
spack add mpich@3.4.2
spack concretize
spack install -v --fail-fast --dirty
spack clean --all
spack install --fail-fast --dirty
spack clean -a
gsi-utils:
gsi:
needs: setup
runs-on: ubuntu-latest

steps:
- name: checkout
uses: actions/checkout@v4
with:
path: gsi-utils
path: gsi

- name: cache-env
id: cache-env
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
spack
~/.spack
key: spack-${{ runner.os }}-${{ env.cache_key }}-${{ hashFiles('gsi-utils/ci/spack.yaml') }}
key: spack-${{ runner.os }}-${{ env.cache_key }}-${{ hashFiles('gsi/ci/spack.yaml') }}

- name: build
run: |
source spack/share/spack/setup-env.sh
spack env activate gsiutils-env
cd gsi-utils
spack env activate gsi-env
cd gsi
mkdir -p build && cd build
cmake -DCMAKE_INSTALL_PREFIX=../install -DBUILD_UTIL_ALL=ON ..
cmake -DCMAKE_INSTALL_PREFIX=../install -DGSI_MODE=Regional -DENKF_MODE=GFS -DBUILD_REG_TESTING=OFF ..
make -j2 VERBOSE=1
make install
env:
Expand Down
60 changes: 25 additions & 35 deletions .github/workflows/intel.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Intel Linux Build
on: [push, pull_request]
on: [push, pull_request, workflow_dispatch]

# Use custom shell with -l so .bash_profile is sourced which loads intel/oneapi/setvars.sh
# without having to do it in manually every step
Expand All @@ -16,20 +16,11 @@ env:
I_MPI_CC: icc
I_MPI_F90: ifort

# A note on flushing Action cache and relevance to "cache_key" above.
# There is no way to flush the Action cache, and hence a number (#) is appended
# to the "cache_key" (intel).
# If the dependencies change, increment this number and a new cache will be
# generated by the dependency build step "setup"
# There is a Github issue to force clear the cache.
# See discussion on:
# https://stackoverflow.com/questions/63521430/clear-cache-in-github-actions

# The jobs are split into:
# 1. a dependency build step (setup), and
# 2. a GSI-utils build step (gsi-utils)
# 2. a GSI build step (gsi)
# The setup is run once and the environment is cached,
# so each subsequent build of gsi-utils can reuse the cached dependencies to save time (and compute).
# so each subsequent build of GSI can reuse the cached dependencies to save time (and compute).

jobs:
setup:
Expand All @@ -41,21 +32,18 @@ jobs:
run: |
df -h
sudo swapoff -a
sudo rm -rf /swapfile
sudo rm -rf /usr_local_mv
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
sudo rm -f /swapfile
sudo apt clean
docker rmi $(docker image ls -aq)
DOCKER_IMGS=$(docker image ls -aq)
if [[ ! -z "${DOCKER_IMGS}" ]]; then docker rmi ${DOCKER_IMGS}; fi
df -h
- name: checkout # This is for getting spack.yaml
# Checkout the GSI to get the ci/spack.yaml file
- name: checkout
if: steps.cache-env.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
path: gsi-utils
path: gsi

# Cache spack, compiler and dependencies
- name: cache-env
Expand All @@ -66,9 +54,10 @@ jobs:
spack
~/.spack
/opt/intel
key: spack-${{ runner.os }}-${{ env.cache_key }}-${{ hashFiles('gsi-utils/ci/spack.yaml') }}
key: spack-${{ runner.os }}-${{ env.cache_key }}-${{ hashFiles('gsi/ci/spack.yaml') }}-1

- name: install-intel-compilers
if: steps.cache-env.outputs.cache-hit != 'true'
run: |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
Expand All @@ -84,19 +73,18 @@ jobs:
run: |
sudo mv /usr/local/ /usr_local_mv
sudo apt-get install cmake
rm -rf spack
git clone -c feature.manyFiles=true https://github.com/JCSDA/spack.git
source spack/share/spack/setup-env.sh
spack env create gsiutils-env gsi-utils/ci/spack.yaml
spack env activate gsiutils-env
spack env create gsi-env gsi/ci/spack_intel.yaml
spack env activate gsi-env
spack compiler find
sudo apt install cmake
spack external find
spack add intel-oneapi-mpi
spack concretize
spack install --dirty --fail-fast -v
spack clean --all
spack install --fail-fast --dirty
spack clean -a
gsi-utils:
gsi:
needs: setup
runs-on: ubuntu-latest

Expand All @@ -105,10 +93,10 @@ jobs:
run: |
echo "source /opt/intel/oneapi/setvars.sh" >> ~/.bash_profile
- name: checkout-gsiutils
- name: checkout
uses: actions/checkout@v4
with:
path: gsi-utils
path: gsi

- name: cache-env
id: cache-env
Expand All @@ -118,15 +106,17 @@ jobs:
spack
~/.spack
/opt/intel
key: spack-${{ runner.os }}-${{ env.cache_key }}-${{ hashFiles('gsi-utils/ci/spack.yaml') }}
key: spack-${{ runner.os }}-${{ env.cache_key }}-${{ hashFiles('gsi/ci/spack.yaml') }}

- name: build
run: |
sudo mv /usr/local/ /usr_local_mv
sudo apt-get install cmake libblas-dev liblapack-dev
source spack/share/spack/setup-env.sh
spack env activate gsiutils-env
cd gsi-utils
spack env activate gsi-env
cd gsi
mkdir -p build && cd build
cmake -DCMAKE_INSTALL_PREFIX=../install -DBUILD_UTIL_ALL=ON ..
cmake -DCMAKE_INSTALL_PREFIX=../install -DGSI_MODE=Regional -DENKF_MODE=GFS -DBUILD_REG_TESTING=OFF ..
make -j2 VERBOSE=1
make install
env:
Expand Down
17 changes: 9 additions & 8 deletions ci/spack.yaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Spack environment file to build GSI utilities dependencies
# Note:
# GSI and EnKF are not being built by spack
# GSI and EnKF will be added later; likely as their own builds or some other way
# Spack environment file to build GSI dependencies
spack:
packages:
all:
compiler: [intel, gcc@10:10]
providers:
mpi: [intel-oneapi-mpi]
compiler:
- intel
specs:
- netcdf-c@4.9.2
- netcdf-c@4.9.2 ~blosc build_system=cmake
- netcdf-fortran@4.6.1
- bufr@11.7.0
- bacio@2.4.1
Expand All @@ -18,9 +18,10 @@ spack:
- sfcio@1.4.1
- nemsio@2.5.4
- wrf-io@1.2.0
- crtm@2.4.0.1
- ncio@1.1.2
- crtm@2.4.0.1
- gsi-ncdiag@1.1.2
- intel-oneapi-mpi@2021.10.0
view: true
concretizer:
unify: when_possible
unify: true

0 comments on commit bca9f90

Please sign in to comment.