From 42ba930733ee85274b38f9fbb02855917677ea7c Mon Sep 17 00:00:00 2001 From: Terry McGuinness Date: Thu, 10 Aug 2023 12:10:59 -0500 Subject: [PATCH 1/5] added BASH wrapper to create experiment and removed redundent second argument --- .github/workflows/globalworkflow-ci.yaml | 2 +- ci/scripts/create_experiment.py | 2 - ci/scripts/create_experiment.sh | 71 ++++++++++++++++++++++++ ci/scripts/driver.sh | 2 +- 4 files changed, 73 insertions(+), 4 deletions(-) create mode 100755 ci/scripts/create_experiment.sh diff --git a/.github/workflows/globalworkflow-ci.yaml b/.github/workflows/globalworkflow-ci.yaml index 1474c79a48..e93d6259d0 100644 --- a/.github/workflows/globalworkflow-ci.yaml +++ b/.github/workflows/globalworkflow-ci.yaml @@ -60,7 +60,7 @@ jobs: cd ${{ env.TEST_DIR }}/HOMEgfs source workflow/gw_setup.sh source ci/platforms/orion.sh - ./ci/scripts/create_experiment.py --yaml ci/cases/${{ matrix.case }}.yaml --dir ${{ env.HOMEgfs_PR }} + ./ci/scripts/create_experiment.py --yaml ci/cases/${{ matrix.case }}.yaml run-experiments: needs: create-experiments diff --git a/ci/scripts/create_experiment.py b/ci/scripts/create_experiment.py index 3c5096e875..cb96b5f1c0 100755 --- a/ci/scripts/create_experiment.py +++ b/ci/scripts/create_experiment.py @@ -62,7 +62,6 @@ def input_args(): formatter_class=ArgumentDefaultsHelpFormatter) parser.add_argument('--yaml', help='full path to yaml file describing the experiment configuration', type=str, required=True) - parser.add_argument('--dir', help='full path to global-workflow build', type=str, required=True) return parser.parse_args() @@ -70,7 +69,6 @@ def input_args(): if __name__ == '__main__': user_inputs = input_args() - HOMEgfs = Path.absolute(Path(user_inputs.dir)) testconf = YAMLFile(path=user_inputs.yaml) experiment_dir = Path.absolute(Path.joinpath(Path(testconf.arguments.expdir), Path(testconf.arguments.pslot))) diff --git a/ci/scripts/create_experiment.sh b/ci/scripts/create_experiment.sh new file mode 100755 index 0000000000..7aa68b3712 --- /dev/null +++ b/ci/scripts/create_experiment.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +set -eux + +######################################################################### +# +# Script description: BASH script for creating an experiment +# by only taking a single YAML file +######################################################################## + +usage() { + set +x + echo + echo "Usage: $0 -y case/yaml_conf_file.yaml" + echo + echo " -c global workflow configuration yaml defining an experiment (\$HOMEgfs/ci/cases)" + echo " -d full path to directory to place COMROT with EXPDIR for createing experiments" + echo " -h display this message and quit" + echo + exit 1 +} + +while getopts "c:d:h" opt; do + case ${opt} in + c) + YAML_CASE=${OPTARG} + ;; + d) + RUNTESTS=${OPTARG} + ;; + h|\?|:) + usage + ;; + *) + echo "Unrecognized option" + usage + ;; + esac +done + +HOMEgfs="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." >/dev/null 2>&1 && pwd )" +scriptname=$(basename "${BASH_SOURCE[0]}") +echo "Begin ${scriptname} at $(date -u)" || true +export PS4='+ $(basename ${BASH_SOURCE})[${LINENO}]' + +######################################################################### +# Set up runtime environment varibles for accounts on supproted machines +######################################################################### + +source "${HOMEgfs}/ush/detect_machine.sh" +case ${MACHINE_ID} in + hera | orion) + echo "Running Automated Testing on ${MACHINE_ID}" + source "${HOMEgfs}/ci/platforms/${MACHINE_ID}.sh" + ;; + *) + echo "Unsupported platform. Exiting with error." + exit 1 + ;; +esac + +source "${HOMEgfs}/ci/platforms/${MACHINE_ID}.sh" + +filename=$(basename -- ${YAML_CASE}) +export pslot="${filename%.*}" +export RUNTESTS=${RUNTESTS:-"${PWD}"} +# TODO env HOMEgfs being set will cause runtime error +# with HOMEgfs being blank in Rocoto XLM file +export HOMEgfs_PR="${HOMEgfs}" +unset HOMEgfs; + +${HOMEgfs_PR}/ci/scripts/create_experiment.py --yaml $YAML_CASE diff --git a/ci/scripts/driver.sh b/ci/scripts/driver.sh index baaddf94e5..cdc87129c1 100755 --- a/ci/scripts/driver.sh +++ b/ci/scripts/driver.sh @@ -155,7 +155,7 @@ for pr in ${pr_list}; do pslot="${case}_${pr_sha}" export pslot set +e - "${HOMEgfs_PR}/ci/scripts/create_experiment.py" --yaml "${HOMEgfs_PR}/ci/cases/${case}.yaml" --dir "${HOMEgfs_PR}" + "${HOMEgfs_PR}/ci/scripts/create_experiment.py" --yaml "${HOMEgfs_PR}/ci/cases/${case}.yaml" ci_status=$? set -e if [[ ${ci_status} -eq 0 ]]; then From a42e9e19abaf284b4a497c7e3ae792bad9e182df Mon Sep 17 00:00:00 2001 From: TerrenceMcGuinness-NOAA Date: Thu, 10 Aug 2023 17:18:55 +0000 Subject: [PATCH 2/5] Update create_experiment.sh removed second source to platform --- ci/scripts/create_experiment.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/ci/scripts/create_experiment.sh b/ci/scripts/create_experiment.sh index 7aa68b3712..d8938aaca1 100755 --- a/ci/scripts/create_experiment.sh +++ b/ci/scripts/create_experiment.sh @@ -58,8 +58,6 @@ case ${MACHINE_ID} in ;; esac -source "${HOMEgfs}/ci/platforms/${MACHINE_ID}.sh" - filename=$(basename -- ${YAML_CASE}) export pslot="${filename%.*}" export RUNTESTS=${RUNTESTS:-"${PWD}"} From bc9589fe994c4de853fbc419a369cb1f4510abac Mon Sep 17 00:00:00 2001 From: TerrenceMcGuinness-NOAA Date: Thu, 10 Aug 2023 17:19:50 +0000 Subject: [PATCH 3/5] Update create_experiment.sh removed old message about running tests --- ci/scripts/create_experiment.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/ci/scripts/create_experiment.sh b/ci/scripts/create_experiment.sh index d8938aaca1..d15063b631 100755 --- a/ci/scripts/create_experiment.sh +++ b/ci/scripts/create_experiment.sh @@ -49,7 +49,6 @@ export PS4='+ $(basename ${BASH_SOURCE})[${LINENO}]' source "${HOMEgfs}/ush/detect_machine.sh" case ${MACHINE_ID} in hera | orion) - echo "Running Automated Testing on ${MACHINE_ID}" source "${HOMEgfs}/ci/platforms/${MACHINE_ID}.sh" ;; *) From 68b543874a77bc2a4983683ab2e530bc88d3c8b7 Mon Sep 17 00:00:00 2001 From: TerrenceMcGuinness-NOAA Date: Thu, 10 Aug 2023 17:23:17 +0000 Subject: [PATCH 4/5] Update create_experiment.sh bash linting --- ci/scripts/create_experiment.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/scripts/create_experiment.sh b/ci/scripts/create_experiment.sh index d15063b631..7c13bfd8f9 100755 --- a/ci/scripts/create_experiment.sh +++ b/ci/scripts/create_experiment.sh @@ -57,7 +57,7 @@ case ${MACHINE_ID} in ;; esac -filename=$(basename -- ${YAML_CASE}) +filename=$(basename -- "${YAML_CASE}") export pslot="${filename%.*}" export RUNTESTS=${RUNTESTS:-"${PWD}"} # TODO env HOMEgfs being set will cause runtime error @@ -65,4 +65,4 @@ export RUNTESTS=${RUNTESTS:-"${PWD}"} export HOMEgfs_PR="${HOMEgfs}" unset HOMEgfs; -${HOMEgfs_PR}/ci/scripts/create_experiment.py --yaml $YAML_CASE +${HOMEgfs_PR}/ci/scripts/create_experiment.py --yaml "${YAML_CASE}" From 114512a82caca2bb7f8e82db78c5b548aaca8ca0 Mon Sep 17 00:00:00 2001 From: TerrenceMcGuinness-NOAA Date: Thu, 10 Aug 2023 17:25:55 +0000 Subject: [PATCH 5/5] Update create_experiment.sh BASH double quote linting --- ci/scripts/create_experiment.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/create_experiment.sh b/ci/scripts/create_experiment.sh index 7c13bfd8f9..d56565b5b7 100755 --- a/ci/scripts/create_experiment.sh +++ b/ci/scripts/create_experiment.sh @@ -65,4 +65,4 @@ export RUNTESTS=${RUNTESTS:-"${PWD}"} export HOMEgfs_PR="${HOMEgfs}" unset HOMEgfs; -${HOMEgfs_PR}/ci/scripts/create_experiment.py --yaml "${YAML_CASE}" +"${HOMEgfs_PR}/ci/scripts/create_experiment.py" --yaml "${YAML_CASE}"