#!/bin/bash # patch_config.sh - 企业级补丁配置 # ============================================================================== # 基础配置 - 定义补丁的基本信息 # ============================================================================== # 基础配置 PATCH_NAME="upgrade-hotfix" PATCH_VERSION="1.0.0" PATCH_DESCRIPTION="紧急升级修复" PATCH_AUTHOR="devops" PATCH_EMAIL="devops@aigc-quickapp.com" # ============================================================================== # 文件筛选配置 - 定义哪些文件需要被包含或排除 # ============================================================================== ## 包含的文件模式 INCLUDE_PATTERNS=( ".+/.*" # 匹配所有子目录下的文件 ) ## 排除的文件模式 EXCLUDE_PATTERNS=( "*.log" "*.tmp" "*.bak" "*.swp" "*.swx" "^.github/" "/node_modules/*" "/__pycache__/*" # 排除以下一级文件夹 "^.git/" "^cache/" "^temp/" "^tmp/" "^logs/" "^runtime/" "^uploads/" "^attachment/" "^h5/" "^hwapp/" ".DS_Store" "Thumbs.db" ) # ============================================================================== # 文件大小限制 - 定义补丁处理的文件大小范围 # ============================================================================== # 文件大小限制 MAX_FILE_SIZE="20MB" # 最大文件大小 MIN_FILE_SIZE="0KB" # 最小文件大小 # ============================================================================== # 时间过滤 - 定义补丁处理的文件时间范围 # ============================================================================== # 时间过滤 MODIFIED_AFTER="2000-01-01T00:00:00Z" # 仅包含修改时间在该时间之后的文件 CREATED_AFTER="2000-01-01T00:00:00Z" # 仅包含创建时间在该时间之后的文件 # ============================================================================== # 比较方法配置 - 定义补丁处理的比较方式 # ============================================================================== # 比较方法配置 # 比较内容和时间 COMPARISON_METHOD="content" # 比较方法: content, time, both HASH_ALGORITHM="sha256" # 哈希算法,用于文件内容比较 TIME_PRECISION="second" # 时间精度,用于文件时间比较 COMPARE_PERMISSIONS=false # 是否比较文件权限 COMPARE_OWNERSHIP=false # 是否比较文件所有者 IGNORE_LINE_ENDINGS=true # 是否忽略换行符格式不同时(比如Windows的 \r\n vs Linux的 \n) # ============================================================================== # 增量配置 - 定义是否启用增量补丁 # ============================================================================== # 增量配置 INCREMENTAL_ENABLED=true # 是否启用增量补丁 BASE_VERSION="1.0.0" # 基础版本,用于增量比较 DETECT_RENAMES=true # 是否检测文件重命名 BINARY_DIFF=true # 是否启用二进制差异比较 CHUNK_SIZE="8KB" # 二进制差异比较的块大小 # ============================================================================== # 压缩配置 - 定义补丁压缩方式和级别 # ============================================================================== # 压缩配置 COMPRESSION_ENABLED=true # 是否启用压缩 COMPRESSION_ALGORITHM="gzip" # gzip, bzip2, xz COMPRESSION_LEVEL=6 # 压缩级别,1-9 PER_FILE_OPTIMIZATION=true # 是否对每个文件单独压缩 # ============================================================================== # 安全配置 - 定义补丁签名和加密方式 # ============================================================================== # 安全配置 SIGNING_ENABLED=false # 是否启用签名 SIGNING_ALGORITHM="rsa" # 签名算法,rsa, ecdsa PRIVATE_KEY="/etc/patch/keys/private.pem" # 私钥文件路径 PUBLIC_KEY="/etc/patch/keys/public.pem" # 公钥文件路径 ENCRYPTION_ENABLED=false # 是否启用加密 ENCRYPTION_ALGORITHM="aes-256-gcm" # 加密算法,aes-256-gcm, aes-256-cbc ENCRYPTION_KEY="/etc/patch/keys/encryption.key" # 加密密钥文件路径 ENCRYPTION_IV="/etc/patch/keys/encryption.iv" # 加密初始化向量文件路径 # ============================================================================== # 备份配置 - 定义是否启用备份和备份策略 # ============================================================================== # 备份配置 BACKUP_ENABLED=true # 是否启用备份 BACKUP_STRATEGY="full" # 备份策略,full, incremental, differential BACKUP_RETENTION_DAYS=30 # 备份保留天数 # ============================================================================== # 回滚配置 - 定义是否启用自动回滚和回滚策略 # ============================================================================== # 回滚配置 ROLLBACK_ENABLED=true # 是否启用自动回滚 ROLLBACK_AUTO_GENERATE=true # 是否自动生成回滚脚本 ROLLBACK_STRATEGY="snapshot" # 回滚策略,snapshot, restore # ============================================================================== # 通知配置 - 定义是否启用通知和通知渠道 # ============================================================================== # 通知配置 NOTIFICATIONS_ENABLED=false # 是否启用通知 SLACK_WEBHOOK="https://hooks.slack.com/services/..." # Slack Webhook URL EMAIL_RECIPIENTS="devops@company.com,team@company.com" # 邮箱接收人列表 # ============================================================================== # 性能配置 - 定义并行处理和资源限制 # ============================================================================== # 性能配置 PARALLEL_PROCESSING=false # 是否启用并行处理 MAX_WORKERS=4 # 最大工作线程数 MEMORY_LIMIT="2GB" # 内存限制 IO_BUFFER_SIZE="64KB" # IO缓冲区大小 # ============================================================================== # 输出配置 - 定义补丁输出格式和目录 # ============================================================================== # 输出配置 OUTPUT_FORMAT="tar.gz" # 输出格式,tar.gz, zip OUTPUT_DIRECTORY="/opt/patches" # 输出目录 NAMING_PATTERN="patch-{name}-{version}-{timestamp}-{git_commit}.{format}" # 文件名命名模式,包含占位符,举例:patch-app-1.0.0-20250101T000000Z-abc123.tar.gz # ============================================================================== # 日志配置 - 定义日志级别、文件路径和大小 # ============================================================================== # 日志配置 LOG_LEVEL="INFO" # 日志级别,DEBUG, INFO, WARN, ERROR, TRACE; DEBUG 会开启终端调试输出,TRACE 只会开启详细日志输出 LOG_FILE="/var/log/patch_system/patch.log" # 日志文件路径 LOG_MAX_SIZE="10MB" # 日志文件最大大小 LOG_BACKUP_COUNT=10 # 日志文件备份数量 # ============================================================================== # 长路径支持 - 定义是否启用长路径支持 # ============================================================================== # 长路径支持 LONG_PATH_SUPPORT=true # 是否启用长路径支持 TAR_OPTIONS="--force-local" # tar命令选项,--force-local 强制使用本地文件系统