news 2026/7/9 19:22:42

openEuler Jenkins问题排查手册:常见门禁错误及解决方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
openEuler Jenkins问题排查手册:常见门禁错误及解决方案

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.py
check_package_licensecheck_license.py
check_package_yaml_filecheck_yaml.py
check_spec_filecheck_spec.py
check_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、infra,ci_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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 19:22:27

Codex+Qwen3.5本地代码补全实战:无审查、OpenAI兼容、嵌入式友好

1. 项目概述&#xff1a;为什么一个“Codex 本地Qwen3.5”的组合值得花三小时搭好&#xff1f;Codex、Qwen3.5、llama、ollama——这几个词最近在技术圈的私聊群、GitHub issue 和本地AI部署帖子里高频碰撞&#xff0c;但真正把它们串成一条可落地、不报错、能写代码、能读文档…

作者头像 李华
网站建设 2026/7/9 19:22:09

解锁多窗口协同新姿势:3步打造你的Mac高效工作区

解锁多窗口协同新姿势&#xff1a;3步打造你的Mac高效工作区 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 你是否经常在多个应用窗口间来回切换&#xff0c;代…

作者头像 李华
网站建设 2026/7/9 19:21:23

Skyline APIServer未来路线图:新功能预告与社区贡献指南

Skyline APIServer未来路线图&#xff1a;新功能预告与社区贡献指南 【免费下载链接】skyline-apiserver Skyline is an OpenStack dashboard optimized by UI and UE, support OpenStack Train. 项目地址: https://gitcode.com/openeuler/skyline-apiserver 前往项目官…

作者头像 李华
网站建设 2026/7/9 19:17:33

数字人平台能不能商用?授权、克隆、导出权限一次讲清

很多人选数字人平台时&#xff0c;前半段都在看效果&#xff1a;像不像真人、口型稳不稳、出片快不快、模板多不多。真正到了后半段&#xff0c;问题才突然变得严肃起来&#xff1a;这条视频能不能发品牌账号&#xff1f;能不能拿去投广告&#xff1f;能不能给客户交付&#xf…

作者头像 李华
网站建设 2026/7/9 19:15:19

直流负载管理系统优化:G6D-ASI继电器与PIC18F85K22应用

1. 直流负载管理系统的核心挑战与优化方向 在工业自动化、新能源系统和电力电子设备中&#xff0c;直流负载管理一直是工程师面临的关键技术难题。传统方案通常采用机械继电器或笨重的接触器&#xff0c;这些方案存在几个致命缺陷&#xff1a;触点寿命短&#xff08;通常只有10…

作者头像 李华