# ============================================================================== # 通用配置块 - 包含所有环境共享的配置项 # ============================================================================== common: # 镜像仓库配置 - 定义不同的容器镜像仓库 registrys: # 默认仓库配置 - 内部私有仓库 default: # 内部私有仓库地址 registry: "192.168.10.102:8001" # Jenkins凭证ID,用于仓库认证 registryCredential: "xiaomayi-hub-credentials" # 仓库中的项目/命名空间名称 registryProject: "xiaomayi" # 应用部署基础镜像 registryImage: "jdk:17.0.16-ubuntu22-dos" # 阿里云ACR仓库配置 - 云上仓库,用于生产环境或特定场景 acr: # 阿里云VPC内网地址,网络性能更优 registry: "registry-vpc.cn-hangzhou.aliyuncs.com" # 阿里云仓库认证凭证 registryCredential: "aliyun-hub-credentials" # 阿里云仓库项目名称 registryProject: "xiaomayi" # 应用部署基础镜像 registryImage: "jdk:17.0.16-ubuntu22-dos" # 部署相关配置 deployScript: "deploy.sh" # 部署执行的shell脚本文件名 deployPath: "/usr/local/docker/xiaomayi-web/" # 目标服务器上的应用部署根路径 # 环境配置文件 - 定义不同环境的特定配置 profiles: # -------------------------------------------------------------------------- # 开发环境配置 - 用于开发测试,部署频率高,配置相对宽松 # -------------------------------------------------------------------------- dev: # 容器镜像 registry: "default" # 服务器列表 - 部署目标服务器 servers: - serverIP: "esxi@192.168.10.201" # 服务器SSH连接地址(用户名@IP) serverPort: 22 # SSH端口号 serverName: "S201服务器" # 服务器标识名称,用于日志和通知 sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID weight: 50 # 负载权重(0-100),用于流量控制 isPrimary: true # 主节点标识,优先部署 priority: 1 # 部署优先级(数字越小优先级越高) - serverIP: "esxi@192.168.10.202" # 服务器SSH连接地址(用户名@IP) serverPort: 22 # SSH端口号 serverName: "S202服务器" # 服务器标识名称,用于日志和通知 sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID weight: 50 # 负载权重(0-100),用于流量控制 isPrimary: false # 主节点标识,优先部署 priority: 2 # 部署优先级(数字越小优先级越高) # 环境变量 - 部署时注入到容器中的环境变量 envVars: SPRING_PROFILES_ACTIVE: "dev" # Spring Boot激活的配置文件环境 JAVA_OPTS: "-Xms512m -Xmx512m" # JVM内存参数:初始堆512MB,最大堆512MB LOG_LEVEL: "INFO" # 日志级别:INFO TZ: "Asia/Shanghai" # 时区设置:亚洲/上海 # 部署策略配置 deploymentStrategy: "rolling" # 部署策略:rolling-滚动部署 deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) maxParallel: 2 # 最大并行部署服务器数量 retryAttempts: 3 # 部署失败重试次数 # 健康检查配置 healthCheckPath: "/actuator/health" # 健康检查端点 healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) healthCheckInterval: 10 # 健康检查间隔(10秒) successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) # -------------------------------------------------------------------------- # 测试环境配置 - 用于集成测试,配置接近生产环境 # -------------------------------------------------------------------------- test: # 容器镜像 registry: "default" # 服务器列表 - 部署目标服务器 servers: - serverIP: "esxi@192.168.10.201" # 服务器SSH连接地址(用户名@IP) serverPort: 22 # SSH端口号 serverName: "S201服务器" # 服务器标识名称,用于日志和通知 sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID weight: 50 # 负载权重(0-100),用于流量控制 isPrimary: true # 主节点标识,优先部署 priority: 1 # 部署优先级(数字越小优先级越高) - serverIP: "esxi@192.168.10.202" # 服务器SSH连接地址(用户名@IP) serverPort: 22 # SSH端口号 serverName: "S201服务器" # 服务器标识名称,用于日志和通知 sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID weight: 50 # 负载权重(0-100),用于流量控制 isPrimary: false # 主节点标识,优先部署 priority: 2 # 部署优先级(数字越小优先级越高) # 环境变量 - 部署时注入到容器中的环境变量 envVars: SPRING_PROFILES_ACTIVE: "test" # 测试环境配置文件 JAVA_OPTS: "-Xms1g -Xmx1g" # JVM内存:1GB堆内存 LOG_LEVEL: "INFO" TZ: "Asia/Shanghai" # 部署策略配置 deploymentStrategy: "rolling" deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) maxParallel: 1 # 测试环境串行部署,便于问题排查 retryAttempts: 2 # 健康检查配置 healthCheckPath: "/actuator/health" # 健康检查端点 healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) healthCheckInterval: 10 # 健康检查间隔(10秒) successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) # -------------------------------------------------------------------------- # 用户验收测试环境配置 - 模拟生产环境,用于最终验收测试 # -------------------------------------------------------------------------- uat: # 容器镜像 registry: "default" # 服务器列表 - 部署目标服务器 servers: - serverIP: "esxi@192.168.10.201" # 服务器SSH连接地址(用户名@IP) serverPort: 22 # SSH端口号 serverName: "S201服务器" # 服务器标识名称,用于日志和通知 sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID weight: 50 # 负载权重(0-100),用于流量控制 isPrimary: true # 主节点标识,优先部署 priority: 1 # 部署优先级(数字越小优先级越高) - serverIP: "esxi@192.168.10.202" # 服务器SSH连接地址(用户名@IP) serverPort: 22 # SSH端口号 serverName: "S201服务器" # 服务器标识名称,用于日志和通知 sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID weight: 50 # 负载权重(0-100),用于流量控制 isPrimary: false # 主节点标识,优先部署 priority: 2 # 部署优先级(数字越小优先级越高) # 环境变量 - 部署时注入到容器中的环境变量 envVars: SPRING_PROFILES_ACTIVE: "uat" # UAT环境配置文件 JAVA_OPTS: "-Xms2g -Xmx2g" # JVM内存:2GB堆内存 LOG_LEVEL: "INFO" TZ: "Asia/Shanghai" # 部署策略配置 deploymentStrategy: "blue-green" # 蓝绿部署策略,减少停机时间 deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) maxParallel: 1 retryAttempts: 1 # UAT环境不重试,立即反馈问题 # 健康检查配置 healthCheckPath: "/actuator/health" # 健康检查端点 healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) healthCheckInterval: 10 # 健康检查间隔(10秒) successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) # -------------------------------------------------------------------------- # 生产环境配置 - 线上真实环境,配置最为严格 # -------------------------------------------------------------------------- prod: # 容器镜像 registry: "default" # 服务器列表 - 部署目标服务器 servers: - serverIP: "esxi@124.222.176.210" # 服务器SSH连接地址(用户名@IP) serverPort: 12422 # SSH端口号 serverName: "S210服务器" # 服务器标识名称,用于日志和通知 sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID weight: 50 # 负载权重(0-100),用于流量控制 isPrimary: true # 主节点标识,优先部署 priority: 1 # 部署优先级(数字越小优先级越高) - serverIP: "esxi@124.222.176.210" # 服务器SSH连接地址(用户名@IP) serverPort: 12422 # SSH端口号 serverName: "S220服务器" # 服务器标识名称,用于日志和通知 sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID weight: 50 # 负载权重(0-100),用于流量控制 isPrimary: false # 主节点标识,优先部署 priority: 2 # 部署优先级(数字越小优先级越高) # 环境变量 - 部署时注入到容器中的环境变量 envVars: SPRING_PROFILES_ACTIVE: "prod" # 生产环境配置文件 JAVA_OPTS: "-Xms4g -Xmx4g" # JVM内存:4GB堆内存 LOG_LEVEL: "WARN" # 生产环境使用WARN级别日志,减少日志量 TZ: "Asia/Shanghai" GC_OPTS: "-XX:+UseG1GC -XX:MaxGCPauseMillis=200" # GC调优参数:使用G1垃圾回收器 # 部署策略配置 deploymentStrategy: "canary" # 金丝雀部署策略,逐步发布降低风险 deploymentTimeout: 3600 # 整体部署超时时间(3600秒=1小时) maxParallel: 1 # 生产环境单台串行部署,确保稳定性 retryAttempts: 3 # 部署失败重试次数 canaryPercentage: 25 # 首批金丝雀发布比例(25%) # 健康检查配置 healthCheckEnabled: true # 启用健康检查 healthCheckPath: "/actuator/health" # 健康检查端点 healthCheckTimeout: 180 # 健康检查超时时间(180秒=3分钟) healthCheckRetries: 5 # 健康检查5次重试 healthCheckInterval: 10 # 健康检查间隔(10秒) successThreshold: 3 # 成功阈值(连续3次检查成功才算健康) # 回滚配置 rollbackEnabled: true # 启用自动回滚 rollbackOnFailure: true # 部署失败时自动回滚 rollbackTimeout: 300 # 回滚操作超时时间(300秒=5分钟) # 通知配置 - 生产环境部署状态通知 notifications: slackChannel: "#prod-deployments" # Slack通知频道 email: "xiaomayicloud@163.com" # 主要邮件通知地址 onSuccess: true # 成功时发送通知 onFailure: true # 失败时发送通知 onStart: true # 开始部署时发送通知 recipients: # 额外通知人员邮件列表 - "devops@xiaomayi.com" - "product-manager@xiaomayi.com" # ============================================================================== # 分支构建配置 - 定义不同Git分支的构建参数 # ============================================================================== branchConfig: # 开发分支配置 dev: # Jenkins代理 jenkinsAgent: "S205-docker" # Maven构建配置 - Java应用编译和打包 maven: mavenSet: "nexus-maven-dev" # Maven配置集名称 skipTests: true # 生产构建不跳过测试 goals: "clean package" # Maven执行目标 options: "" # Maven选项参数 # Docker镜像构建配置 docker: dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件 buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像 # 测试分支配置 test: # Jenkins代理 jenkinsAgent: "S205-docker" # Maven构建配置 - Java应用编译和打包 maven: mavenSet: "nexus-maven-test" # Maven配置集名称 skipTests: true # 生产构建不跳过测试 goals: "clean package" # Maven执行目标 options: "" # Maven选项参数 # Docker镜像构建配置 docker: dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件 buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像 # 主分支配置(生产环境) master: # Jenkins代理 jenkinsAgent: "S205-docker" # Maven构建配置 - Java应用编译和打包 maven: mavenSet: "nexus-maven-dev" # Maven配置集名称 skipTests: false # 生产构建不跳过测试 goals: "clean package" # Maven执行目标 options: "" # Maven选项参数 # Docker镜像构建配置 docker: dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件 buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像 # ============================================================================== # 服务配置 - 定义每个微服务的特定配置 # ============================================================================== serviceConfig: # 后台系统 xiaomayi-admin: programLang: "java" programLangVersion: "17.0.16" containerName: "xiaomayi-admin" pomFilePath: "pom.xml" servicePath: "xiaomayi-modules/xiaomayi-admin" jarName: "xiaomayi-admin.jar" port: "8081" javaOpts: "-server -Xms256m -Xmx2g -Xss1m" deployServer: "servers[0]" composeFile: "docker-compose" xiaomayi-admin-ui: programLang: "nodejs" programLangVersion: "22.19.0" deployMethod: "static" projectName: "xiaomayi-admin-ui" packageName: "xiaomayi-admin-ui.tar.gz" servicePath: "xiaomayi-ui" containerName: "xiaomayi-admin-ui" port: "8001" deployServer: "servers[0]" composeFile: "docker-compose" # 前台网站 xiaomayi-web: programLang: "java" programLangVersion: "17.0.16" containerName: "xiaomayi-web2" pomFilePath: "pom.xml" servicePath: "xiaomayi-modules/xiaomayi-web" jarName: "xiaomayi-web.jar" port: "8082" javaOpts: "-server -Xms256m -Xmx2g -Xss1m" deployServer: "servers[0]" composeFile: "docker-compose"