From 2489b332702e8f4e116dd84402c8392f30c7c803 Mon Sep 17 00:00:00 2001 From: xiangning Date: Fri, 17 Jul 2026 14:30:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(cicd):=20push=20=E9=87=8D=E8=AF=95=E6=AF=8F?= =?UTF-8?q?=E6=AC=A1=E9=87=8D=E6=96=B0=20login=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=20Harbor=20auth=20session=20=E8=BF=87=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重试多次后报 'no basic auth credentials'(docker login session 过期)。 改成 push_retry 函数:每次 push 前重新 docker login,组合成原子重试单元。 重试次数提到 10 次。 --- Jenkinsfile | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index a065dd7..a771df4 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -34,18 +34,20 @@ pipeline { steps { withCredentials([usernamePassword(credentialsId: "harbor-credentials", usernameVariable: "HUSER", passwordVariable: "HPASS")]) { sh ''' - echo $HPASS | docker login $HARBOR -u $HUSER --password-stdin - # 跨地域 push 大 blob 易断流,重试利用断点续传(已传层会跳过) - for i in 1 2 3 4 5 6 7 8; do - docker push $IMAGE:$TAG && break - echo "push $IMAGE:$TAG 第 $i 次中断,3秒后重试(断点续传)..." - sleep 3 - done - for i in 1 2 3 4 5 6 7 8; do - docker push $IMAGE:latest && break - echo "push $IMAGE:latest 第 $i 次中断,3秒后重试..." - sleep 3 - done + # 跨地域 push 大 blob 易断流 + Harbor auth session 会过期 + # 每次 push 前重新 login,组合成原子重试单元(断点续传,已传层跳过) + push_retry() { + local img=$1 + for i in 1 2 3 4 5 6 7 8 9 10; do + echo $HPASS | docker login $HARBOR -u $HUSER --password-stdin >/dev/null 2>&1 + docker push "$img" && return 0 + echo "push $img 第 $i 次中断,5秒后重试(重新登录+断点续传)..." + sleep 5 + done + return 1 + } + push_retry $IMAGE:$TAG + push_retry $IMAGE:latest docker logout $HARBOR ''' }