This commit is contained in:
gitadmin
2026-01-14 21:31:13 +08:00
parent 11950d89af
commit 43a1a8831b
15 changed files with 2836 additions and 471 deletions
+596
View File
@@ -0,0 +1,596 @@
# ==============================================================================
# 通用配置块 - 包含所有环境共享的配置项
# ==============================================================================
common:
# 镜像仓库配置 - 定义不同的容器镜像仓库
registrys:
# 默认仓库配置 - 内部私有仓库
default:
# 内部私有仓库地址 - 企业内部部署的Harbor或Registry地址
registry: "192.168.10.102:8001"
# Jenkins凭证ID - 用于仓库认证的凭据ID
registryCredential: "xiaomayi-hub-credentials"
# 仓库中的项目/命名空间名称 - 镜像存放的项目空间
registryProject: "xiaomayi"
# 仓库类型 - 仓库的技术类型(harbor、acr、dockerhub等)
registryType: "harbor"
# 应用部署基础镜像
registryImage: "python:3.9.13-rocky8-dos"
# 阿里云ACR仓库配置 - 云上仓库,用于生产环境或特定场景
aliyun:
# 阿里云VPC内网地址 - 阿里云容器镜像服务的VPC内网地址,网络性能更优
registry: "registry-vpc.cn-hangzhou.aliyuncs.com"
# 阿里云仓库认证凭证 - 阿里云访问凭据的Jenkins ID
registryCredential: "aliyun-hub-credentials"
# 阿里云仓库项目名称 - 阿里云ACR中的命名空间
registryProject: "xiaomayi-base"
# 仓库类型 - 阿里云容器镜像服务
registryType: "acr"
# 应用部署基础镜像
registryImage: "python:3.9.13-rocky8-dos"
# Docker Hub配置 - 官方Docker仓库,用于公开镜像
dockerhub:
# Docker Hub地址 - 官方Docker仓库地址
registry: "index.docker.io"
# Docker Hub认证凭证 - Docker Hub账号的Jenkins凭据ID
registryCredential: "dockerhub-credentials"
# Docker Hub项目名称 - 用户名或组织名
registryProject: "xiaomayi-base"
# 仓库类型 - 官方Docker仓库
registryType: "dockerhub"
# 应用部署基础镜像
registryImage: "python:3.9.13-rocky8-dos"
# 钉钉消息
dingtalk:
# 凭证ID - Jenkins中存储的DingTalk认证凭据ID
credentialsId: "jenkins-dingtalk-robot"
# 通知配置 - 构建结果通知设置
notification:
# 构建成功通知配置
success:
# 通知渠道
channels:
# 邮件通知
email: ["xiaomayicloud@163.com"]
# 短信通知
#sms: ["15295504151"]
# 钉钉通知
dingtalk: true
# Slack通知
slack: false
# 构建失败通知配置
failure:
# 通知渠道
channels:
# 邮件通知
email: ["xiaomayicloud@163.com"]
# 短信通知
# sms: ["15295504151"]
# 钉钉通知
dingtalk: true
# Slack通知
slack: false
# 构建被中止通知
aborted:
# 通知渠道
channels:
# 邮件通知
email: ["xiaomayicloud@163.com"]
# 短信通知
#sms: ["15295504151"]
# 钉钉通知
dingtalk: true
# Slack通知
slack: false
# 构建不稳定通知配置
unstable:
# 通知渠道
channels:
# 邮件通知
email: ["xiaomayicloud@163.com"]
# 钉钉通知
dingtalk: true
# 构建策略 - 构建过程的策略配置
buildStrategy:
retryCount: 3 # 构建失败重试次数
timeoutMinutes: 60 # 构建超时时间(分钟)
cleanupWorkspace: true # 构建完成后是否清理工作空间
enableCaching: true # 是否启用Docker构建缓存
# 部署相关配置
deployScript: "deploy_env.sh" # 部署执行的shell脚本文件名
deployPath: "/opt/apps" # 目标服务器上的应用部署根路径
# ==============================================================================
# 短信服务配置
# 描述: 定义短信通知服务的相关配置,支持多种短信服务商和模板配置
# ==============================================================================
# 短信服务提供商配置
sms:
# 短信服务商 - 指定使用的短信服务平台
# 可选值:
# - 'aliyun': 阿里云短信服务(推荐)
# - 'tencent': 腾讯云短信服务
# - 'yunpian': 云片短信服务
provider: 'aliyun'
# Jenkins凭据ID - 存储短信服务认证信息的Jenkins凭据标识
# 凭据内容格式建议为JSON或key=value格式,包含accessKeyId/accessKeySecret等认证信息
credentialsId: 'jenkins-aliyun-credentials'
# 默认短信签名 - 在短信开头显示的签名内容
# 需要先在短信服务平台申请并通过审核的签名
signName: '小蚂蚁云'
# ==============================================================================
# 短信模板配置 - 定义不同场景下的短信模板
# 每个模板需要先在短信服务平台创建并通过审核
# ==============================================================================
templates:
# --------------------------------------------------------------------------
# 构建成功短信模板配置
# 用途: 当构建任务成功完成时发送的通知短信
# --------------------------------------------------------------------------
build_success:
# 模板代码 - 短信服务平台审核通过的模板ID
# 阿里云: SMS_开头的一串数字字母组合
# 腾讯云: 纯数字模板ID
# 云片: 长整型数字模板ID
templateCode: 'SMS_231440070'
# 模板签名 - 可覆盖默认签名,使用特定的签名
# 如果未设置,则使用顶层的默认签名
signName: '小蚂蚁云'
# 模板变量说明(在短信平台配置时定义):
# 通常包含: project, branch, status, duration, time 等变量
# 示例模板内容: "您的项目${project}构建${status},耗时${duration},时间${time}"
# --------------------------------------------------------------------------
# 构建失败短信模板配置
# 用途: 当构建任务失败时发送的告警短信
# --------------------------------------------------------------------------
build_failure:
# 模板代码 - 失败通知的专用模板ID
templateCode: 'SMS_231440070'
# 模板签名 - 失败通知使用的签名
signName: '小蚂蚁云'
# 模板变量说明:
# 通常包含: project, branch, status, duration, error, time 等变量
# 示例模板内容: "警告:项目${project}构建${status},错误:${error},时间${time}"
# --------------------------------------------------------------------------
# 部署通知短信模板(示例配置,可根据需要启用)
# 用途: 当应用部署完成时发送的通知短信
# --------------------------------------------------------------------------
# deployment:
# templateCode: 'SMS_DEPLOY_001'
# signName: '小蚂蚁云'
# --------------------------------------------------------------------------
# 系统告警短信模板(示例配置,可根据需要启用)
# 用途: 当系统发生异常或达到告警阈值时发送的短信
# --------------------------------------------------------------------------
# alert:
# templateCode: 'SMS_ALERT_001'
# signName: '小蚂蚁云'
# 环境配置文件 - 定义不同环境的特定配置
profiles:
# --------------------------------------------------------------------------
# 开发环境配置 - 用于开发测试,部署频率高,配置相对宽松
# --------------------------------------------------------------------------
dev:
# 容器镜像
registry: "default"
# 服务器列表 - 部署目标服务器
servers:
- serverIP: "esxi@192.168.10.109" # 服务器SSH连接地址(用户名@IP)
serverPort: 22 # SSH端口号
serverName: "S110服务器" # 服务器标识名称,用于日志和通知
sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID
weight: 50 # 负载权重(0-100),用于流量控制
isPrimary: true # 主节点标识,优先部署
priority: 1 # 部署优先级(数字越小优先级越高)
- serverIP: "esxi@192.168.10.109" # 服务器SSH连接地址(用户名@IP)
serverPort: 22 # SSH端口号
serverName: "S202服务器" # 服务器标识名称,用于日志和通知
sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID
weight: 50 # 负载权重(0-100),用于流量控制
isPrimary: false # 主节点标识,优先部署
priority: 2 # 部署优先级(数字越小优先级越高)
# 环境变量 - 部署时注入到容器中的环境变量
envVars:
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.109" # 服务器SSH连接地址(用户名@IP)
serverPort: 22 # SSH端口号
serverName: "S110服务器" # 服务器标识名称,用于日志和通知
sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID
weight: 50 # 负载权重(0-100),用于流量控制
isPrimary: true # 主节点标识,优先部署
priority: 1 # 部署优先级(数字越小优先级越高)
- serverIP: "esxi@192.168.10.109" # 服务器SSH连接地址(用户名@IP)
serverPort: 22 # SSH端口号
serverName: "S110服务器" # 服务器标识名称,用于日志和通知
sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID
weight: 50 # 负载权重(0-100),用于流量控制
isPrimary: false # 主节点标识,优先部署
priority: 2 # 部署优先级(数字越小优先级越高)
# 环境变量 - 部署时注入到容器中的环境变量
envVars:
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.109" # 服务器SSH连接地址(用户名@IP)
serverPort: 22 # SSH端口号
serverName: "S110服务器" # 服务器标识名称,用于日志和通知
sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID
weight: 50 # 负载权重(0-100),用于流量控制
isPrimary: true # 主节点标识,优先部署
priority: 1 # 部署优先级(数字越小优先级越高)
- serverIP: "esxi@192.168.10.109" # 服务器SSH连接地址(用户名@IP)
serverPort: 22 # SSH端口号
serverName: "S110服务器" # 服务器标识名称,用于日志和通知
sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID
weight: 50 # 负载权重(0-100),用于流量控制
isPrimary: false # 主节点标识,优先部署
priority: 2 # 部署优先级(数字越小优先级越高)
# 环境变量 - 部署时注入到容器中的环境变量
envVars:
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@192.168.10.109" # 服务器SSH连接地址(用户名@IP)
serverPort: 22 # SSH端口号
serverName: "S210服务器" # 服务器标识名称,用于日志和通知
sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID
weight: 50 # 负载权重(0-100),用于流量控制
isPrimary: true # 主节点标识,优先部署
priority: 1 # 部署优先级(数字越小优先级越高)
- serverIP: "esxi@192.168.10.109" # 服务器SSH连接地址(用户名@IP)
serverPort: 22 # SSH端口号
serverName: "S220服务器" # 服务器标识名称,用于日志和通知
sshKey: "jenkins-ssh-207" # Jenkins SSH密钥凭证ID
weight: 50 # 负载权重(0-100),用于流量控制
isPrimary: false # 主节点标识,优先部署
priority: 2 # 部署优先级(数字越小优先级越高)
# 环境变量 - 部署时注入到容器中的环境变量
envVars:
TZ: "Asia/Shanghai"
# 部署策略配置
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分钟)
# ==============================================================================
# 分支构建配置 - 定义不同Git分支的构建参数
# ==============================================================================
branchConfig:
# 开发分支配置
dev:
# Jenkins代理
jenkinsAgent: "S204-docker"
# Docker镜像构建配置
docker:
dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件
buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像
# 测试分支配置
test:
# Jenkins代理
jenkinsAgent: "S204-docker"
# Docker镜像构建配置
docker:
dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件
buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像
# 主分支配置(生产环境)
master:
# Jenkins代理
jenkinsAgent: "S204-docker"
# Docker镜像构建配置
docker:
dockerFile: ".jenkins/Dockerfile" # 使用的Dockerfile文件
buildOptions: "--no-cache --pull" # Docker构建选项:禁用缓存、总是拉取最新基础镜像
# ==============================================================================
# 服务配置 - 定义每个微服务的特定配置
# ==============================================================================
serviceConfig:
django_layui2:
programLang: "python"
programLangVersion: "3.9.13"
containerName: "django_layui2"
packageName: "django_layui2"
servicePath: "."
pyFile: "manage.py"
port: "8010"
deployServer: "servers[0]"
composeFile: "python-docker-compose"
django_elevue:
programLang: "python"
programLangVersion: "3.9.13"
containerName: "django_elevue"
packageName: "django_elevue"
servicePath: "."
pyFile: "manage"
port: "8013"
deployServer: "servers[0]"
composeFile: "python-docker-compose"
django_elevue_ui:
programLang: "nodejs"
programLangVersion: "22.19.0"
deployMethod: "static"
projectName: "django_elevue"
containerName: "django_elevue"
packageName: "django_elevue.tar.gz"
servicePath: "evui"
port: "8001"
deployServer: "servers[0]"
django_antdvue:
programLang: "python"
programLangVersion: "3.9.13"
containerName: "django_antdvue"
packageName: "django_antdvue"
servicePath: "."
pyFile: "manage"
port: "8016"
deployServer: "servers[0]"
composeFile: "python-docker-compose"
django_antdvue_ui:
programLang: "nodejs"
programLangVersion: "22.19.0"
deployMethod: "static"
projectName: "django_antdvue"
containerName: "django_antdvue"
packageName: "django_antdvue.tar.gz"
servicePath: "avui"
port: "8001"
deployServer: "servers[0]"
flask_layui:
programLang: "python"
programLangVersion: "3.9.13"
containerName: "flask_layui"
packageName: "flask_layui"
servicePath: "."
pyFile: "app"
port: "8020"
deployServer: "servers[0]"
composeFile: "python-docker-compose"
flask_elevue:
programLang: "python"
programLangVersion: "3.9.13"
containerName: "flask_elevue"
packageName: "flask_elevue"
servicePath: "."
pyFile: "app"
port: "8023"
deployServer: "servers[0]"
composeFile: "python-docker-compose"
flask_elevue_ui:
programLang: "nodejs"
programLangVersion: "22.19.0"
deployMethod: "static"
projectName: "flask_elevue"
containerName: "flask_elevue"
packageName: "flask_elevue.tar.gz"
servicePath: "evui"
port: "8001"
deployServer: "servers[0]"
flask_antdvue:
programLang: "python"
programLangVersion: "3.9.13"
containerName: "flask_antdvue"
packageName: "flask_antdvue"
servicePath: "."
pyFile: "app"
port: "8026"
deployServer: "servers[0]"
composeFile: "python-docker-compose"
flask_antdvue_ui:
programLang: "nodejs"
programLangVersion: "22.19.0"
deployMethod: "static"
projectName: "flask_antdvue"
containerName: "flask_antdvue"
packageName: "flask_antdvue.tar.gz"
servicePath: "avui"
port: "8001"
deployServer: "servers[0]"
fastapi_layui:
programLang: "python"
programLangVersion: "3.9.13"
containerName: "fastapi_layui"
packageName: "fastapi_layui"
servicePath: "."
pyFile: "main"
port: "8030"
deployServer: "servers[0]"
composeFile: "python-docker-compose"
fastapi_elevue:
programLang: "python"
programLangVersion: "3.9.13"
containerName: "fastapi_elevue"
packageName: "fastapi_elevue"
servicePath: "."
pyFile: "main"
port: "8033"
deployServer: "servers[0]"
composeFile: "python-docker-compose"
fastapi_elevue_ui:
programLang: "nodejs"
programLangVersion: "22.19.0"
deployMethod: "static"
projectName: "fastapi_elevue"
containerName: "fastapi_elevue"
packageName: "fastapi_elevue.tar.gz"
servicePath: "evui"
port: "8001"
deployServer: "servers[0]"
fastapi_antdvue:
programLang: "python"
programLangVersion: "3.9.13"
containerName: "fastapi_antdvue"
packageName: "fastapi_antdvue"
servicePath: "."
pyFile: "main"
port: "8036"
deployServer: "servers[0]"
composeFile: "python-docker-compose"
fastapi_antdvue_ui:
programLang: "nodejs"
programLangVersion: "22.19.0"
deployMethod: "static"
projectName: "fastapi_antdvue"
containerName: "fastapi_antdvue"
packageName: "fastapi_antdvue.tar.gz"
servicePath: "avui"
port: "8001"
deployServer: "servers[0]"
tornado_layui:
programLang: "python"
programLangVersion: "3.9.13"
containerName: "tornado_layui"
packageName: "tornado_layui"
servicePath: "."
pyFile: "app"
port: "8040"
deployServer: "servers[0]"
composeFile: "python-docker-compose"
tornado_elevue:
programLang: "python"
programLangVersion: "3.9.13"
containerName: "tornado_elevue"
packageName: "tornado_elevue"
servicePath: "."
pyFile: "app"
port: "8043"
deployServer: "servers[0]"
composeFile: "python-docker-compose"
tornado_elevue_ui:
programLang: "nodejs"
programLangVersion: "22.19.0"
deployMethod: "static"
projectName: "tornado_elevue"
containerName: "tornado_elevue"
packageName: "tornado_elevue.tar.gz"
servicePath: "evui"
port: "8001"
deployServer: "servers[0]"
tornado_antdvue:
programLang: "python"
programLangVersion: "3.9.13"
containerName: "tornado_antdvue"
packageName: "tornado_antdvue"
servicePath: "."
pyFile: "app"
port: "8046"
deployServer: "servers[0]"
composeFile: "python-docker-compose"
tornado_antdvue_ui:
programLang: "nodejs"
programLangVersion: "22.19.0"
deployMethod: "static"
projectName: "tornado_antdvue"
containerName: "tornado_antdvue"
packageName: "tornado_antdvue.tar.gz"
servicePath: "avui"
port: "8001"
deployServer: "servers[0]"