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

85 lines
2.4 KiB
Groovy

#!/usr/bin/env groovy
// Jenkins简化自动化配置脚本
import jenkins.model.*
import hudson.security.*
import hudson.util.Secret
import jenkins.security.s2m.AdminWhitelistRule
import hudson.security.csrf.DefaultCrumbIssuer
def instance = Jenkins.getInstance()
println "🚀 开始Jenkins自动化配置..."
// 1. 基础安全配置
def hudsonRealm = new HudsonPrivateSecurityRealm(false)
def adminUsername = System.getenv('JENKINS_ADMIN_ID') ?: 'admin'
def adminPassword = System.getenv('JENKINS_ADMIN_PASSWORD') ?: 'admin123'
// 创建管理员用户
if (!hudsonRealm.getAllUsers().find { it.getId() == adminUsername }) {
hudsonRealm.createAccount(adminUsername, adminPassword)
instance.setSecurityRealm(hudsonRealm)
println "✅ 创建管理员用户: ${adminUsername}"
}
// 设置授权策略
def strategy = new FullControlOnceLoggedInAuthorizationStrategy()
strategy.setAllowAnonymousRead(false)
instance.setAuthorizationStrategy(strategy)
// 启用CSRF保护
instance.setCrumbIssuer(new DefaultCrumbIssuer(true))
// 设置代理安全
instance.getInjector().getInstance(AdminWhitelistRule.class).setMasterKillSwitch(false)
println "✅ 安全配置完成"
// 2. 系统配置
instance.setNumExecutors(4)
instance.setSystemMessage("""
🎉 Jenkins CI/CD服务器 - 完全自动化配置
📦 插件: 自动安装30+核心插件
🔧 工具: Maven, Gradle, NodeJS, Docker自动配置
🔐 凭据: Gitea, Registry认证模板
📋 作业: 多平台构建演示
📚 文档: docs/jenkins-persistence-guide.md
🌐 访问地址: http://localhost:8081
👤 登录账号: ${adminUsername} / ${adminPassword}
""")
// 设置Jenkins URL
def location = instance.getDescriptor("jenkins.model.JenkinsLocationConfiguration")
location.setUrl("http://localhost:8081/")
location.setAdminAddress("[email protected]")
location.save()
println "✅ 系统配置完成"
// 3. 保存配置
instance.save()
// 4. 跳过设置向导
def setupWizard = instance.getSetupWizard()
if (setupWizard != null) {
setupWizard.completeSetup()
println "✅ 跳过设置向导"
}
println """
🎉 Jenkins基础自动化配置完成!
📋 配置摘要:
- ✅ 管理员用户: ${adminUsername}
- ✅ 安全策略: 已配置
- ✅ 系统消息: 已设置
- ✅ 设置向导: 已跳过
🌐 访问地址: http://localhost:8081
👤 登录信息: ${adminUsername} / ${adminPassword}
📚 下一步: 访问Web界面完成剩余配置
"""