-
Notifications
You must be signed in to change notification settings - Fork 4
130 lines (110 loc) · 4.25 KB
/
ngen_integration.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Test ngen-smp integration
name: Ngen Integration Tests
# Controls when the action will run.
on:
push:
branches: [ main, dev, notreal ]
pull_request:
branches: [ main, dev, notreal ]
workflow_dispatch:
env:
# Obtained from https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
# TODO: add something later that can check the runners for hyperthreading
LINUX_NUM_PROC_CORES: 2
MACOS_NUM_PROC_CORES: 3
ASAN_OPTIONS: detect_leaks=false
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# Run general unit tests in linux environment
test_smp:
# The type of runner that the job will run on
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
fail-fast: false
runs-on: ${{ matrix.os }}
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checkout and build the SoilMoistureProfiles
- name: Checkout the commit
uses: actions/checkout@v4
- name: Build the SMP Library
run: |
cmake -B cmake_build -S . -DNGEN=ON
make -C cmake_build
- name: Save SoilMoistureProfiles to a Temp Directory
run: |
# Move files to a temporary directory
mkdir ${{runner.temp}}/smp
mv ./* ${{runner.temp}}/smp
- name: Build CFE
uses: actions/checkout@v4
with:
repository: noaa-owp/cfe
# Checkout and build CFE
- name: Checkout the commit
uses: actions/checkout@v4
with:
repository: noaa-owp/cfe
- name: Build CFE Library
run: |
cmake -B cmake_build -S . -DNGEN=ON
make -C cmake_build
- name: Save CFE to a Temp Directory
run: |
# Move files to a temporary directory
mkdir ${{runner.temp}}/cfe
mv ./* ${{runner.temp}}/cfe
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
# Checkout ngen after cfe checkout so $GITHUB_WORKSPACE doesn't get clobbered
# otherwise the submod action isn't available
- name: checkout actions in another repo
uses: actions/checkout@v4
with:
repository: noaa-owp/ngen
- name: Build Topmodel
id: submod_build_2
uses: ./.github/actions/ngen-submod-build
with:
mod-dir: "extern/topmodel/"
targets: "topmodelbmi"
- name: Build PET
id: submod_build_3
uses: ./.github/actions/ngen-submod-build
with:
mod-dir: "extern/evapotranspiration/evapotranspiration"
targets: "petbmi"
- name: Build SLoTH
id: submod_build_4
uses: ./.github/actions/ngen-submod-build
with:
mod-dir: "extern/sloth/"
targets: "slothmodel"
# Build Ngen and save some files
- name: Build Ngen
id: ngen_id1
uses: ./.github/actions/ngen-build
with:
targets: "ngen"
build-cores: ${{ env.LINUX_NUM_PROC_CORES }}
#is this required for this test?
bmi_c: 'ON'
timeout-minutes: 15
- name: Move SMP Files Including cmake_build to Appropriate Directory
run: |
rm -rf extern/SoilMoistureProfiles/SoilMoistureProfiles/*
mv ${{runner.temp}}/smp/* extern/SoilMoistureProfiles/SoilMoistureProfiles
- name: Move CFE Files Including cmake_build to Appropriate Directory
run: |
rm -rf extern/cfe/cfe/*
mv ${{runner.temp}}/cfe/* extern/cfe/cfe
- name: Run Ngen Test for SMP
run: |
mv ${{ steps.ngen_id1.outputs.build-dir }} ./ngen-build/
inputfile='extern/SoilMoistureProfiles/SoilMoistureProfiles/realizations/realization_config_smp_cfe.json'
./ngen-build/ngen ./data/catchment_data.geojson "cat-27" ./data/nexus_data.geojson "nex-26" $inputfile
- name: Run Ngen Test with Topmodel
run: |
cp extern/topmodel/topmodel/data/*.dat data
inputfile='extern/SoilMoistureProfiles/SoilMoistureProfiles/realizations/realization_config_smp_topmodel.json'
./ngen-build/ngen ./data/catchment_data.geojson "cat-27" ./data/nexus_data.geojson "nex-26" $inputfile