
openEuler Jenkins问题排查手册常见门禁错误及解决方案【免费下载链接】openeuler-jenkinsThis repository is used to store the jenkins scripts in openEuler community.项目地址: https://gitcode.com/openeuler/openeuler-jenkins前往项目官网免费下载https://ar.openeuler.org/ar/openEuler社区使用Jenkins门禁系统来确保代码提交质量当开发者在Gitee提交PR时系统会自动触发编码规范检查、构建、安装和接口变更等多项检查。这本完整指南将帮助您快速定位和解决门禁检查中遇到的常见问题让您的开发流程更加顺畅高效。门禁系统简介与工作流程openEuler Jenkins门禁系统是开源社区代码质量保障的重要工具它会在每次PR提交时自动执行一系列检查。门禁检查主要包括两个阶段静态检查阶段和构建测试阶段。如上图所示门禁可以通过首次提交PR或评论/retest来触发。当门禁开始运行时会在PR评论中显示类似下图的状态门禁检查完成后会显示详细的检查结果包括基本检查项和接口变更检查门禁常见问题快速定位PR触发无响应问题问题现象PR中没有显示任何门禁信息也没有ci_processing标签。解决方案首先确认该软件包是否是新增的包。如果是新增的包需要检查门禁系统中是否存在对应的门禁工程。您可以通过访问门禁入口链接来查询。如果没有找到对应的门禁工程请联系门禁接口人处理。问题现象PR中已打上ci_processing标签但长时间没有门禁结果回显。解决方案这种情况说明门禁工程正在运行中。您可以根据门禁入口链接分别进入trigger、x86-64、aarch64、comment工程查看运行状态进度条蓝色并刷新门禁正常运行中请耐心等待进度条变红可能执行时间过长或出现卡死请联系门禁接口人等待资源分配长时间未分配到资源请联系基础设施接口人仓库已有PR正在构建同一仓库的门禁任务是串行执行的请等待当前任务完成静态检查失败问题Git Fetch失败错误信息git fetch failed, 128解决方案该PR代码存在冲突未解决。请解决代码冲突后重试门禁检查。SPEC文件编写不规范版本号未更新错误current version: 5.15.0-r3, last version: 5.15.0-r3解决方案每次PR提交时spec文件中的version号或release号必须更新。具体要求是版本号不变时release号必须递增版本号变化时release必须置为1。Patch字段位置错误AttributeError: Package object has no attribute patches解决方案spec文件中的patch字段位置错误不应该写在%package devel下面而应该写在Source部分。二进制文件检查失败错误信息binary file of type exists: /llvm-11.0.0.src/test/tools/obj2yaml/XCOFF/Inputs: [aix_xcoff_truncated_file_header.o, aix_xcoff.o]解决方案本次PR提交中存在二进制文件。openEuler社区要求不存在以.pyc、.jar、.ko、.o为后缀的文件包括压缩包内但不包括以链接形式给出的上游社区。编译阶段常见问题缺少二进制包错误错误信息Error: Failed to retrieve plexus-archiver-3.6.0-3.oe1.noarch.rpm from the following locations解决方案缺少二进制包请联系OBS接口人归档。请注意OBS的二进制仓库是工程用来依赖构建的每天晚上9点会对编译好的包进行归档。缺少依赖包错误错误信息nothing provides llvm-devel 12.0.1 nothing provides llvm-static 12.0.1解决方案根据PR合入的分支在对应的OBS分支上查找是否存在缺少的依赖包。您可以通过查看包的Provides和Requires信息来确认依赖关系Changelog中存在非法字段错误信息error: line 53: second %install解决方案spec文件的changelog部分包含了%build和%install等字符串导致编译过程中被错误识别。请检查并修正changelog格式。安装检查阶段问题安装过程中缺少依赖包错误信息conflicting requests nothing provides libperl.so.5.34()(64bit) needed by perl-version-8:0.99.29-1.oe1.x86_64解决方案安装过程中缺少perl相关的依赖包。请在对应的repo源中查找是否存在该依赖包如果确实不存在请联系OBS接口人。安装过程中组件冲突错误信息file /usr/bin conflicts between attempted installs of OpenCSD-1.3.3-1.oe1.aarch64 and filesystem-3.16-5.oe1.aarch64解决方案本次编译出来的包组件与filesystem组件有冲突提供了相同的/usr/bin和/usr/lib64组件。需要开发者自行修改如果需要依赖该组件可在spec中将对应的包加入安装依赖。ABI变更检查问题提交导致ABI变更错误信息rpm_abi FAILED header FAILED解决方案查看软件包兼容等级并按指引确认能否接受ABI变更。如果能接受就可以合入不能接受可以尝试将ABI改为static的。升级导致ABI变更解决方案升级导致的ABI变更需要在评论中对ABI差异做分析说明解释变更的原因和影响范围。实用工具与资源获取门禁编译的包您可以通过以下路径获取门禁本次PR编译出的包http://121.36.53.23/src-openeuler/{branch}/{giteeId}/{repo}/{arch}/{prid}例如http://121.36.53.23/src-openeuler/openEuler-22.03-LTS-SP1/xiexiuqi/kernel/x86_64/884门禁检查项对应代码位置了解门禁检查项对应的代码位置有助于深入理解问题根源检查项主要代码位置check_binary_filecheck_binary_file.pycheck_package_licensecheck_license.pycheck_package_yaml_filecheck_yaml.pycheck_spec_filecheck_spec.pycheck_consistencycheck_consistency.py门禁配置管理门禁支持部分检查项的选择性配置配置文件位于ac.yaml。负责检查项PR回显的代码位于gitee_comment.py。问题反馈与沟通渠道门禁责任田划分遇到问题时可以根据问题类型联系相应的负责人责任领域联系人门禁总接口人王欢基础设施维护曹志、赵春江、刘奇OBS工程维护王冲、杨超豪、董杰软件包单仓门禁维护王欢、陈一雄误报反馈机制如果对门禁结果有疑问或认为门禁结果不准确可以通过PR评论反馈误报情况标记误报/ci_mistake build_no mistake_type ci_mistake_stage撤回标记/ci_unmistake build_no其中build_no指的是trigger工程的构建号mistake_type可以是ci、obs、infraci_mistake_stage可以是具体的检查项名称。最佳实践与预防措施1. SPEC文件编写规范确保版本号和release号正确更新Patch字段位置正确Changelog格式规范避免包含特殊标记2. 依赖管理提前在OBS上检查依赖包是否存在确保所有依赖包都能在构建环境中访问避免引入外部网络依赖3. 二进制文件处理避免提交二进制文件到代码仓库使用上游社区的链接而不是直接包含二进制文件压缩包内的二进制文件也需要检查4. 分支管理确认分支是否仍在维护期检查分支映射关系是否正确配置及时更新分支维护状态总结openEuler Jenkins门禁系统是保障代码质量的重要工具虽然偶尔会遇到各种问题但通过本文提供的排查指南您可以快速定位和解决大部分常见问题。记住关键的联系人和沟通渠道善用误报反馈机制您的开发体验将更加顺畅。如果您遇到本文未覆盖的问题或者有改进建议欢迎在openeuler-jenkins仓库提交Issue社区将及时响应和处理。【免费下载链接】openeuler-jenkinsThis repository is used to store the jenkins scripts in openEuler community.项目地址: https://gitcode.com/openeuler/openeuler-jenkins创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考