/** * 企业级通用CI/CD Pipeline模板 * 支持多种项目类型:Java Maven/Gradle、Node.js、Python等 * * 使用方法: * 1. 在项目根目录创建 .ci-config.yml 文件 * 2. 配置项目类型和构建参数 * 3. Jenkinsfile 中调用此模板 */ @Library('ci-cd-shared-library') _ pipeline { agent any options { buildDiscarder(logRotator(numToKeepStr: '10')) timeout(time: 30, unit: 'MINUTES') timestamps() skipDefaultCheckout() } environment { // 动态从配置文件加载 CI_CONFIG = readFile('.ci-config.yml') } stages { stage('初始化') { steps { script { // 读取项目配置 def config = readYaml text: env.CI_CONFIG env.PROJECT_TYPE = config.project?.type ?: 'java-maven' env.PROJECT_NAME = config.project?.name ?: env.JOB_NAME env.DEPLOY_TARGET = config.deploy?.target ?: 'test' echo "🚀 开始构建项目: ${env.PROJECT_NAME}" echo "📋 项目类型: ${env.PROJECT_TYPE}" echo "🎯 部署目标: ${env.DEPLOY_TARGET}" } // 检出代码 checkout scm script { env.GIT_COMMIT_SHORT = sh( script: "git rev-parse --short HEAD", returnStdout: true ).trim() } } } stage('环境检测') { steps { script { // 调用共享库中的环境检测方法 detectBuildEnvironment() } } } stage('代码分析') { parallel { stage('编译') { steps { script { // 根据项目类型选择构建方法 switch(env.PROJECT_TYPE) { case 'java-maven': buildJavaMaven() break case 'java-gradle': buildJavaGradle() break case 'nodejs': buildNodejs() break case 'python': buildPython() break default: error "不支持的项目类型: ${env.PROJECT_TYPE}" } } } } stage('代码质量检查') { steps { script { // 执行代码质量检查 runCodeQualityCheck() } } } } } stage('测试') { parallel { stage('单元测试') { steps { script { runUnitTests() } } post { always { publishTestResults() publishCoverageReport() } } } stage('集成测试') { when { expression { return fileExists('src/test/java/integration') || fileExists('tests/integration') } } steps { script { runIntegrationTests() } } } } } stage('SonarQube分析') { steps { script { runSonarQubeAnalysis() } } } stage('构建制品') { parallel { stage('打包应用') { steps { script { buildArtifacts() } } post { success { archiveArtifacts artifacts: getArtifactPattern(), fingerprint: true } } } stage('构建镜像') { when { expression { return fileExists('Dockerfile') } } steps { script { buildDockerImage() } } } } } stage('安全扫描') { parallel { stage('依赖扫描') { steps { script { runDependencyCheck() } } } stage('镜像安全扫描') { when { expression { return fileExists('Dockerfile') } } steps { script { runImageSecurityScan() } } } } } stage('部署') { when { anyOf { branch 'main' branch 'develop' branch 'release/*' } } steps { script { // 部署到目标环境 deployToEnvironment(env.DEPLOY_TARGET) } } } stage('部署验证') { when { anyOf { branch 'main' branch 'develop' branch 'release/*' } } steps { script { // 执行部署后验证 runDeploymentValidation() } } } } post { always { script { // 清理工作空间 cleanupWorkspace() } } success { script { sendNotification('success') } } failure { script { sendNotification('failure') } } unstable { script { sendNotification('unstable') } } } }