diff --git a/tests/anck-pack-and-boot/anck_build.sh b/tests/anck-pack-and-boot/anck_build.sh index 043999d48d377081ad3a1893fa1af8b2f8e6831e..bd3fe1fd933252a24c1d1e5efe3145eab6805f7b 100644 --- a/tests/anck-pack-and-boot/anck_build.sh +++ b/tests/anck-pack-and-boot/anck_build.sh @@ -84,20 +84,46 @@ if [ "X$KERNEL_CI_PR_ID" == "X" ]; then else patch_url="${KERNEL_CI_REPO_URL/\.git/}/pulls/${KERNEL_CI_PR_ID}.patch" echo "===> Get the patch from: $patch_url" - [ -f $(basename $patch_url) ] && rm -f $(basename $patch_url) - echo "CMD: wget $patch_url" - wget $patch_url - cat $(basename $patch_url) - cd $anck_repo + patch_file=$(basename $patch_url) + [ -f "$patch_file" ] && rm -f "$patch_file" + retry_count=3 # 尝试下载次数 + retry_delay=3 # 每次尝试间隔秒数 + + for ((i=0; i Downloaded patch successfully" + break + else + echo "===> Failed to download patch (Attempt $((i+1))/$retry_count)" + if [ $i -lt $((retry_count-1)) ]; then + echo "Retrying in $retry_delay seconds..." + sleep $retry_delay + else + echo "Failed to download patch after $retry_count attempts." + exit 1 + fi + fi + done + + echo "===> Patch content:" + cat "$patch_file" + cd $anck_repo || { echo "===> Could not change to directory: $anck_repo" ; exit 1; } echo "===> Apply patch: $patch_url" echo "CMD: git config user.email \"test@test.com\"" echo "CMD: git config user.name \"test\"" git config user.email "test@test.com" git config user.name "test" echo "CMD: git am ../$(basename $patch_url)" - if git am ../$(basename $patch_url); then - echo "Apply patch pass: $patch_url" + if git am "../$patch_file"; then + echo "Apply patch pass: $patch_url" else + echo "Apply patch fail: $patch_url" + echo "===> git am failure log:" + git am --abort + git apply --check "../$patch_file" 2>&1 | tee ../apply_patch_error.log + echo "===> git apply check log:" + cat ../apply_patch_error.log show_result $1 1 "Apply patch fail: $patch_url" fi echo "===> Apply patch done"