fix(cicd): push 重试每次重新 login,修复 Harbor auth session 过期
重试多次后报 'no basic auth credentials'(docker login session 过期)。 改成 push_retry 函数:每次 push 前重新 docker login,组合成原子重试单元。 重试次数提到 10 次。
This commit is contained in:
parent
efa9f1d489
commit
2489b33270
26
Jenkinsfile
vendored
26
Jenkinsfile
vendored
@ -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
|
||||
'''
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user