✨ 新功能: - 一键自动化部署脚本 (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
50 lines
1.5 KiB
Groovy
50 lines
1.5 KiB
Groovy
#!/usr/bin/env groovy
|
||
// 跳过Jenkins设置向导并配置基础安全
|
||
|
||
import jenkins.model.*
|
||
import hudson.security.*
|
||
import hudson.security.csrf.DefaultCrumbIssuer
|
||
import hudson.util.Secret
|
||
import jenkins.security.s2m.AdminWhitelistRule
|
||
|
||
def instance = Jenkins.getInstance()
|
||
|
||
// 设置管理员账号(如果不存在)
|
||
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}"
|
||
} else {
|
||
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)
|
||
|
||
// 设置Jenkins版本以跳过向导
|
||
def setupWizard = instance.getSetupWizard()
|
||
if (setupWizard != null) {
|
||
setupWizard.completeSetup()
|
||
println "✅ 已跳过设置向导"
|
||
}
|
||
|
||
// 禁用使用统计
|
||
instance.setNoUsageStatistics(true)
|
||
|
||
// 保存配置
|
||
instance.save()
|
||
|
||
println "🎉 Jenkins安全配置完成" |