diff --git a/.github/workflows/swell-tier1_application_discover.yml b/.github/workflows/swell-tier1_application_discover.yml index dd3cdf9..a293c79 100644 --- a/.github/workflows/swell-tier1_application_discover.yml +++ b/.github/workflows/swell-tier1_application_discover.yml @@ -24,14 +24,7 @@ jobs: uses: actions/checkout@v3 - name: install-swell - run: | - # Make experiment directory - mkdir /discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID} - # Copy and source modules - cp ${GITHUB_WORKSPACE}/src/swell/deployment/platforms/nccs_discover/modules /discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/ - source /discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/modules - pip install --prefix=/discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/swell -r ${GITHUB_WORKSPACE}/requirements.txt --no-cache-dir ${GITHUB_WORKSPACE} - # Remove source code (needed to ensure nothing relies on the source) + run: bash scripts/install-swell.sh # Run ufo_testing workflow # ------------------------ @@ -44,30 +37,7 @@ jobs: steps: - name: run-swell-ufo_testing - run: | - CI_WORKSPACE=/discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID} - SUITE_NAME=ufo_testing - CI_WORKSPACE_JOB=/discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/${SUITE_NAME} - EXPERIMENT_ID=swell-${SUITE_NAME}-${GITHUB_RUN_ID} - - mkdir -p $CI_WORKSPACE_JOB - - source /discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/modules - - # Get python version - PYVER=`python --version | awk '{print $2}' | awk -F. '{print $1"."$2}'` - - export PATH=$CI_WORKSPACE/swell/bin:$PATH - export PYTHONPATH=${PYTHONPATH}:$CI_WORKSPACE/swell/lib/python$PYVER/site-packages - - echo "experiment_id: $EXPERIMENT_ID" > $CI_WORKSPACE_JOB/${SUITE_NAME}-override.yaml - echo "experiment_root: $CI_WORKSPACE_JOB" >> $CI_WORKSPACE_JOB/${SUITE_NAME}-override.yaml - - rm -r -f $HOME/cylc-run/${EXPERIMENT_ID}-suite - - cd $CI_WORKSPACE_JOB - swell create ${SUITE_NAME} -m defaults -p nccs_discover -o $CI_WORKSPACE_JOB/${SUITE_NAME}-override.yaml - swell launch $CI_WORKSPACE_JOB/${EXPERIMENT_ID}/${EXPERIMENT_ID}-suite --no-detach --log_path $CI_WORKSPACE_JOB/${EXPERIMENT_ID} + run: bash scripts/run-swell-suite.sh ufo_testing # Move experiment directory on failure swell-tier_1-ufo_testing-failure: @@ -96,30 +66,7 @@ jobs: steps: - name: run-swell-hofx - run: | - CI_WORKSPACE=/discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID} - SUITE_NAME=hofx - CI_WORKSPACE_JOB=/discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/${SUITE_NAME} - EXPERIMENT_ID=swell-${SUITE_NAME}-${GITHUB_RUN_ID} - - mkdir -p $CI_WORKSPACE_JOB - - source /discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/modules - - # Get python version - PYVER=`python --version | awk '{print $2}' | awk -F. '{print $1"."$2}'` - - export PATH=$CI_WORKSPACE/swell/bin:$PATH - export PYTHONPATH=${PYTHONPATH}:$CI_WORKSPACE/swell/lib/python$PYVER/site-packages - - echo "experiment_id: $EXPERIMENT_ID" > $CI_WORKSPACE_JOB/${SUITE_NAME}-override.yaml - echo "experiment_root: $CI_WORKSPACE_JOB" >> $CI_WORKSPACE_JOB/${SUITE_NAME}-override.yaml - - rm -r -f $HOME/cylc-run/${EXPERIMENT_ID}-suite - - cd $CI_WORKSPACE_JOB - swell create ${SUITE_NAME} -m defaults -p nccs_discover -o $CI_WORKSPACE_JOB/${SUITE_NAME}-override.yaml - swell launch $CI_WORKSPACE_JOB/${EXPERIMENT_ID}/${EXPERIMENT_ID}-suite --no-detach --log_path $CI_WORKSPACE_JOB/${EXPERIMENT_ID} + run: scripts/run-swell-suite.sh hofx # Move experiment directory on failure swell-tier_1-hofx-failure: @@ -147,30 +94,7 @@ jobs: steps: - name: run-swell-3dvar - run: | - CI_WORKSPACE=/discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID} - SUITE_NAME=3dvar - CI_WORKSPACE_JOB=/discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/${SUITE_NAME} - EXPERIMENT_ID=swell-${SUITE_NAME}-${GITHUB_RUN_ID} - - mkdir -p $CI_WORKSPACE_JOB - - source /discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/modules - - # Get python version - PYVER=`python --version | awk '{print $2}' | awk -F. '{print $1"."$2}'` - - export PATH=$CI_WORKSPACE/swell/bin:$PATH - export PYTHONPATH=${PYTHONPATH}:$CI_WORKSPACE/swell/lib/python$PYVER/site-packages - - echo "experiment_id: $EXPERIMENT_ID" > $CI_WORKSPACE_JOB/${SUITE_NAME}-override.yaml - echo "experiment_root: $CI_WORKSPACE_JOB" >> $CI_WORKSPACE_JOB/${SUITE_NAME}-override.yaml - - rm -r -f $HOME/cylc-run/${EXPERIMENT_ID}-suite - - cd $CI_WORKSPACE_JOB - swell create ${SUITE_NAME} -m defaults -p nccs_discover -o $CI_WORKSPACE_JOB/${SUITE_NAME}-override.yaml - swell launch $CI_WORKSPACE_JOB/${EXPERIMENT_ID}/${EXPERIMENT_ID}-suite --no-detach --log_path $CI_WORKSPACE_JOB/${EXPERIMENT_ID} + run: bash scripts/run-swell-suite.sh 3dvar # Move experiment directory on failure swell-tier_1-3dvar-failure: diff --git a/scripts/install-swell.sh b/scripts/install-swell.sh new file mode 100644 index 0000000..776a0f8 --- /dev/null +++ b/scripts/install-swell.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +set -euxo pipefail + +source scripts/utils.sh +github_variables + +# Make experiment directory +mkdir /discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID} + +# Copy and source modules +cp ${GITHUB_WORKSPACE}/src/swell/deployment/platforms/nccs_discover/modules /discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/ +source /discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/modules +pip install --prefix=/discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/swell -r ${GITHUB_WORKSPACE}/requirements.txt --no-cache-dir ${GITHUB_WORKSPACE} + +# Remove source code (needed to ensure nothing relies on the source) diff --git a/scripts/run-swell-suite.sh b/scripts/run-swell-suite.sh new file mode 100644 index 0000000..5d05da3 --- /dev/null +++ b/scripts/run-swell-suite.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +set -euxo pipefail + +SUITE_NAME="$1" + +if [[ -z "$SUITE_NAME" ]]; then + echo "Variable SUITE_NAME is unset." + exit 1 +fi + +source scripts/utils.sh +github_variables + +CI_WORKSPACE=/discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID} +CI_WORKSPACE_JOB=/discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/${SUITE_NAME} +EXPERIMENT_ID=swell-${SUITE_NAME}-${GITHUB_RUN_ID} + +echo "----------------------------------------" +echo "CI_WORKSPACE=${CI_WORKSPACE}" +echo "CI_WORKSPACE_JOB=${CI_WORKSPACE}" +echo "EXPERIMENT_ID=${CI_WORKSPACE}" +echo "----------------------------------------" + +mkdir -p $CI_WORKSPACE_JOB + +source /discover/nobackup/gmao_ci/swell/tier1/${GITHUB_RUN_ID}/modules + +# Get python version +PYVER=`python --version | awk '{print $2}' | awk -F. '{print $1"."$2}'` + +export PATH=$CI_WORKSPACE/swell/bin:$PATH +export PYTHONPATH=${PYTHONPATH}:$CI_WORKSPACE/swell/lib/python$PYVER/site-packages + +echo "PYTHONPATH=${PYTHONPATH}" + +echo "experiment_id: $EXPERIMENT_ID" > $CI_WORKSPACE_JOB/${SUITE_NAME}-override.yaml +echo "experiment_root: $CI_WORKSPACE_JOB" >> $CI_WORKSPACE_JOB/${SUITE_NAME}-override.yaml + +rm -r -f $HOME/cylc-run/${EXPERIMENT_ID}-suite + +cd $CI_WORKSPACE_JOB +swell create ${SUITE_NAME} -m defaults -p nccs_discover -o $CI_WORKSPACE_JOB/${SUITE_NAME}-override.yaml +swell launch $CI_WORKSPACE_JOB/${EXPERIMENT_ID}/${EXPERIMENT_ID}-suite --no-detach --log_path $CI_WORKSPACE_JOB/${EXPERIMENT_ID} diff --git a/scripts/utils.sh b/scripts/utils.sh new file mode 100644 index 0000000..89df6e0 --- /dev/null +++ b/scripts/utils.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +github_run_id() { + # Set default value to `LOCAL_$(uuidgen) if unset` + : "${GITHUB_RUN_ID:=LOCAL_$RANDOM}" + export GITHUB_RUN_ID +} + +github_workspace() { + # Set default value to current working directory + : "${GITHUB_WORKSPACE:=$PWD}" + export GITHUB_WORKSPACE +} + +github_variables() { + github_run_id + github_workspace +}