Files
java-template/docker/compose/jenkins/init-scripts/01-security.groovy
T
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

50 lines
1.5 KiB
Groovy
Raw 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.
#!/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安全配置完成"