Files
macos-tools/harbor/scripts/quick-setup.sh
gaoandClaude 8f47f4e9ea feat: 完善 DevOps 工具链配置和优化 Harbor 服务
- 更新 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]>
2025-11-03 06:39:53 +08:00

208 lines
5.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 快速设置开始..."
# 1. 登录 Harbor
echo "🔐 登录 Harbor..."
echo "admin123" | docker login "${HARBOR_REGISTRY}" -u admin --password-stdin
# 2. 创建基础项目
echo "📁 创建基础项目..."
projects=(
"ljwx|自研项目镜像"
"tools|工具镜像"
"cache|缓存镜像"
)
for project_config in "${projects[@]}"; do
project_name=$(echo "$project_config" | cut -d'|' -f1)
description=$(echo "$project_config" | cut -d'|' -f2)
echo " 📁 创建项目: $project_name"
response=$(curl -s -k -X POST \
"https://${HARBOR_REGISTRY}/api/v2.0/projects" \
-H "Authorization: Basic $(echo -n '${HARBOR_USER}:${HARBOR_PASS}' | base64)" \
-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\|already exists"; then
echo " ✅ 项目已存在或创建成功"
else
echo " ❌ 项目创建失败: $response"
fi
done
# 3. 推送一些基础镜像到 Harbor
echo "📦 推送基础镜像到 Harbor..."
base_images=(
"alpine:latest|tools"
"nginx:alpine|tools"
"redis:alpine|cache"
"node:20-alpine|tools"
"python:3.11-alpine|tools"
)
for image_config in "${base_images[@]}"; do
original_image=$(echo "$image_config" | cut -d'|' -f1)
target_project=$(echo "$image_config" | cut -d'|' -f2)
image_name=$(echo "$original_image" | cut -d':' -f1)
image_tag=$(echo "$original_image" | cut -d':' -f2)
harbor_image="${HARBOR_REGISTRY}/${target_project}/${image_name}:${image_tag}"
echo " 📦 处理镜像: $original_image → $harbor_image"
# 拉取镜像
echo " ⬇️ 拉取: $original_image"
docker pull "$original_image"
# 标记镜像
echo " 🏷️ 标记: $harbor_image"
docker tag "$original_image" "$harbor_image"
# 推送镜像
echo " ⬆️ 推送: $harbor_image"
docker push "$harbor_image"
# 清理本地原始镜像(可选)
# docker rmi "$original_image" 2>/dev/null || true
echo " ✅ 完成"
done
# 4. 创建快速使用脚本
echo "📝 创建快速使用脚本..."
mkdir -p ~/bin
tee ~/bin/harbor-sync > /dev/null <<'EOF'
#!/bin/bash
# Harbor 镜像同步脚本
HARBOR_REGISTRY="192.168.1.83:8443"
if [ $# -eq 0 ]; then
echo "用法: harbor-sync <镜像名>[:<标签>] [目标项目]"
echo ""
echo "示例:"
echo " harbor-sync golang:1.21-alpine tools"
echo " harbor-sync prom/prometheus:latest tools"
echo " harbor-sync postgres:15-alpine cache"
echo ""
echo "📋 可用项目:"
echo " ljwx - 自研项目"
echo " tools - 工具镜像"
echo " cache - 缓存镜像"
echo " library - 通用镜像"
exit 1
fi
IMAGE="$1"
PROJECT="${2:-tools}"
IMAGE_NAME=$(echo "$IMAGE" | cut -d':' -f1 | sed 's|.*/||')
IMAGE_TAG=$(echo "$IMAGE" | cut -d':' -f2)
if [ "$IMAGE_TAG" = "$IMAGE_NAME" ]; then
IMAGE_TAG="latest"
fi
HARBOR_IMAGE="${HARBOR_REGISTRY}/${PROJECT}/${IMAGE_NAME}:${IMAGE_TAG}"
echo "📦 同步镜像: $IMAGE → $HARBOR_IMAGE"
# 拉取镜像
docker pull "$IMAGE"
# 标记镜像
docker tag "$IMAGE" "$HARBOR_IMAGE"
# 推送镜像
docker push "$HARBOR_IMAGE"
echo "✅ 同步完成"
echo "🔗 Harbor 镜像: $HARBOR_IMAGE"
EOF
chmod +x ~/bin/harbor-sync
# 5. 创建镜像拉取别名
tee ~/bin/harbor-get > /dev/null <<'EOF'
#!/bin/bash
# 从 Harbor 快速拉取镜像
HARBOR_REGISTRY="192.168.1.83:8443"
if [ $# -eq 0 ]; then
echo "用法: harbor-get <项目>/<镜像>[:<标签>]"
echo ""
echo "示例:"
echo " harbor-get tools/alpine:latest"
echo " harbor-get tools/nginx:alpine"
echo " harbor-get cache/redis:alpine"
echo " harbor-get ljwx/my-app:v1.0.0"
echo ""
echo "📋 可用项目:"
echo " tools - 工具镜像"
echo " cache - 缓存镜像"
echo " ljwx - 自研项目"
echo " library - 通用镜像"
exit 1
fi
HARBOR_IMAGE="${HARBOR_REGISTRY}/$1"
echo "📦 拉取镜像: $HARBOR_IMAGE"
docker pull "$HARBOR_IMAGE"
EOF
chmod +x ~/bin/harbor-get
# 6. 更新 PATH
if ! echo "$PATH" | grep -q "$HOME/bin"; then
echo "" >> ~/.zshrc
echo "# Harbor 工具" >> ~/.zshrc
echo "export PATH=\"\$HOME/bin:\$PATH\"" >> ~/.zshrc
fi
echo ""
echo "🎉 Harbor 快速设置完成!"
echo ""
echo "📋 可用工具:"
echo " harbor-sync <镜像> [项目] - 同步镜像到 Harbor"
echo " harbor-get <项目/镜像> - 从 Harbor 拉取镜像"
echo " harbor-pull <镜像> - 智能拉取(需要代理缓存)"
echo ""
echo "📦 已推送的基础镜像:"
echo " tools/alpine:latest"
echo " tools/nginx:alpine"
echo " tools/redis:alpine"
echo " tools/node:20-alpine"
echo " tools/python:3.11-alpine"
echo ""
echo "💡 使用示例:"
echo " harbor-sync golang:1.21-alpine tools"
echo " harbor-get tools/nginx:alpine"
echo " docker pull ${HARBOR_REGISTRY}/tools/alpine:latest"