diff --git a/scripts/service_scripts/build-service.sh b/scripts/service_scripts/build-service.sh index 71bd4cc..6fed437 100755 --- a/scripts/service_scripts/build-service.sh +++ b/scripts/service_scripts/build-service.sh @@ -49,7 +49,7 @@ else if [ ! -f "$FILE" ]; then ./scripts/build_scripts/build-all-in-flavor.sh "$FLAVOR" true args=$(grep -v '^#' "$FLAVOR".env | grep -v '^$' | awk -F '=' '{print "--build-arg " $1 "=\"" $2 "\""}' ORS=' ') - ./scripts/tool_scripts/exec-until-success.sh docker build --platform linux/amd64 "$args" -t "a-server:latest" . + ./scripts/tool_scripts/exec-until-success.sh docker build . --platform linux/amd64 "$args" -t "a-server:latest" else echo "$FILE already exists. Skipping docker image build." fi diff --git a/scripts/tool_scripts/exec-until-success.sh b/scripts/tool_scripts/exec-until-success.sh index de2a7db..2643d8d 100755 --- a/scripts/tool_scripts/exec-until-success.sh +++ b/scripts/tool_scripts/exec-until-success.sh @@ -8,10 +8,12 @@ fi # 将所有的参数当做要执行的命令 COMMAND="$@" -# 无限循环执行命令直到成功 -while true; do - #echo "Executing: $COMMAND" +# 设置最大重试次数 +MAX_RETRIES=5 +RETRY_COUNT=0 +# 无限循环执行命令直到成功或达到最大重试次数 +while true; do # 执行命令 eval "$COMMAND" @@ -21,7 +23,16 @@ while true; do echo "Command succeeded." break else - echo "Command failed[$result]. Retrying..." - sleep 1 # 等待一秒再重试,避免过快的重试 + # 增加重试次数 + RETRY_COUNT=$((RETRY_COUNT + 1)) + + # 检查是否超过最大重试次数 + if [ $RETRY_COUNT -ge $MAX_RETRIES ]; then + echo "Command failed [$result]. Reached maximum retry limit ($MAX_RETRIES)." + exit 1 + else + echo "Command failed [$result]. Retrying ($RETRY_COUNT/$MAX_RETRIES)..." + sleep 1 # 等待一秒再重试,避免过快的重试 + fi fi done