openeuler/embedded-ci Jenkins流水线配置:从代码克隆到任务执行全流程 📅 2026/7/15 3:02:54 openeuler/embedded-ci Jenkins流水线配置从代码克隆到任务执行全流程【免费下载链接】embedded-ciembedded-ci is CI/CD repo for openEuler Embedded项目地址: https://gitcode.com/openeuler/embedded-ci前往项目官网免费下载https://ar.openeuler.org/ar/openEuler/embedded-ci 是 openEuler 嵌入式系统的 CI/CD 仓库通过 Jenkins 流水线实现从代码克隆到任务执行的全流程自动化有效提升开发效率和代码质量。本文将详细介绍其 Jenkins 流水线的配置方法帮助新手快速掌握从代码克隆到任务执行的完整流程。一、项目架构概览openEuler/embedded-ci 主要包含三个核心模块CRON定时任务模块、CI持续集成模块和 GATEPR 门禁模块。三者通过调用 oebuild 与基础设施交互并在 openEuler Embedded Docker 中运行由 Jenkins 编排流水线工作流。核心模块功能CRON定时生成 sstate-cache artifacts利用 BitBake 的共享状态缓存机制加速构建。CI执行每日构建将成功的构建产物上传到远程服务器构建失败时自动提交 issue 报告。GATE验证开发者提交的拉取请求完成后将测试结果反馈到 PR 评论区。二、环境准备1. 克隆仓库首先需要克隆 openEuler/embedded-ci 仓库到本地仓库地址为https://gitcode.com/openeuler/embedded-cigit clone https://gitcode.com/openeuler/embedded-ci.git --depth12. 配置文件说明项目的配置文件主要位于 conf 目录下包括ci.yamlCI 模块的构建配置文件。cron.yamlCRON 模块的定时任务配置文件。plugins.yaml插件相关配置。三、Jenkins 流水线配置详解1. 通用结构Jenkins 流水线配置主要包含 agent、environment 和 stages 等部分。agent 指定执行节点environment 设置环境变量stages 定义具体的构建阶段。2. CRON 模块流水线配置CRON 模块通过 Jenkins 流水线定时生成 sstate-cache其配置示例如下pipeline { agent { node k8s-x86-rtos-openeuler-test } environment { PATH /home/jenkins/.local/bin:${env.PATH} } stages { stage(clone openeuler-ci) { steps { dir(/home/jenkins/agent){ script { if(fileExists(openeuler-ci) false) { sh git clone https://gitee.com/alichinese/openeuler-ci.git -v /home/jenkins/agent/openeuler-ci --depth1 } } } } } stage(run cron) { steps { dir(/home/jenkins/agent/openeuler-ci){ script{ if(fileExists(/home/jenkins/ccache/openeuler_embedded/gate/openeuler_master) false) { sh mkdir -p /home/jenkins/ccache/openeuler_embedded/gate/openeuler_master } sh python3 main.py cron -s /home/jenkins/ccache/openeuler_embedded } } } } } }3. CI 模块流水线配置CI 模块负责每日构建其流水线配置如下包含克隆代码、运行 CI 任务等阶段pipeline { agent { node k8s-x86-rtos-openeuler-test } environment { PATH /home/jenkins/.local/bin:${env.PATH} } stages { stage(clone openeuler-ci) { steps { dir(/home/jenkins/agent){ script { if(fileExists(openeuler-ci) false) { sh git clone https://gitee.com/alichinese/openeuler-ci.git -v /home/jenkins/agent/openeuler-ci --depth1 } } } } } stage(run ci) { steps { dir(/home/jenkins/agent/openeuler-ci){ script{ if(fileExists(/home/jenkins/ccache/openeuler_embedded/gate/openeuler_master) false) { sh mkdir -p /home/jenkins/ccache/openeuler_embedded/gate/openeuler_master } withCredentials([ file(credentialsId: xxx, variable: PUBLISH_KEY), string(credentialsId: xxxt, variable: GITEETOKEN)]) { sh python3 main.py ci \ -s /home/jenkins/ccache/openeuler_embedded \ -e /repo/openeuler/dailybuild/openEuler-Mainline/openEuler-Mainline/embedded_img \ -i xxx \ -u root \ -k $PUBLISH_KEY \ -dm \ -o openeuler \ -p yocto-meta-openeuler \ -gt $GITEETOKEN \ -sf } } } } } } }4. GATE 模块流水线配置GATE 模块用于 PR 验证其流水线配置如下会根据 PR 相关参数执行验证任务pipeline { agent { node k8s-x86-rtos-openeuler-test } environment { PATH /home/jenkins/.local/bin:${env.PATH} } stages { stage(clone openeuler-ci) { steps { dir(/home/jenkins/agent){ script { if(fileExists(openeuler-ci) false) { sh git clone https://gitee.com/alichinese/openeuler-ci.git -v /home/jenkins/agent/openeuler-ci --depth1 } } } } } stage(run gate) { steps { dir(/home/jenkins/agent/openeuler-ci){ script{ withCredentials([ string(credentialsId: xxx, variable: GITEETOKEN), usernamePassword(credentialsId: xxx, usernameVariable: JUSER,passwordVariable: JPASSWD)]){ sh python3 main.py gate \ -s /home/jenkins/ccache/openeuler_embedded \ -pr $giteePullRequestid \ -o $giteeTargetNamespace \ -p $giteeRepoName \ -b $giteeTargetBranch \ -gt $GITEETOKEN \ -juser $JUSER \ -jpwd $JPASSWD \ -dm } } } } } } }四、关键参数说明在 Jenkins 流水线配置中有一些关键参数需要了解sstate-cache 路径CRON、CI 和 GATE 模块共享的缓存路径用于存储和复用构建缓存提升构建效率。credentialsIdJenkins 中配置的凭证 ID用于获取访问远程服务器或代码仓库的权限。PR 相关参数如 $giteePullRequestid、$giteeTargetNamespace 等用于标识 PR 信息需在 Jenkins 的 Generic Webhook Trigger 中配置变量映射。五、总结通过本文的介绍我们了解了 openEuler/embedded-ci 项目的 Jenkins 流水线配置包括项目架构、环境准备、各模块流水线配置及关键参数说明。掌握这些内容有助于新手快速搭建和使用该 CI/CD 系统实现从代码克隆到任务执行的全流程自动化提高开发效率和代码质量。项目的核心功能实现主要集中在 app 目录下如 app/gate/ 目录包含 GATE 模块的相关代码app/plugins/ 目录包含各类插件实现。更多详细内容可参考项目中的代码和配置文件。【免费下载链接】embedded-ciembedded-ci is CI/CD repo for openEuler Embedded项目地址: https://gitcode.com/openeuler/embedded-ci创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考