#!/bin/bash #set -e # 根据内置变量生成Base64认证令牌 AUTH_TOKEN=$(echo -n "${DOCKER_REGISTRY_AK}:${DOCKER_REGISTRY_SK}" | base64) # Harbor配置 HARBOR_URL=https://ynw-aliyun-harbor.haidaifu.net:9443 PROJECT=ynw REPOSITORY=$SERVICE_NAME TAG=$(echo $IMAGE|awk -F":" '{print $2}') TIMEOUT=180 echo "开始同步镜像到天津stage环境..." START_TIME=$(date +%s) while true; do CURRENT_TIME=$(date +%s) ELAPSED_TIME=$((CURRENT_TIME - START_TIME)) if [ $ELAPSED_TIME -ge $TIMEOUT ]; then echo "错误: 检测超时(${TIMEOUT}秒)" exit 1 fi HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \ -k -X GET \ "${HARBOR_URL}/api/v2.0/projects/${PROJECT}/repositories/${REPOSITORY}/artifacts/${TAG}" \ -H "Authorization: Basic ${AUTH_TOKEN}") if [ "$HTTP_CODE" -eq 200 ]; then echo "成功: 镜像已存在" exit 0 elif [ "$HTTP_CODE" -eq 404 ]; then echo "等待中... (${ELAPSED_TIME}秒)" sleep 5 else echo "检测失败, HTTP状态码: $HTTP_CODE" exit 1 fi done