- 更新 Gitea runner 配置,支持优化的 CI/CD 环境 - 完善 Harbor HTTPS 配置和远程访问支持 - 优化 Harbor 日志配置,改用 json-file 驱动 - 添加 Docker 构建加速和代理缓存脚本 - 新增完整的文档和使用指南 - 添加 AI 开发工具集成配置 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
102 lines
3.4 KiB
Bash
Executable File
102 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Harbor 代理缓存项目设置脚本
|
|
# 自动创建常用的代理缓存项目
|
|
|
|
set -e
|
|
|
|
HARBOR_REGISTRY="192.168.1.83:8443"
|
|
HARBOR_USER="admin"
|
|
HARBOR_PASS="admin123"
|
|
|
|
echo "🚀 开始配置 Harbor 代理缓存项目..."
|
|
|
|
# 获取访问令牌
|
|
echo "🔐 获取访问令牌..."
|
|
AUTH_TOKEN=$(echo -n "${HARBOR_USER}:${HARBOR_PASS}" | base64)
|
|
|
|
# 定义代理项目配置(使用简单数组格式)
|
|
proxy_projects=(
|
|
"dockerhub-proxy|https://registry-1.docker.io|Docker Hub 镜像缓存"
|
|
"ghcr-proxy|https://ghcr.io|GitHub Container Registry"
|
|
"quay-proxy|https://quay.io|Quay.io 镜像缓存"
|
|
"k8s-proxy|https://registry.k8s.io|Kubernetes 官方镜像"
|
|
"gcr-proxy|https://gcr.io|Google Container Registry"
|
|
"k8s-gcr-proxy|https://k8s.gcr.io|Kubernetes Google 镜像"
|
|
)
|
|
|
|
# 创建项目函数
|
|
create_project() {
|
|
local project_name="$1"
|
|
local description="$2"
|
|
|
|
echo "📁 创建项目: $project_name"
|
|
|
|
# 检查项目是否已存在
|
|
http_status=$(curl -s -o /dev/null -w "%{http_code}" -k \
|
|
"https://${HARBOR_REGISTRY}/api/v2.0/projects/${project_name}" \
|
|
-H "Authorization: Basic ${AUTH_TOKEN}")
|
|
|
|
if [ "$http_status" = "200" ]; then
|
|
echo " ✅ 项目已存在,跳过创建"
|
|
return 0
|
|
fi
|
|
|
|
# 创建项目
|
|
response=$(curl -s -k -X POST \
|
|
"https://${HARBOR_REGISTRY}/api/v2.0/projects" \
|
|
-H "Authorization: Basic ${AUTH_TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"project_name\": \"${project_name}\",
|
|
\"metadata\": {
|
|
\"public\": \"true\",
|
|
\"enable_content_trust\": \"false\",
|
|
\"prevent_vul\": \"false\",
|
|
\"severity\": \"medium\",
|
|
\"auto_scan\": \"false\",
|
|
\"reuse_sys_cve_allowlist\": \"true\"
|
|
},
|
|
\"storage_quota\": -1,
|
|
\"crawl_enable\": false
|
|
}")
|
|
|
|
if echo "$response" | grep -q "project_name"; then
|
|
echo " ✅ 项目创建成功"
|
|
elif echo "$response" | grep -q "already exists"; then
|
|
echo " ✅ 项目已存在"
|
|
else
|
|
echo " ❌ 项目创建失败: $response"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# 创建所有代理项目
|
|
for project_config in "${proxy_projects[@]}"; do
|
|
project_name=$(echo "$project_config" | cut -d'|' -f1)
|
|
upstream=$(echo "$project_config" | cut -d'|' -f2)
|
|
description=$(echo "$project_config" | cut -d'|' -f3)
|
|
create_project "$project_name" "$description"
|
|
done
|
|
|
|
echo -e "\n🎉 代理缓存项目配置完成!"
|
|
echo -e "\n📋 已创建的项目:"
|
|
for project_config in "${proxy_projects[@]}"; do
|
|
project_name=$(echo "$project_config" | cut -d'|' -f1)
|
|
upstream=$(echo "$project_config" | cut -d'|' -f2)
|
|
description=$(echo "$project_config" | cut -d'|' -f3)
|
|
echo " 📁 $project_name"
|
|
echo " 上游: $upstream"
|
|
echo " 说明: $description"
|
|
echo
|
|
done
|
|
|
|
echo "💡 使用示例:"
|
|
echo " Docker Hub 镜像: docker pull ${HARBOR_REGISTRY}/dockerhub-proxy/library/nginx:latest"
|
|
echo " GitHub 镜像: docker pull ${HARBOR_REGISTRY}/ghcr-proxy/owner/repo:tag"
|
|
echo " K8s 镜像: docker pull ${HARBOR_REGISTRY}/k8s-proxy/kube-apiserver:v1.28.0"
|
|
|
|
echo -e "\n⚠️ 下一步:"
|
|
echo " 1. 在 Harbor UI 中配置代理缓存的上游认证信息(避免限流)"
|
|
echo " 2. 设置镜像保留策略和垃圾回收计划"
|
|
echo " 3. 配置客户端使用代理缓存" |