Skip to content

Commit d665396

Browse files
authored
Use package repository for CI (#75)
1 parent f10dc31 commit d665396

File tree

5 files changed

+126
-90
lines changed

5 files changed

+126
-90
lines changed

.github/workflows/ci.yml

Lines changed: 51 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ on:
55
branches: [develop]
66
pull_request:
77
branches: [develop]
8-
8+
workflow_dispatch:
9+
env:
10+
REGISTRY: ghcr.io
11+
IMAGE_NAME: twsearle/orca-jedi/ci-almalinux9:v1.7.0
912
jobs:
1013
build:
1114
runs-on: ubuntu-latest
@@ -15,40 +18,79 @@ jobs:
1518
with:
1619
lfs: true
1720

21+
- name: checkout orca-jedi
22+
uses: actions/checkout@v3
23+
with:
24+
path: ci/orca-jedi
25+
repository: MetOffice/orca-jedi
26+
token: ${{ secrets.GHCR_PAT }}
27+
lfs: true
28+
1829
- name: checkout jedicmake
1930
uses: actions/checkout@v3
2031
with:
2132
path: ci/jedicmake
2233
repository: JCSDA-internal/jedi-cmake
2334
submodules: true
24-
token: ${{ secrets.GH_PAT }}
35+
token: ${{ secrets.GHCR_PAT }}
2536

2637
- name: checkout oops
2738
uses: actions/checkout@v3
2839
with:
2940
path: ci/oops
3041
repository: JCSDA-internal/oops
31-
token: ${{ secrets.GH_PAT }}
42+
token: ${{ secrets.GHCR_PAT }}
43+
44+
- name: checkout vader
45+
uses: actions/checkout@v3
46+
with:
47+
path: ci/vader
48+
repository: JCSDA-internal/vader
49+
token: ${{ secrets.GHCR_PAT }}
50+
51+
- name: checkout saber
52+
uses: actions/checkout@v3
53+
with:
54+
path: ci/saber
55+
repository: JCSDA-internal/saber
56+
token: ${{ secrets.GHCR_PAT }}
3257

3358
- name: checkout ioda
3459
uses: actions/checkout@v3
3560
with:
3661
path: ci/ioda
3762
repository: JCSDA-internal/ioda
38-
token: ${{ secrets.GH_PAT }}
63+
token: ${{ secrets.GHCR_PAT }}
3964

4065
- name: checkout ufo
4166
uses: actions/checkout@v3
4267
with:
4368
path: ci/ufo
4469
repository: JCSDA-internal/ufo
45-
token: ${{ secrets.GH_PAT }}
70+
token: ${{ secrets.GHCR_PAT }}
71+
72+
- name: checkout atlas-data
73+
uses: actions/checkout@v3
74+
with:
75+
path: ci/atlas-data
76+
repository: MetOffice/atlas-data
77+
lfs: true
78+
token: ${{ secrets.GHCR_PAT }}
79+
80+
- name: Log in to GitHub Container Registry
81+
uses: docker/login-action@v3
82+
with:
83+
registry: ${{ env.REGISTRY }}
84+
username: twsearle
85+
password: ${{ secrets.GHCR_PAT }}
4686

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

4890
- name: build and test
4991
run: |
5092
docker run --rm \
51-
--entrypoint=/usr/local/src/nemo-feedback/ci/build.sh \
52-
--workdir=/usr/local/src/nemo-feedback/ci \
53-
--volume $PWD:/usr/local/src/nemo-feedback \
54-
'jcsda/docker-gnu-openmpi-dev:latest'
93+
--entrypoint=/usr/local/src/orca-jedi/ci/build-and-test.sh \
94+
--workdir=/usr/local/src/orca-jedi/ci \
95+
--volume $PWD:/usr/local/src/orca-jedi \
96+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

ci/CMakeLists.txt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,26 @@
22

33
cmake_minimum_required( VERSION 3.18 FATAL_ERROR )
44

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

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

10+
LIST( APPEND ATLAS_TEST_ENVIRONMENT
11+
ATLAS_ORCA_CACHING=1
12+
ATLAS_CACHE_PATH=${CMAKE_BINARY_DIR}/share
13+
PLUGINS_MANIFEST_PATH=${CMAKE_BINARY_DIR}/share/plugins )
14+
1015
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/jedicmake" EXCLUDE_FROM_ALL)
1116
if(NOT DEFINED jedicmake_DIR)
1217
set(jedicmake_DIR "${CMAKE_BINARY_DIR}/jedicmake")
1318
endif()
1419

1520
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/oops" EXCLUDE_FROM_ALL)
21+
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/vader" EXCLUDE_FROM_ALL)
22+
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/saber" EXCLUDE_FROM_ALL)
1623
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/ioda" EXCLUDE_FROM_ALL)
1724
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/ufo" EXCLUDE_FROM_ALL)
25+
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/orca-jedi" EXCLUDE_FROM_ALL)
1826
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/nemo-feedback")
1927
enable_testing()

ci/Dockerfile

Lines changed: 0 additions & 47 deletions
This file was deleted.

ci/build-and-test.sh

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#!/bin/bash
2+
set -euo pipefail
3+
4+
finally() {
5+
trap '' ERR
6+
trap '' EXIT
7+
if [[ -d "${WORKD:-}" ]]; then
8+
cd /
9+
rm -fr "${WORKD}"
10+
fi
11+
}
12+
13+
HERE="$(cd "$(dirname "$0")" && pwd)"
14+
THIS="$(basename "$0")"
15+
NPROC=${NPROC:-2}
16+
WORKD="$(mktemp -d "${THIS}-XXXXXX" -t)"
17+
18+
trap finally ERR
19+
trap finally EXIT
20+
21+
cd "${WORKD}"
22+
23+
if [[ -f /opt/spack-environment/activate.sh ]]; then
24+
source /opt/spack-environment/activate.sh
25+
fi
26+
27+
# -- Enable OpenMPI over subscription -----------------------------------------
28+
if command -v ompi_info &>/dev/null; then
29+
echo "Check support for MPI_THREAD_MULTIPLE"
30+
ompi_info | grep -i 'thread support'
31+
ompi_vn=$(ompi_info | awk '/Ident string:/ {print $3}')
32+
case $ompi_vn in
33+
4.*) export OMPI_MCA_rmaps_base_oversubscribe=1 ;;
34+
5.*) export PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe ;;
35+
esac
36+
fi
37+
38+
atlas_orca_v=$(atlas --info |
39+
sed -n 's/ *atlas-orca version (\([0-9]*\.[0-9]*\.[0-9]*\)).*/\1/p')
40+
41+
echo "
42+
-------------------------------
43+
gcc version $(gcc -dumpversion ||:)
44+
$(ecbuild --version ||:)
45+
atlas version $(atlas --version ||:)
46+
atlas-orca version ${atlas_orca_v:-:}
47+
eckit version $(eckit-version ||:)
48+
ectrans version $(ectrans --version ||:)
49+
fckit version $(fckit --version ||:)
50+
fiat version $(fiat --version ||:)
51+
odc version $(odc --version ||:)
52+
-------------------------------
53+
"
54+
55+
rm -f "${HERE}/nemo-feedback"
56+
ln -s '..' "${HERE}/nemo-feedback"
57+
ecbuild -S "${HERE}"
58+
make -j "${NPROC}"
59+
60+
env OMPI_ALLOW_RUN_AS_ROOT=1 OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 \
61+
OOPS_TRACE=1 OOPS_DEBUG=1 \
62+
LD_LIBRARY_PATH="${HERE}/lib:${LD_LIBRARY_PATH}" \
63+
ATLAS_DATA_PATH="${HERE}/atlas-data" \
64+
ctest -j "${NPROC}" -V --output-on-failure --test-dir "./nemo-feedback"
65+
66+
exit

ci/build.sh

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)