Apache HugeGraph 发布包的自动化验证脚本。
validate-release.sh 脚本对 Apache HugeGraph 发布包进行全面验证,自动执行 Apache 发布政策 的核心要求。
LICENSE、NOTICE<revision> 属性与预期发布版本匹配脚本会自动检查所有依赖项,如果缺少任何内容会提供安装说明。
# 查看帮助信息 ./validate-release.sh --help # 从 Apache SVN 验证(自动下载发布文件) ./validate-release.sh <版本号> <apache-用户名> # 示例 ./validate-release.sh 1.7.0 pengjunzhi
# 从本地目录验证(如果已经下载了文件) ./validate-release.sh <版本号> <apache-用户名> <本地路径> # 示例 ./validate-release.sh 1.7.0 pengjunzhi /path/to/downloaded/dist # 指定 Java 版本(默认:11) ./validate-release.sh <版本号> <apache-用户名> <本地路径> <java-版本> # 示例 - 使用 Java 11 ./validate-release.sh 1.7.0 pengjunzhi /path/to/dist 11 # 示例 - SVN 模式使用 Java 11 ./validate-release.sh 1.7.0 pengjunzhi "" 11 # 非交互模式(用于 CI/CD) ./validate-release.sh --non-interactive 1.7.0 pengjunzhi
--help, -h - 显示帮助信息并退出--version, -v - 显示脚本版本并退出--non-interactive - 无提示运行(用于 CI/CD 管道)deploy-release.sh(本地快速拉起)该脚本用于从 downloads.apache.org/hugegraph 下载对应版本并快速启动 server/hubble。
./deploy-release.sh 1.7.0
脚本执行以下 9 个验证步骤:
apache-hugegraph-<ver>*)LICENSE、NOTICE)<revision> 属性版本一致性(跳过 Python 项目)脚本提供实时进度信息:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Apache HugeGraph Release Validation v2.2.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Version: 1.7.0
User: pengjunzhi
Java: 11
Mode: SVN Download
Log: logs/validate-1.7.0-20251115-021742.log
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Step [1/9]: Check Dependencies
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ svn: version 1.14.1
✓ gpg: gpg (GnuPG) 2.2.41
✓ java: 11.0.21
✓ mvn: Apache Maven 3.9.5
...
所有输出都保存到 logs/validate-<version>-<timestamp>.log 以供后续查看。
验证结束时,会显示一个全面的摘要,包含执行时间和详细的错误/警告信息:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
VALIDATION SUMMARY
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Execution Time: 6m 34s
Total Checks: 139
Passed: 134
Failed: 3
Warnings: 2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ERRORS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[E1] [Step 8: Validate Binary Packages] [xxxx] contains 1 prohibited ASF Category X license(s):
xxxxx
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
WARNINGS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
xxxx
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
VALIDATION FAILED
Log file: logs/validate-1.7.0-20251115-021742.log
脚本会严格检查以下 ASF Category X 许可证,发现后会报错并提供详细信息:
错误报告格式:
Package 'xxx.tar.gz' contains 1 prohibited ASF Category X license(s):
- File: licenses/LICENSE-json.txt
License: JSON.org
Context: Copyright (c) 2002 JSON.org
以下许可证会触发警告,提醒检查是否在 LICENSE 文件中正确记录:
警告报告格式(简洁):
Package 'xxx.tar.gz' contains 2 ASF Category B license(s) - please verify documentation
脚本会检查所有源代码文件(Java、Shell、Python、Go、JavaScript、TypeScript、C/C++、Scala、Groovy、Rust、Kotlin、Proto 等)是否包含 ASF 许可证头。
第三方代码处理:
脚本使用**“继续并报告”**方式:
每个错误和警告都包含:
这允许你一次看到所有问题,并能快速定位到具体的失败点。
<revision> 版本检查cd computer && mvn package)如果看到 Java 版本错误:
# 检查你的 Java 版本 java -version # 使用 JAVA_HOME 指定 Java 11 export JAVA_HOME=/path/to/java11 export PATH=$JAVA_HOME/bin:$PATH
如果 GPG 密钥导入失败:
# 手动下载并导入 KEYS curl https://downloads.apache.org/hugegraph/KEYS > KEYS gpg --import KEYS # 信任特定密钥 gpg --edit-key <user-email> # 在 GPG 提示符中,输入: trust, 然后 5, 然后 y, 然后 quit # 或者信任所有导入的密钥 for key in $(gpg --no-tty --list-keys --with-colons | awk -F: '/^pub/ {print $5}'); do echo -e "5\ny\n" | gpg --batch --command-fd 0 --edit-key "$key" trust done
确保脚本可执行:
chmod +x validate-release.sh
如果合法的第三方代码被标记为缺少许可证头:
LICENSE 文件中记录了该文件示例 LICENSE 文件条目:
This product bundles ThirdParty.java from XYZ project, which is available under a "MIT License". For details, see licenses/LICENSE-mit.txt
如果需要更多调试信息:
# 查看完整日志 cat logs/validate-<version>-<timestamp>.log # 搜索特定错误 grep "ERROR" logs/validate-*.log # 查看特定步骤 grep "Step \[5/9\]" logs/validate-*.log
如果发现问题或有改进建议,请: