需围绕代码拉取、测试执行、环境配置与部署触发构建自动化流程:一、安装git等插件并配置github token;二、适配项目结构,定义含checkout/setup/test/report阶段的jenkinsfile;三、创建多分支流水线任务实现scm自动同步;四、注入hermes_home等环境变量并初始化cli;五、集成html/junit报告及失败日志捕获。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望将Hermes Agent接入CI/CD流水线并实现与Jenkins的深度协同,则需围绕代码拉取、测试执行、环境配置与部署触发等环节构建可复用、可审计的自动化流程。以下是搭建该集成的具体路径:
一、前置环境准备与Jenkins插件配置
确保Jenkins具备运行Python测试套件、解析报告及与GitHub/GitLab通信的能力,这是后续所有步骤的基础支撑。
1、登录Jenkins管理界面,进入Manage Jenkins → Plugins → Available。
2、搜索并安装以下核心插件:Git Plugin、Pipeline、HTML Publisher Plugin、JUnit Plugin、Credentials Plugin。
3、重启Jenkins服务使插件生效。
4、在Manage Jenkins → Credentials → System → Global credentials中添加GitHub或GitLab的Personal Access Token,类型选择Secret text,Secret字段填入从对应平台生成的token(权限需包含repo和workflow)。
二、Hermes Agent项目结构适配与Jenkinsfile定义
Jenkins需通过Jenkinsfile识别流水线逻辑,而Hermes Agent的目录结构必须符合CI工具对测试入口、依赖声明和可执行脚本的约定。
1、确认项目根目录下存在Jenkinsfile、requirements.txt和tests/目录(含test_*.py或*_test.py格式用例)。
2、在Jenkinsfile中定义声明式流水线,明确指定agent标签为已安装Python 3.12及pytest的节点:
3、在stages块内依次编写Checkout、Setup、Test、Report阶段,其中Test阶段调用命令:source venv/bin/activate && pytest tests/agent/ tests/tools/ --junitxml=test-results.xml --html=report.html。
4、在post → always块中加入清理指令:sh 'rm -rf venv',防止磁盘空间累积。
三、Jenkins任务创建与SCM自动同步
通过多分支流水线机制,Jenkins可自动感知Hermes Agent仓库中各分支的Jenkinsfile变更,并为每个有效分支动态创建独立构建任务。
1、在Jenkins主页点击New Item,输入任务名,选择Multibranch Pipeline,点击OK。
2、在配置页的Branch Sources区域点击Add source → GitHub,填写仓库Owner与Repository名称。
3、在Credentials下拉菜单中选择已配置的GitHub token。
4、保存后Jenkins将立即触发一次初始扫描,自动发现包含Jenkinsfile的分支并在左侧导航栏列出对应流水线任务。
四、Hermes Agent专属CI配置注入
为使Jenkins能正确加载Hermes Agent的CLI行为与技能模块,需在构建环境中注入其运行时依赖与配置上下文。
1、在Jenkins任务配置页的Environment部分启用Prepare an environment for the run选项。
2、在Properties Content框中写入:
HERMES_HOME=/var/lib/jenkins/hermes-agent
PATH=$HERMES_HOME/bin:$PATH
3、在Setup阶段追加初始化命令:git clone https://gitcode.com/GitHub_Trending/he/hermes-agent $HERMES_HOME && cd $HERMES_HOME && ./setup-hermes.sh。
4、验证CLI可用性:在任意stage中插入步骤sh 'hermes --version',确保输出版本号不为空。
五、测试报告集成与失败定位增强
将Hermes Agent的单元测试与集成测试结果可视化呈现,并在失败时快速定位到具体skills模块或测试用例。
1、在Test阶段执行命令后,确保生成test-results.xml与report.html两个文件。
2、在Report阶段使用publishHTML与junit指令分别发布HTML报告与JUnit XML解析结果。
3、在post → failure块中添加日志捕获步骤:sh 'cat $WORKSPACE/tests/integration/test_failure.log 2>/dev/null || true'。
4、启用Build Triggers → GitHub hook trigger for GITScm polling,确保每次推送至GitHub仓库即触发对应分支流水线。











