From 4a065c327009f5a50ee7aab93dfcc22755747db4 Mon Sep 17 00:00:00 2001 From: Evgeny L Date: Tue, 16 Apr 2019 21:32:46 +0000 Subject: [PATCH] Return error if execution of the step fails When Shipyard fails to execute some of the steps, the status of the action is always "Complete", determine the success of the execution based not only on action status, but also on the status of every step within the action. Change-Id: If7f71b55c2aed0322edef9c811ed1906400b0913 --- tools/execute_shipyard_action.sh | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tools/execute_shipyard_action.sh b/tools/execute_shipyard_action.sh index c9407d07..f206b168 100755 --- a/tools/execute_shipyard_action.sh +++ b/tools/execute_shipyard_action.sh @@ -105,8 +105,9 @@ run_action () { while true; do # Get Current State of Action Lifecycle - describe_action=`${base_docker_command} ${SHIPYARD_IMAGE} describe ${action_id}` - action_lifecycle=`echo ${describe_action} | awk '{print $8}'` + describe_action=$(${base_docker_command} ${SHIPYARD_IMAGE} describe "${action_id}") + action_lifecycle=$(echo "${describe_action}" | grep -i "Lifecycle" | awk '{print $2}') + action_steps=$(echo "${describe_action}" | grep -i "step/" | awk '{print $3}') if [[ $action_lifecycle == "Complete" ]]; then echo -e '\nSuccessfully performed' ${action} @@ -135,10 +136,18 @@ run_action () { # Return exit code so that we can use it to determine the final # state of the workflow if [[ $action_lifecycle == "Complete" ]]; then + # Return the error if any of the steps failed to execute. + for step in ${action_steps}; do + if [ "${step}" == "failed" ]; then + exit 1 + fi + done + + # None of the steps failed to execute, success. exit 0 - else - exit 1 fi + + exit 1 } # Calls 'run_action' function