Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 51 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ on:
branches: [develop]
pull_request:
branches: [develop]

workflow_dispatch:
env:
REGISTRY: ghcr.io
IMAGE_NAME: twsearle/orca-jedi/ci-almalinux9:v1.7.0
jobs:
build:
runs-on: ubuntu-latest
Expand All @@ -15,40 +18,79 @@ jobs:
with:
lfs: true

- name: checkout orca-jedi
uses: actions/checkout@v3
with:
path: ci/orca-jedi
repository: MetOffice/orca-jedi
token: ${{ secrets.GHCR_PAT }}
lfs: true

- name: checkout jedicmake
uses: actions/checkout@v3
with:
path: ci/jedicmake
repository: JCSDA-internal/jedi-cmake
submodules: true
token: ${{ secrets.GH_PAT }}
token: ${{ secrets.GHCR_PAT }}

- name: checkout oops
uses: actions/checkout@v3
with:
path: ci/oops
repository: JCSDA-internal/oops
token: ${{ secrets.GH_PAT }}
token: ${{ secrets.GHCR_PAT }}

- name: checkout vader
uses: actions/checkout@v3
with:
path: ci/vader
repository: JCSDA-internal/vader
token: ${{ secrets.GHCR_PAT }}

- name: checkout saber
uses: actions/checkout@v3
with:
path: ci/saber
repository: JCSDA-internal/saber
token: ${{ secrets.GHCR_PAT }}

- name: checkout ioda
uses: actions/checkout@v3
with:
path: ci/ioda
repository: JCSDA-internal/ioda
token: ${{ secrets.GH_PAT }}
token: ${{ secrets.GHCR_PAT }}

- name: checkout ufo
uses: actions/checkout@v3
with:
path: ci/ufo
repository: JCSDA-internal/ufo
token: ${{ secrets.GH_PAT }}
token: ${{ secrets.GHCR_PAT }}

- name: checkout atlas-data
uses: actions/checkout@v3
with:
path: ci/atlas-data
repository: MetOffice/atlas-data
lfs: true
token: ${{ secrets.GHCR_PAT }}

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: twsearle
password: ${{ secrets.GHCR_PAT }}

- name: Pull Docker image
run: docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

- name: build and test
run: |
docker run --rm \
--entrypoint=/usr/local/src/nemo-feedback/ci/build.sh \
--workdir=/usr/local/src/nemo-feedback/ci \
--volume $PWD:/usr/local/src/nemo-feedback \
'jcsda/docker-gnu-openmpi-dev:latest'
--entrypoint=/usr/local/src/orca-jedi/ci/build-and-test.sh \
--workdir=/usr/local/src/orca-jedi/ci \
--volume $PWD:/usr/local/src/orca-jedi \
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
10 changes: 9 additions & 1 deletion ci/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,26 @@

cmake_minimum_required( VERSION 3.18 FATAL_ERROR )

project( nemo-feedback-ci VERSION 0.1 LANGUAGES C CXX Fortran )
project( nemo-feedback-ci VERSION 1.0 LANGUAGES C CXX Fortran )

set( ENABLE_MPI ON CACHE BOOL "Compile with MPI" )
set( ENABLE_OMP ON CACHE BOOL "Compile with OpenMP" )

LIST( APPEND ATLAS_TEST_ENVIRONMENT
ATLAS_ORCA_CACHING=1
ATLAS_CACHE_PATH=${CMAKE_BINARY_DIR}/share
PLUGINS_MANIFEST_PATH=${CMAKE_BINARY_DIR}/share/plugins )

add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/jedicmake" EXCLUDE_FROM_ALL)
if(NOT DEFINED jedicmake_DIR)
set(jedicmake_DIR "${CMAKE_BINARY_DIR}/jedicmake")
endif()

add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/oops" EXCLUDE_FROM_ALL)
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/vader" EXCLUDE_FROM_ALL)
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/saber" EXCLUDE_FROM_ALL)
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/ioda" EXCLUDE_FROM_ALL)
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/ufo" EXCLUDE_FROM_ALL)
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/orca-jedi" EXCLUDE_FROM_ALL)
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/nemo-feedback")
enable_testing()
47 changes: 0 additions & 47 deletions ci/Dockerfile

This file was deleted.

66 changes: 66 additions & 0 deletions ci/build-and-test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#!/bin/bash
set -euo pipefail

finally() {
trap '' ERR
trap '' EXIT
if [[ -d "${WORKD:-}" ]]; then
cd /
rm -fr "${WORKD}"
fi
}

HERE="$(cd "$(dirname "$0")" && pwd)"
THIS="$(basename "$0")"
NPROC=${NPROC:-2}
WORKD="$(mktemp -d "${THIS}-XXXXXX" -t)"

trap finally ERR
trap finally EXIT

cd "${WORKD}"

if [[ -f /opt/spack-environment/activate.sh ]]; then
source /opt/spack-environment/activate.sh
fi

# -- Enable OpenMPI over subscription -----------------------------------------
if command -v ompi_info &>/dev/null; then
echo "Check support for MPI_THREAD_MULTIPLE"
ompi_info | grep -i 'thread support'
ompi_vn=$(ompi_info | awk '/Ident string:/ {print $3}')
case $ompi_vn in
4.*) export OMPI_MCA_rmaps_base_oversubscribe=1 ;;
5.*) export PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe ;;
esac
fi

atlas_orca_v=$(atlas --info |
sed -n 's/ *atlas-orca version (\([0-9]*\.[0-9]*\.[0-9]*\)).*/\1/p')

echo "
-------------------------------
gcc version $(gcc -dumpversion ||:)
$(ecbuild --version ||:)
atlas version $(atlas --version ||:)
atlas-orca version ${atlas_orca_v:-:}
eckit version $(eckit-version ||:)
ectrans version $(ectrans --version ||:)
fckit version $(fckit --version ||:)
fiat version $(fiat --version ||:)
odc version $(odc --version ||:)
-------------------------------
"

rm -f "${HERE}/nemo-feedback"
ln -s '..' "${HERE}/nemo-feedback"
ecbuild -S "${HERE}"
make -j "${NPROC}"

env OMPI_ALLOW_RUN_AS_ROOT=1 OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 \
OOPS_TRACE=1 OOPS_DEBUG=1 \
LD_LIBRARY_PATH="${HERE}/lib:${LD_LIBRARY_PATH}" \
ATLAS_DATA_PATH="${HERE}/atlas-data" \
ctest -j "${NPROC}" -V --output-on-failure --test-dir "./nemo-feedback"

exit
33 changes: 0 additions & 33 deletions ci/build.sh

This file was deleted.