From a6ec246933ebabdf94e31466f8630190a9b7d945 Mon Sep 17 00:00:00 2001 From: "Terry.McGuinness" <Terry.McGuinness@noaa.gov> Date: Thu, 25 May 2023 17:09:49 +0000 Subject: [PATCH 1/8] added code to the driver script to reset CI when label is switched back to Ready once in progress --- ci/scripts/driver.sh | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/ci/scripts/driver.sh b/ci/scripts/driver.sh index ec05263d1..1438e6129 100755 --- a/ci/scripts/driver.sh +++ b/ci/scripts/driver.sh @@ -65,7 +65,21 @@ fi pr_list=$(${GH} pr list --repo "${REPO_URL}" --label "CI-${MACHINE_ID^}-Ready" --state "open" | awk '{print $1}') || true for pr in ${pr_list}; do - "${HOMEgfs}/ci/scripts/pr_list_database.py" --add_pr "${pr}" "${pr_list_dbfile}" + db_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --add_pr "${pr}" "${pr_list_dbfile}") +############################################################# +# Check if a Ready labeled PR has changed back from once set +# and in that case remove all previous jobs in slubm and +# and remove PR from filesystem to start clean +############################################################# + if [[ "already is in list" == *"${db_list}" ]]; then + "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Ready "${pr_list_dbfile}" + pr_dir="${GFS_CI_ROOT}/PR/${pr}" + for cases in "${pr_dir}/RUNTESTS/"*; do + pslot=$(basename "${cases}") + sacct --format=jobid,jobname%35,WorkDir%100,stat | grep "${pslot}" | grep "PR\/${pr}\/RUNTESTS" | awk '{print $1}' | xargs scancel || true + done + rm -Rf "${pr_dir}" + fi done pr_list="" -- GitLab From 2b6fcf701c9a45f07b8b64366a9cda37f43b8a0e Mon Sep 17 00:00:00 2001 From: "Terry.McGuinness" <Terry.McGuinness@noaa.gov> Date: Thu, 25 May 2023 17:33:02 +0000 Subject: [PATCH 2/8] missed second star for wildcard for substring test in bash for when driver get Ready when had already been --- ci/scripts/driver.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/driver.sh b/ci/scripts/driver.sh index 1438e6129..3b8c5c3fc 100755 --- a/ci/scripts/driver.sh +++ b/ci/scripts/driver.sh @@ -71,7 +71,7 @@ for pr in ${pr_list}; do # and in that case remove all previous jobs in slubm and # and remove PR from filesystem to start clean ############################################################# - if [[ "already is in list" == *"${db_list}" ]]; then + if [[ "already is in list" == *"${db_list}"* ]]; then "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Ready "${pr_list_dbfile}" pr_dir="${GFS_CI_ROOT}/PR/${pr}" for cases in "${pr_dir}/RUNTESTS/"*; do -- GitLab From aef132fb5a89eeaaba2d241118915c257e0e640e Mon Sep 17 00:00:00 2001 From: "Terry.McGuinness" <Terry.McGuinness@noaa.gov> Date: Thu, 25 May 2023 17:39:16 +0000 Subject: [PATCH 3/8] had substring logic in reverse for driver script --- ci/scripts/driver.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/driver.sh b/ci/scripts/driver.sh index 3b8c5c3fc..0a5b210fa 100755 --- a/ci/scripts/driver.sh +++ b/ci/scripts/driver.sh @@ -71,7 +71,7 @@ for pr in ${pr_list}; do # and in that case remove all previous jobs in slubm and # and remove PR from filesystem to start clean ############################################################# - if [[ "already is in list" == *"${db_list}"* ]]; then + if [[ "${db_list}" == *"already is in list"* ]]; then "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Ready "${pr_list_dbfile}" pr_dir="${GFS_CI_ROOT}/PR/${pr}" for cases in "${pr_dir}/RUNTESTS/"*; do -- GitLab From 832a84eb2b307a361c941add09380b276c4a05ea Mon Sep 17 00:00:00 2001 From: "Terry.McGuinness" <Terry.McGuinness@noaa.gov> Date: Thu, 25 May 2023 20:56:16 +0000 Subject: [PATCH 4/8] added a Ready update count as an id so that multiple driver instances will not create false negatives on build when starting over in PR dir --- ci/scripts/check_ci.sh | 6 +++--- ci/scripts/driver.sh | 38 ++++++++++++++++++++++++--------- ci/scripts/pr_list_database.py | 39 ++++++++++++++++++++-------------- 3 files changed, 54 insertions(+), 29 deletions(-) diff --git a/ci/scripts/check_ci.sh b/ci/scripts/check_ci.sh index 58e869765..6ea975d91 100755 --- a/ci/scripts/check_ci.sh +++ b/ci/scripts/check_ci.sh @@ -57,7 +57,7 @@ pr_list_dbfile="${GFS_CI_ROOT}/open_pr_list.db" pr_list="" if [[ -f "${pr_list_dbfile}" ]]; then - pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display "${pr_list_dbfile}" | grep -v Failed | grep Running | awk '{print $1}') || true + pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfild "${pr_list_dbfile}" | grep -v Failed | grep Running | awk '{print $1}') || true fi if [[ -z "${pr_list+x}" ]]; then echo "no PRs open and ready to run cases on .. exiting" @@ -86,7 +86,7 @@ for pr in ${pr_list}; do "${GH}" pr edit --repo "${REPO_URL}" "${pr}" --remove-label "CI-${MACHINE_ID^}-Running" --add-label "CI-${MACHINE_ID^}-Passed" sed -i "s/\`\`\`//2g" "${GFS_CI_ROOT}/PR/${pr}/output_${id}" "${GH}" pr comment "${pr}" --repo "${REPO_URL}" --body-file "${GFS_CI_ROOT}/PR/${pr}/output_${id}" - "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" "${pr_list_dbfile}" + "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" --sbfile "${pr_list_dbfile}" # Completely remove the PR and its cloned repo on sucess of all cases rm -Rf "${pr_dir}" continue @@ -122,7 +122,7 @@ for pr in ${pr_list}; do } >> "${GFS_CI_ROOT}/PR/${pr}/output_${id}" sed -i "s/\`\`\`//2g" "${GFS_CI_ROOT}/PR/${pr}/output_${id}" "${GH}" pr comment "${pr}" --repo "${REPO_URL}" --body-file "${GFS_CI_ROOT}/PR/${pr}/output_${id}" - "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" "${pr_list_dbfile}" + "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" --sbfile "${pr_list_dbfile}" for kill_cases in "${pr_dir}/RUNTESTS/"*; do pslot=$(basename "${kill_cases}") sacct --format=jobid,jobname%35,WorkDir%100,stat | grep "${pslot}" | grep "PR\/${pr}\/RUNTESTS" | awk '{print $1}' | xargs scancel || true diff --git a/ci/scripts/driver.sh b/ci/scripts/driver.sh index 0a5b210fa..fb2d16eb5 100755 --- a/ci/scripts/driver.sh +++ b/ci/scripts/driver.sh @@ -59,22 +59,28 @@ set -x ############################################################ pr_list_dbfile="${GFS_CI_ROOT}/open_pr_list.db" if [[ ! -f "${pr_list_dbfile}" ]]; then - "${HOMEgfs}/ci/scripts/pr_list_database.py" --create "${pr_list_dbfile}" + "${HOMEgfs}/ci/scripts/pr_list_database.py" --create --sbfile "${pr_list_dbfile}" fi pr_list=$(${GH} pr list --repo "${REPO_URL}" --label "CI-${MACHINE_ID^}-Ready" --state "open" | awk '{print $1}') || true for pr in ${pr_list}; do - db_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --add_pr "${pr}" "${pr_list_dbfile}") + db_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --add_pr "${pr}" --sbfile "${pr_list_dbfile}") + pr_id=0 ############################################################# # Check if a Ready labeled PR has changed back from once set # and in that case remove all previous jobs in slubm and # and remove PR from filesystem to start clean ############################################################# if [[ "${db_list}" == *"already is in list"* ]]; then - "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Ready "${pr_list_dbfile}" + pr_id=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfile "${pr_list_dbfile}" | awk '{print $4}') || true + pr_id=$((pr_id+1)) + "${HOMEgfs}/ci/scripts/pr_list_database.py" --sbfile "${pr_list_dbfile}" --update_pr "${pr}" Open Ready "${pr_id}" pr_dir="${GFS_CI_ROOT}/PR/${pr}" for cases in "${pr_dir}/RUNTESTS/"*; do + if [[ -z "${cases+x}" ]]; then + break + fi pslot=$(basename "${cases}") sacct --format=jobid,jobname%35,WorkDir%100,stat | grep "${pslot}" | grep "PR\/${pr}\/RUNTESTS" | awk '{print $1}' | xargs scancel || true done @@ -84,7 +90,7 @@ done pr_list="" if [[ -f "${pr_list_dbfile}" ]]; then - pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display "${pr_list_dbfile}" | grep -v Failed | grep Open | grep Ready | awk '{print $1}') || true + pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfile "${pr_list_dbfile}" | grep -v Failed | grep Open | grep Ready | awk '{print $1}') || true fi if [[ -z "${pr_list+x}" ]]; then echo "no PRs open and ready for checkout/build .. exiting" @@ -99,23 +105,35 @@ fi for pr in ${pr_list}; do # Skip pr's that are currently Building for when driver is called in cron - pr_building=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display "${pr_list_dbfile}" | awk -v pr="${pr}" '{ if ($1 == pr) print $0 }' | grep Building) || true + pr_building=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfile "${pr_list_dbfile}" | awk -v pr="${pr}" '{ if ($1 == pr) print $0 }' | grep Building) || true if [[ -z "${pr_building+x}" ]]; then continue fi "${GH}" pr edit --repo "${REPO_URL}" "${pr}" --remove-label "CI-${MACHINE_ID^}-Ready" --add-label "CI-${MACHINE_ID^}-Building" - "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Building "${pr_list_dbfile}" + "${HOMEgfs}/ci/scripts/pr_list_database.py" --sbfile "${pr_list_dbfile}" --update_pr "${pr}" Open Building echo "Processing Pull Request #${pr}" pr_dir="${GFS_CI_ROOT}/PR/${pr}" + rm -Rf "${pr_dir}" mkdir -p "${pr_dir}" # call clone-build_ci to clone and build PR id=$("${GH}" pr view "${pr}" --repo "${REPO_URL}" --json id --jq '.id') set +e "${HOMEgfs}/ci/scripts/clone-build_ci.sh" -p "${pr}" -d "${pr_dir}" -o "${pr_dir}/output_${id}" ci_status=$? +################################################################## +# Checking for special case when Ready label was updated +# that cause a running driver exit fail because was currently +# building so we force and exit 0 instead to does not get relabled +################################################################# + if [[ ${ci_status} -ne 0 ]]; then + pr_id_check=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfile "${pr_list_dbfile}" | awk '{print $4}') || true + if [[ "${pr_id}" -ne "${pr_id_check}" ]]; then + exit 0 + fi + fi set -e if [[ ${ci_status} -eq 0 ]]; then - "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Built "${pr_list_dbfile}" + "${HOMEgfs}/ci/scripts/pr_list_database.py" --sbfile "${pr_list_dbfile}" --update_pr "${pr}" Open Built #setup space to put an experiment # export RUNTESTS for yaml case files to pickup export RUNTESTS="${pr_dir}/RUNTESTS" @@ -140,14 +158,14 @@ for pr in ${pr_list}; do echo "Case setup: Completed at $(date) for experiment ${pslot}" || true } >> "${GFS_CI_ROOT}/PR/${pr}/output_${id}" "${GH}" pr edit --repo "${REPO_URL}" "${pr}" --remove-label "CI-${MACHINE_ID^}-Building" --add-label "CI-${MACHINE_ID^}-Running" - "${HOMEgfs}/ci/scripts/pr_list_database.py" --update_pr "${pr}" Open Running "${pr_list_dbfile}" + "${HOMEgfs}/ci/scripts/pr_list_database.py" --sbfile "${pr_list_dbfile}" --update_pr "${pr}" Open Running else { echo "Failed to create experiment: *FAIL* ${pslot}" echo "Experiment setup: failed at $(date) for experiment ${pslot}" || true } >> "${GFS_CI_ROOT}/PR/${pr}/output_${id}" "${GH}" pr edit "${pr}" --repo "${REPO_URL}" --remove-label "CI-${MACHINE_ID^}-Building" --add-label "CI-${MACHINE_ID^}-Failed" - "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" "${pr_list_dbfile}" + "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" -sbfile "${pr_list_dbfile}" fi done @@ -158,7 +176,7 @@ for pr in ${pr_list}; do echo "CI on ${MACHINE_ID^} failed to build on $(date) for repo ${REPO_URL}" || true } >> "${GFS_CI_ROOT}/PR/${pr}/output_${id}" "${GH}" pr edit "${pr}" --repo "${REPO_URL}" --remove-label "CI-${MACHINE_ID^}-Building" --add-label "CI-${MACHINE_ID^}-Failed" - "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" "${pr_list_dbfile}" + "${HOMEgfs}/ci/scripts/pr_list_database.py" --remove_pr "${pr}" --sbfile "${pr_list_dbfile}" fi sed -i "s/\`\`\`//2g" "${GFS_CI_ROOT}/PR/${pr}/output_${id}" "${GH}" pr comment "${pr}" --repo "${REPO_URL}" --body-file "${GFS_CI_ROOT}/PR/${pr}/output_${id}" diff --git a/ci/scripts/pr_list_database.py b/ci/scripts/pr_list_database.py index b2bc1bc23..c3d797165 100755 --- a/ci/scripts/pr_list_database.py +++ b/ci/scripts/pr_list_database.py @@ -2,6 +2,7 @@ import sys from pathlib import Path +import argparse from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter import sqlite3 @@ -39,7 +40,7 @@ def sql_table(obj: sqlite3.Cursor) -> None: """ - obj.execute("CREATE TABLE processing(pr integer PRIMARY KEY, state text, status text)") + obj.execute("CREATE TABLE processing(pr integer PRIMARY KEY, state text, status text, reset integer)") def sql_insert(obj: sqlite3.Cursor, entities: list) -> None: @@ -51,14 +52,14 @@ def sql_insert(obj: sqlite3.Cursor, entities: list) -> None: obj : sqlite3.Cursor Cursor object for Sqlite3 entities : list - The list three string values that go into sqlite table (pr, state, status) + The list three string values that go into sqlite table (pr, state, status, reset) """ - obj.execute('INSERT INTO processing(pr, state, status) VALUES(?, ?, ?)', entities) + obj.execute('INSERT INTO processing(pr, state, status, reset) VALUES(?, ?, ?, ?)', entities) -def sql_update(obj: sqlite3.Cursor, pr: str, state: str, status: str) -> None: +def sql_update(obj: sqlite3.Cursor, pr:str, updates:dict) -> None: """Updates table for a given pr with new values for state and status Parameters @@ -67,14 +68,18 @@ def sql_update(obj: sqlite3.Cursor, pr: str, state: str, status: str) -> None: sqlite3 Cursor Object pr : str The given pr number to update in the table - state : str - The new value for the state (Open, Closed) - status: str - The new value for the status (Ready, Running, Failed) + updates : dict + Dictionary of values to update for a given PR to include by postion + state, The new value for the state (Open, Closed) + status, The new value for the status (Ready, Running, Failed) + reset, The value for number of times reset to Ready """ - obj.execute(f'UPDATE processing SET state = "{state}", status = "{status}" WHERE pr = {pr}') + update_list = ['state','status','reset'] + for value in updates: + update = update_list.pop(0) + obj.execute(f'UPDATE processing SET "{update}" = "{value}" WHERE pr = {pr}') def sql_fetch(obj: sqlite3.Cursor) -> list: @@ -114,11 +119,11 @@ def input_args(): parser = ArgumentParser(description=description, formatter_class=ArgumentDefaultsHelpFormatter) - parser.add_argument('sbfile', help='SQLite3 database file with PR list', type=str) + parser.add_argument('--sbfile', help='SQLite3 database file with PR list') parser.add_argument('--create', help='create sqlite file for pr list status', action='store_true', required=False) parser.add_argument('--add_pr', nargs=1, metavar='PR', help='add new pr to list (defults to: Open,Ready)', required=False) parser.add_argument('--remove_pr', nargs=1, metavar='PR', help='removes pr from list', required=False) - parser.add_argument('--update_pr', nargs=3, metavar=('pr', 'state', 'status'), help='updates state and status of a given pr', required=False) + parser.add_argument('--update_pr', nargs=argparse.REMAINDER, metavar=('pr', 'state', 'status', 'reset'), help='updates state and status of a given pr', required=False) parser.add_argument('--display', help='output pr table', action='store_true', required=False) args = parser.parse_args() @@ -142,14 +147,16 @@ if __name__ == '__main__': print(f"pr {row[0]} already is in list: nothing added") sys.exit(0) - entities = (args.add_pr[0], 'Open', 'Ready') + entities = (args.add_pr[0], 'Open', 'Ready', 0) sql_insert(obj, entities) if args.update_pr: - pr = args.update_pr[0] - state = args.update_pr[1] - status = args.update_pr[2] - sql_update(obj, pr, state, status) + if len(args.update_pr) < 2: + print(f"update_pr must have at least one vaule to update") + sys.exit(0) + pr = args.update_pr[0] + + sql_update(obj, pr, args.update_pr[1:]) if args.remove_pr: sql_remove(obj, args.remove_pr[0]) -- GitLab From bdbdf50f3e491e5c91d3a863989986015b0b48da Mon Sep 17 00:00:00 2001 From: "Terry.McGuinness" <Terry.McGuinness@noaa.gov> Date: Thu, 25 May 2023 21:29:41 +0000 Subject: [PATCH 5/8] pynorms - few basic ones --- ci/scripts/pr_list_database.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/ci/scripts/pr_list_database.py b/ci/scripts/pr_list_database.py index c3d797165..24ef49501 100755 --- a/ci/scripts/pr_list_database.py +++ b/ci/scripts/pr_list_database.py @@ -59,7 +59,7 @@ def sql_insert(obj: sqlite3.Cursor, entities: list) -> None: obj.execute('INSERT INTO processing(pr, state, status, reset) VALUES(?, ?, ?, ?)', entities) -def sql_update(obj: sqlite3.Cursor, pr:str, updates:dict) -> None: +def sql_update(obj: sqlite3.Cursor, pr: str, updates: dict) -> None: """Updates table for a given pr with new values for state and status Parameters @@ -76,10 +76,10 @@ def sql_update(obj: sqlite3.Cursor, pr:str, updates:dict) -> None: """ - update_list = ['state','status','reset'] + update_list = ['state', 'status', 'reset'] for value in updates: - update = update_list.pop(0) - obj.execute(f'UPDATE processing SET "{update}" = "{value}" WHERE pr = {pr}') + update = update_list.pop(0) + obj.execute(f'UPDATE processing SET "{update}" = "{value}" WHERE pr = {pr}') def sql_fetch(obj: sqlite3.Cursor) -> list: @@ -123,7 +123,8 @@ def input_args(): parser.add_argument('--create', help='create sqlite file for pr list status', action='store_true', required=False) parser.add_argument('--add_pr', nargs=1, metavar='PR', help='add new pr to list (defults to: Open,Ready)', required=False) parser.add_argument('--remove_pr', nargs=1, metavar='PR', help='removes pr from list', required=False) - parser.add_argument('--update_pr', nargs=argparse.REMAINDER, metavar=('pr', 'state', 'status', 'reset'), help='updates state and status of a given pr', required=False) + parser.add_argument('--update_pr', nargs=argparse.REMAINDER, metavar=('pr', 'state', 'status', 'reset'), + help='updates state and status of a given pr', required=False) parser.add_argument('--display', help='output pr table', action='store_true', required=False) args = parser.parse_args() @@ -154,7 +155,7 @@ if __name__ == '__main__': if len(args.update_pr) < 2: print(f"update_pr must have at least one vaule to update") sys.exit(0) - pr = args.update_pr[0] + pr = args.update_pr[0] sql_update(obj, pr, args.update_pr[1:]) -- GitLab From 6d16e5ab69c7ed71f387a37555da0e745293fea4 Mon Sep 17 00:00:00 2001 From: "Terry.McGuinness" <Terry.McGuinness@noaa.gov> Date: Fri, 26 May 2023 15:35:22 +0000 Subject: [PATCH 6/8] needed to add --sbfile switch onto pr_list_database.py script in run_ci.sh --- ci/scripts/run_ci.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/run_ci.sh b/ci/scripts/run_ci.sh index 95a0e5d31..df485ceb3 100755 --- a/ci/scripts/run_ci.sh +++ b/ci/scripts/run_ci.sh @@ -47,7 +47,7 @@ pr_list_dbfile="${GFS_CI_ROOT}/open_pr_list.db" pr_list="" if [[ -f "${pr_list_dbfile}" ]]; then - pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display "${pr_list_dbfile}" | grep -v Failed | grep Open | grep Running | awk '{print $1}' | head -"${max_concurrent_pr}") || true + pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfile "${pr_list_dbfile}" | grep -v Failed | grep Open | grep Running | awk '{print $1}' | head -"${max_concurrent_pr}") || true fi if [[ -z "${pr_list}" ]]; then echo "no open and built PRs that are ready for the cases to advance with rocotorun .. exiting" -- GitLab From c4562dc7a8bc800b94e1b54ae377be85be94aab5 Mon Sep 17 00:00:00 2001 From: TerrenceMcGuinness-NOAA <terrence.mcguinness@cox.net> Date: Fri, 26 May 2023 11:57:58 -0400 Subject: [PATCH 7/8] Update ci/scripts/driver.sh Co-authored-by: Rahul Mahajan <aerorahul@users.noreply.github.com> --- ci/scripts/driver.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/driver.sh b/ci/scripts/driver.sh index fb2d16eb5..0158ab98b 100755 --- a/ci/scripts/driver.sh +++ b/ci/scripts/driver.sh @@ -69,7 +69,7 @@ for pr in ${pr_list}; do pr_id=0 ############################################################# # Check if a Ready labeled PR has changed back from once set -# and in that case remove all previous jobs in slubm and +# and in that case remove all previous jobs in scheduler and # and remove PR from filesystem to start clean ############################################################# if [[ "${db_list}" == *"already is in list"* ]]; then -- GitLab From ecce15166cc92aee285a20ccd3bd6b4cc7849611 Mon Sep 17 00:00:00 2001 From: TerrenceMcGuinness-NOAA <terrence.mcguinness@cox.net> Date: Fri, 26 May 2023 11:59:15 -0400 Subject: [PATCH 8/8] Update check_ci.sh Type spelling file for new switch to pr_list_database.py in check --- ci/scripts/check_ci.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/check_ci.sh b/ci/scripts/check_ci.sh index 6ea975d91..8f22ba5c0 100755 --- a/ci/scripts/check_ci.sh +++ b/ci/scripts/check_ci.sh @@ -57,7 +57,7 @@ pr_list_dbfile="${GFS_CI_ROOT}/open_pr_list.db" pr_list="" if [[ -f "${pr_list_dbfile}" ]]; then - pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfild "${pr_list_dbfile}" | grep -v Failed | grep Running | awk '{print $1}') || true + pr_list=$("${HOMEgfs}/ci/scripts/pr_list_database.py" --display --sbfile "${pr_list_dbfile}" | grep -v Failed | grep Running | awk '{print $1}') || true fi if [[ -z "${pr_list+x}" ]]; then echo "no PRs open and ready to run cases on .. exiting" -- GitLab