合并受阻
Welcome To openEuler Community
Hey @Qservice , thanks for your contribution to the community.
Bot Usage Manual
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here . That means you can comment below every pull request or issue to trigger Bot Commands.
Contact Guide
If you have any questions, please contact the SIG: Networking ,
and any of the maintainers: @Apricity_HW, @MrRlu, @robert-xingwang, @sunsuwan ,
and any of the committers: @jiangheng12138, @zhongxuan2 .


当前仓库存在以下 保护分支 :
| Protected Branch | Version | Release |
|---|---|---|
| master | 0.12.2 | 1 |
| openEuler-24.03-LTS-Next | 0.10.5 | 14 |
| openEuler-24.03-LTS-SP1 | 0.10.5 | 14 |
| openEuler-24.03-LTS-SP3 | 0.10.5 | 14 |
| openEuler-24.03-LTS-SP4 | 0.10.5 | 14 |
| openEuler-22.03-LTS-SP4 | 0.9.6 | 20 |
| openEuler-20.03-LTS-SP4 | 0.9.4 | 20 |
| openEuler-26.09-DevStation | 0.12.2 | 1 |
| openEuler-26.09 | 0.11.3 | 3 |
| openEuler1.0-base | 0.8.3 | 7 |
| openEuler1.0 | 0.8.3 | 7 |
评论 /sync <branch1> <branch2> ... 可将当前 PR 修改同步到其它分支(创建同步 PR):
a) 如果当前 PR 是 Open 状态,同步操作将延迟到 PR 被合并时执行
b) 如果当前 PR 已经 Merged,将立即执行同步操作
注意:
- /sync 命令可以指定同步到多个分支,仅最后一个 /sync 命令生效
- 如果创建的同步 PR 不正确,可通过向同步 PR 的源分支提交轻量级 PR 完善,或使用 /close 命令关闭


门禁正在运行, 您可以通过以下链接查看实时门禁检查结果.
若您对门禁结果含义不清晰或者遇到问题不知如何解决,可参考门禁指导手册
门禁入口及编码规范检查: multiarch/src-openeuler/trigger/libssh/85/console


x86_64架构构建及构建后检查:multiarch/src-openeuler/x86-64/libssh/85/console


aarch64架构构建及构建后检查:multiarch/src-openeuler/aarch64/libssh/85/console


如下为接口变更检查结果,目标分支为master,请PR提交者check差异信息
| Arch Name | Check Items | Rpm Name | Check Result | Build Details |
|---|---|---|---|---|
| compare_package(x86_64) | add_rpms | ✅SUCCESS | #85 | |
| delete_rpms | ✅SUCCESS | |||
| rpm_abi | ✅SUCCESS | |||
| rpm_files | ✅SUCCESS | |||
| rpm_header | ✅SUCCESS | |||
| rpm_lib | ✅SUCCESS | |||
| rpm_provides | ✅SUCCESS | |||
| rpm_requires | ✅SUCCESS | |||
| rpm_symbol | ✅SUCCESS | |||
| compare_package(aarch64) | add_rpms | ✅SUCCESS | #85 | |
| delete_rpms | ✅SUCCESS | |||
| rpm_abi | ✅SUCCESS | |||
| rpm_files | ✅SUCCESS | |||
| rpm_header | ✅SUCCESS | |||
| rpm_lib | ✅SUCCESS | |||
| rpm_provides | ✅SUCCESS | |||
| rpm_requires | ✅SUCCESS | |||
| rpm_symbol | ✅SUCCESS |


门禁正在运行, 您可以通过以下链接查看实时门禁检查结果.
若您对门禁结果含义不清晰或者遇到问题不知如何解决,可参考门禁指导手册
门禁入口及编码规范检查: multiarch/src-openeuler/trigger/libssh/86/console


x86_64架构构建及构建后检查:multiarch/src-openeuler/x86-64/libssh/86/console


aarch64架构构建及构建后检查:multiarch/src-openeuler/aarch64/libssh/86/console


| Check Name | Build Result | 详情 | Build Details | |
|---|---|---|---|---|
| check_binary_file | ✅SUCCESS | #86 | ||
| check_lfsconfig | :ballot_box_with_check:EXCLUDE | |||
| check_package_yaml_file | ✅SUCCESS | |||
| check_repo_in_maintain | ✅SUCCESS | |||
| check_consistency | ✅SUCCESS | |||
| check_spec_file | ❌FAILED | • changelog中的版本号 '0.12.2' 与spec中的版本号 '0.99.0' 不一致 | ||
| x86_64 | check_build | ❌FAILED | #86 | |
| aarch64 | check_build | ❌FAILED | #86 | |


/ai_check_fail


✅ 正在处理 ai_check_fail 请求...


/ai_check_fail


✅ 正在处理 ai_check_fail 请求...


/ai_check_fail


✅ 正在处理 ai_check_fail 请求...


分析完成。以下是对 PR #189 门禁失败的完整分析:
PR #189 (libssh) 门禁失败分析报告
一、失败根因:代码/Spec 问题(非 CI 基础设施问题)
这是一个测试性 PR,PR 作者在 changelog 中明确写道:"test CI with version bump (expect FAIL)",即作者刻意制造了一个预期会失败的版本来测试 CI 门禁的失败检测能力。
PR 的改动内容(libssh.spec):
- 版本号篡改为不存在的版本:
Version: 0.12.2→Version: 0.99.0(libssh 从未发布过 0.99.0 版本) - 新增了一条 changelog 条目,但版本号与 spec 头部不一致:changelog 写的是
0.12.2-2,而 spec 头部的Version+Release实际为0.99.0-1
三个门禁失败项的具体根因如下:
| 失败项 | 根因 |
|---|---|
| check_spec_file ❌ | changelog 版本号 0.12.2-2 与 spec 声明的 Version: 0.99.0 + Release: 1(即 0.99.0-1)不一致,spec 校验规则检测到版本不匹配 |
| x86_64 check_build ❌ | Source0 定义为 https://www.libssh.org/files/0.12/%{name}-%{version}.tar.xz,版本改为 0.99.0 后实际解析为 https://www.libssh.org/files/0.12/libssh-0.99.0.tar.xz,该 tarball 不存在(404),构建系统无法下载源码包,构建在仅 44 秒后即失败 |
| aarch64 check_build ❌ | 同 x86_64,源码包下载失败导致构建失败 |
关键证据:
- 构建日志显示:
build_time: 44(仅 44 秒就失败,远短于正常编译时间,说明在源码下载阶段就失败了,而非编译阶段) - 构建日志显示:
Package build failed:[{'package': 'libssh', 'arch': 'x86_64', 'result': 'failed', ...}] - spec 文件中
Source0路径的目录段0.12是硬编码的,即使 0.99.0 版本真实存在,URL 路径也不会正确
二、具体解决方案
由于这是一个明确的测试 PR(changelog 自述 "expect FAIL"),正确的处理方式是直接关闭该 PR,不予合并。
如果假设这是一个真实场景中版本号写错的情况,修复方案为:
- 版本号必须使用真实存在的 libssh 发行版本(如恢复为
0.12.2,或升级到 libssh 官网实际存在的版本) - changelog 条目的版本号必须与 spec 头部的
Version-Release完全一致 - 如果确实要升级到新的大版本,必须同步修改 Source0 路径中的目录段(如从
0.12改为对应版本路径)
三、修复步骤
# 步骤 1:关闭测试 PR(推荐做法,因 changelog 已声明 "expect FAIL")
直接在 PR 页面关闭,添加评论说明:该 PR 为测试用途,版本号 0.99.0 不存在,
spec 校验和源码下载均预期失败。
# 步骤 2(如果是真实版本升级场景的修复):
# 修正 spec 文件中的版本号一致性
# 2a. 确认目标版本真实存在(例如 0.12.2)
# 访问 https://www.libssh.org/files/ 确认版本目录
# 2b. 修改 Version 为真实版本号
sed -i 's/^Version:.*/Version: 0.12.2/' libssh.spec
# 2c. 确保 changelog 条目的版本号与 Version-Release 一致
# 例如 changelog 应写为:0.12.2-1(而非 0.12.2-2 或 0.99.0-1)
# 2d. 如果升级了大版本,同步修改 Source0 路径段
# 例如从 0.12 升到 0.13:
# Source0: https://www.libssh.org/files/0.13/%{name}-%{version}.tar.xz
# 步骤 3:本地验证 spec
rpmbuild -bp --nodeps libssh.spec # 确认源码包可正常下载和解包
rpmspec -P libssh.spec > /dev/null # 确认 spec 语法和版本一致性通过
# 步骤 4:提交修正并推送,重新触发 CI 门禁
git add libssh.spec
git commit -m "fix: correct version number and changelog consistency"
git push
四、结论
| 项目 | 结论 |
|---|---|
| 失败性质 | 代码/Spec 问题,非 CI 基础设施问题 |
| 根本原因 | PR 故意将版本号改为不存在的 0.99.0,导致 changelog 版本不一致(spec 校验失败)和源码 tarball 404(构建失败) |
| 是否需要修复代码 | 否——这是测试 PR,应直接关闭。CI 门禁的失败行为是正确且符合预期的 |
| CI 门禁状态评估 | ✅ 门禁工作正常——成功拦截了不合法的 spec 修改 |


Test PR - bump spec Release from 1 to 2, add test changelog entry.
Do not merge. Only for CI testing.