Files
bruno 8c3881bf89 🚀 feat: 企业级CI/CD基础设施完整部署方案
✨ 新功能:
- 一键自动化部署脚本 (build-infra.sh)
- 统一端口配置 (3开头端口,避免冲突)
- 多平台Docker构建支持 (AMD64 + ARM64)
- Jenkins Configuration as Code (零手动配置)
- 完整的服务验证和健康检查

🏗️ 核心组件:
- Jenkins LTS + JDK21 (端口38080)
- Gitea 1.21 (端口33000, SSH: 32222)
- Docker Registry + UI (端口35001/35002)
- 统一cicd-network网络

📋 管理工具:
- 自动化部署和验证脚本
- 健康检查和日志管理工具
- 完整的文档和故障排查指南

🎯 已验证功能:
- 所有服务正常启动和运行
- API和Web界面完全可访问
- 多平台构建环境就绪
- 完整的CI/CD流水线支持

适用环境: Mac Studio M2 + Docker Desktop
2025-08-23 22:11:50 +08:00

182 lines
4.5 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# ExpressVPN TLS证书问题综合解决方案
set -e
G='\033[0;32m';Y='\033[1;33m';R='\033[0;31m';NC='\033[0m'
log() { echo -e "${G}[INFO]${NC} $1"; }
warn() { echo -e "${Y}[WARN]${NC} $1"; }
error() { echo -e "${R}[ERROR]${NC} $1"; }
log "=== ExpressVPN TLS问题解决方案 ==="
# 方案1:修改Docker配置跳过TLS验证(不推荐,仅临时使用)
disable_tls_verify() {
log "方案1:临时禁用TLS验证"
# 备份配置
cp ~/.docker/daemon.json ~/.docker/daemon.json.backup 2>/dev/null || true
# 添加TLS跳过配置
cat > ~/.docker/daemon.json << 'EOF'
{
"experimental": true,
"features": {
"buildkit": true
},
"insecure-registries": [
"localhost:5001"
],
"registry-mirrors": [],
"disable-legacy-registry": false
}
EOF
# 重启Docker
osascript -e 'quit app "OrbStack"' && sleep 3 && open -a OrbStack
sleep 10
log "✅ Docker配置已更新,请重试拉取镜像"
}
# 方案2:使用本地镜像缓存
use_local_cache() {
log "方案2:创建本地镜像缓存"
# 创建本地缓存目录
mkdir -p ~/docker-cache
# 下载常用镜像的tar包(如果可能)
log "提示:可以在网络条件好的时候预先下载镜像:"
echo " docker save gitea/gitea:latest > ~/docker-cache/gitea.tar"
echo " docker load < ~/docker-cache/gitea.tar"
}
# 方案3:使用国内云服务器中转
setup_proxy_server() {
log "方案3:配置代理服务器"
cat << 'EOF'
建议在国内云服务器上设置Docker Registry代理:
1. 在云服务器运行:
docker run -d --restart=always -p 5000:5000 \
--name registry-proxy \
-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \
registry:2
2. 在本地配置使用代理:
{
"registry-mirrors": ["http://your-server:5000"]
}
EOF
}
# 方案4:ExpressVPN配置优化
optimize_expressvpn() {
log "方案4:ExpressVPN配置优化"
cat << 'EOF'
ExpressVPN配置建议:
1. 切换协议:
- 打开ExpressVPN应用
- 进入设置 > Protocol
- 选择 "Automatic" 而不是 "OpenVPN"
2. 切换服务器位置:
- 尝试美国西海岸服务器(洛杉矶)
- 尝试香港服务器
- 避免使用欧洲服务器
3. 禁用某些功能:
- 关闭 "Network Lock"
- 关闭 "Block ads & trackers"
4. 使用分流:
- 在路由器层面配置Docker Hub直连
EOF
}
# 方案5:直接解决当前问题
fix_current_issue() {
log "方案5:直接修复当前Gitea拉取问题"
# 尝试使用已有的alpine镜像构建gitea
log "使用临时解决方案..."
# 创建简化的compose文件
cat > /tmp/gitea-simple.yml << 'EOF'
version: '3.8'
services:
gitea-simple:
image: alpine:latest
container_name: gitea-temp
command: /bin/sh -c "echo 'Gitea服务占位符,网络修复后替换' && sleep 3600"
ports:
- "3000:3000"
networks:
- cicd-network
networks:
cicd-network:
external: true
EOF
# 启动临时服务
docker network create cicd-network 2>/dev/null || true
docker-compose -f /tmp/gitea-simple.yml up -d
log "✅ 临时Gitea服务已启动,端口3000"
log "修复网络问题后可以替换为真正的Gitea镜像"
}
# 测试网络连接
test_network() {
log "测试网络连接..."
echo "测试结果:"
echo -n "Docker Hub API: "
curl -s -w "%{http_code}" -o /dev/null https://index.docker.io || echo "失败"
echo -n "Docker Registry: "
curl -s -w "%{http_code}" -o /dev/null https://registry-1.docker.io || echo "失败"
echo -n "Gitea官网: "
curl -s -w "%{http_code}" -o /dev/null https://gitea.io || echo "失败"
}
# 主菜单
show_menu() {
echo "
=== ExpressVPN TLS问题解决方案 ===
1. 🔧 禁用TLS验证(临时方案)
2. 💾 使用本地镜像缓存
3. 🌐 配置代理服务器
4. 📡 ExpressVPN优化建议
5. 🚀 直接修复当前问题
6. 🧪 测试网络连接
0. 退出
请选择 (0-6): "
}
# 主程序
main() {
while true; do
show_menu
read -r choice
case $choice in
1) disable_tls_verify ;;
2) use_local_cache ;;
3) setup_proxy_server ;;
4) optimize_expressvpn ;;
5) fix_current_issue ;;
6) test_network ;;
0) log "退出"; exit 0 ;;
*) warn "无效选择" ;;
esac
echo; read -p "按回车继续..."; echo
done
}
main "$@"