Skip to content

Commit

Permalink
Upadte and tested CI Bash for WCOSS2 (#2481)
Browse files Browse the repository at this point in the history
Updates to the driver scripts to the CI framework to work on WCOSS with
Cron Bash.

Resolves #2268
  • Loading branch information
TerrenceMcGuinness-NOAA authored Apr 16, 2024
1 parent 28b840c commit b7e5b6e
Show file tree
Hide file tree
Showing 12 changed files with 53 additions and 18 deletions.
2 changes: 2 additions & 0 deletions ci/cases/pr/C48_S2SWA_gefs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,5 @@ arguments:
edate: 2021032312
yaml: {{ HOMEgfs }}/ci/cases/yamls/gefs_ci_defaults.yaml

skip_ci_on_hosts:
- wcoss2
1 change: 1 addition & 0 deletions ci/cases/pr/C48mx500_3DVarAOWCDA.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ arguments:
yaml: {{ HOMEgfs }}/ci/cases/yamls/soca_gfs_defaults_ci.yaml

skip_ci_on_hosts:
- wcoss2
- orion
- hera
- hercules
2 changes: 2 additions & 0 deletions ci/cases/pr/C96C48_ufs_hybatmDA.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,5 @@ skip_ci_on_hosts:
- hera
- orion
- hercules
- wcoss2

1 change: 1 addition & 0 deletions ci/cases/pr/C96_atmaerosnowDA.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,4 @@ arguments:
skip_ci_on_hosts:
- orion
- hercules
- wcoss2
8 changes: 8 additions & 0 deletions ci/platforms/config.wcoss2
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/usr/bin/bash

export GFS_CI_ROOT=/lfs/h2/emc/global/noscrub/globalworkflow.ci/GFS_CI_ROOT
export ICSDIR_ROOT=/lfs/h2/emc/global/noscrub/emc.global/data/ICSDIR
export STMP="/lfs/h2/emc/stmp/${USER}"
export SLURM_ACCOUNT=GFS-DEV
export max_concurrent_cases=5
export max_concurrent_pr=4
21 changes: 14 additions & 7 deletions ci/scripts/check_ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,15 @@ scriptname=$(basename "${BASH_SOURCE[0]}")
echo "Begin ${scriptname} at $(date -u)" || true
export PS4='+ $(basename ${BASH_SOURCE})[${LINENO}]'

GH=${HOME}/bin/gh
REPO_URL="https://github.com/NOAA-EMC/global-workflow.git"
REPO_URL=${REPO_URL:-"[email protected]:NOAA-EMC/global-workflow.git"}

#########################################################################
# Set up runtime environment varibles for accounts on supproted machines
#########################################################################

source "${HOMEgfs}/ush/detect_machine.sh"
case ${MACHINE_ID} in
hera | orion | hercules)
hera | orion | hercules | wcoss2)
echo "Running Automated Testing on ${MACHINE_ID}"
source "${HOMEgfs}/ci/platforms/config.${MACHINE_ID}"
;;
Expand All @@ -38,7 +37,18 @@ source "${HOMEgfs}/ci/scripts/utils/ci_utils.sh"
module use "${HOMEgfs}/modulefiles"
module load "module_gwsetup.${MACHINE_ID}"
module list
# Load machine specific modules for ci (only wcoss2 is current)
if [[ "${MACHINE_ID}" == "wcoss2" ]]; then
module load "module_gwci.${MACHINE_ID}"
fi
set -x
if ! command -v gh > /dev/null; then
GH="${HOME}/bin/gh"
else
GH=$(command -v gh)
fi
export GH

rocotostat=$(command -v rocotostat)
if [[ -z ${rocotostat+x} ]]; then
echo "rocotostat not found on system"
Expand Down Expand Up @@ -141,10 +151,7 @@ for pr in ${pr_list}; do
sed -i "1 i\`\`\`" "${output_ci}"
"${GH}" pr comment "${pr}" --repo "${REPO_URL}" --body-file "${output_ci}"
"${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" --dbfile "${pr_list_dbfile}"
for kill_cases in "${pr_dir}/RUNTESTS/"*; do
pslot=$(basename "${kill_cases}")
cancel_slurm_jobs "${pslot}"
done
cancel_all_batch_jobs "${pr_dir}/RUNTESTS/"
break
fi
if [[ "${num_done}" -eq "${num_cycles}" ]]; then
Expand Down
2 changes: 1 addition & 1 deletion ci/scripts/clone-build_ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ set +e
source "${HOMEgfs}/ush/module-setup.sh"
export BUILD_JOBS=8
rm -rf log.build
./build_all.sh -gu >> log.build 2>&1
./build_all.sh -g >> log.build 2>&1
build_status=$?

DATE=$(date +'%D %r')
Expand Down
20 changes: 13 additions & 7 deletions ci/scripts/driver.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,7 @@ set -eux
# It then is ready to run a suite of regression tests with various configurations
#######################################################################################

#################################################################
# TODO using static build for GitHub CLI until fixed in HPC-Stack
#################################################################
export GH=${HOME}/bin/gh
export REPO_URL=${REPO_URL:-"https://github.com/NOAA-EMC/global-workflow.git"}
export REPO_URL=${REPO_URL:-"[email protected]:NOAA-EMC/global-workflow.git"}

################################################################
# Setup the reletive paths to scripts and PS4 for better logging
Expand All @@ -34,7 +30,7 @@ export PS4='+ $(basename ${BASH_SOURCE})[${LINENO}]'

source "${ROOT_DIR}/ush/detect_machine.sh"
case ${MACHINE_ID} in
hera | orion | hercules)
hera | orion | hercules | wcoss2)
echo "Running Automated Testing on ${MACHINE_ID}"
source "${ROOT_DIR}/ci/platforms/config.${MACHINE_ID}"
;;
Expand All @@ -54,8 +50,18 @@ source "${ROOT_DIR}/ci/scripts/utils/ci_utils.sh"
source "${ROOT_DIR}/ush/module-setup.sh"
module use "${ROOT_DIR}/modulefiles"
module load "module_gwsetup.${MACHINE_ID}"
# Load machine specific modules for ci (only wcoss2 is current)
if [[ "${MACHINE_ID}" == "wcoss2" ]]; then
module load "module_gwci.${MACHINE_ID}"
fi
set -x
unset HOMEgfs
if ! command -v gh > /dev/null; then
GH="${HOME}/bin/gh"
else
GH=$(command -v gh)
fi
export GH

############################################################
# query repo and get list of open PRs with tags {machine}-CI
Expand Down Expand Up @@ -113,7 +119,7 @@ for pr in ${pr_list}; do
else
for case in ${experiments}; do
case_name=$(basename "${case}")
cancel_slurm_jobs "${case_name}"
cancel_batch_jobs "${case_name}"
{
echo "Canceled all jobs for experiment ${case_name} in PR:${pr} on ${MACHINE_ID^}"
} >> "${output_ci_single}"
Expand Down
2 changes: 1 addition & 1 deletion ci/scripts/driver_weekly.sh
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export PS4='+ $(basename ${BASH_SOURCE[0]})[${LINENO}]'

source "${ROOT_DIR}/ush/detect_machine.sh"
case ${MACHINE_ID} in
hera | orion | hercules)
hera | orion | hercules | wcoss2)
echo "Running Automated Testing on ${MACHINE_ID}"
source "${ROOT_DIR}/ci/platforms/config.${MACHINE_ID}"
;;
Expand Down
2 changes: 1 addition & 1 deletion ci/scripts/run_ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export PS4='+ $(basename ${BASH_SOURCE})[${LINENO}]'

source "${HOMEgfs}/ush/detect_machine.sh"
case ${MACHINE_ID} in
hera | orion | hercules)
hera | orion | hercules | wcoss2)
echo "Running Automated Testing on ${MACHINE_ID}"
source "${HOMEgfs}/ci/platforms/config.${MACHINE_ID}"
;;
Expand Down
2 changes: 1 addition & 1 deletion ci/scripts/utils/ci_utils.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ function cancel_batch_jobs() {

scheduler=$(determine_scheduler)

if [[ "${schduler}" == "torque" ]]; then
if [[ "${scheduler}" == "torque" ]]; then
job_ids=$(qstat -u "${USER}" | awk '{print $1}') || true

for job_id in ${job_ids}; do
Expand Down
8 changes: 8 additions & 0 deletions modulefiles/module_gwci.wcoss2.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
help([[
Load environment to run GFS workflow ci scripts on WCOSS2
]])

prepend_path("MODULEPATH", "/apps/ops/para/nco/modulefiles/core")
load(pathJoin("gh","2.28.0"))

whatis("Description: GFS run setup ci environment")

0 comments on commit b7e5b6e

Please sign in to comment.