当前位置: 首页 > news >正文

openeuler/embedded-ci Jenkins流水线配置:从代码克隆到任务执行全流程

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(持续集成模块)和 GATE(PR 门禁模块)。三者通过调用 oebuild 与基础设施交互,并在 openEuler Embedded Docker 中运行,由 Jenkins 编排流水线工作流。

核心模块功能

  • CRON:定时生成 sstate-cache artifacts,利用 BitBake 的共享状态缓存机制加速构建。
  • CI:执行每日构建,将成功的构建产物上传到远程服务器,构建失败时自动提交 issue 报告。
  • GATE:验证开发者提交的拉取请求,完成后将测试结果反馈到 PR 评论区。

二、环境准备

1. 克隆仓库

首先需要克隆 openEuler/embedded-ci 仓库到本地,仓库地址为:https://gitcode.com/openeuler/embedded-ci

git clone https://gitcode.com/openeuler/embedded-ci.git --depth=1

2. 配置文件说明

项目的配置文件主要位于 conf 目录下,包括:

  • ci.yaml:CI 模块的构建配置文件。
  • cron.yaml:CRON 模块的定时任务配置文件。
  • 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 --depth=1' } } } } } 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 --depth=1' } } } } } 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 --depth=1' } } } } } 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 模块共享的缓存路径,用于存储和复用构建缓存,提升构建效率。
  • credentialsId:Jenkins 中配置的凭证 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),仅供参考

http://www.jsqmd.com/news/1191033/

相关文章:

  • 在Blender中构建跨平台MMD工作流:MMD Tools插件的深度实践
  • 电脑卡顿怎么办?【图文讲解】一个设置教你解决优化系统
  • 真力时售后流程详解与维修保养指南权威公示(2026年7月最新) - 亨得利官方服务中心
  • 电阻选型指南:从原理到实战的精准匹配
  • 漫步者E12拍拍蓝牙耳机评测:运动降噪与送礼优选
  • 从QT4到QT6:connect函数连接方式的演进与实战选择
  • C++实现井字棋AI:Minimax算法原理与工程实践详解
  • 程函方程伴随状态法走时层析:从初至到反射,VTI介质多参数反演与双差成像技术演进
  • 数字后端物理单元全解:从闩锁抑制到天线防护
  • 基于YOLOv8的犬只识别系统:从环境部署到多摄像头协同应用
  • 2026年阜阳选购罗浮威尔木纹砖靠谱店铺实用选购指南 - 热点品牌推荐
  • C++11 多线程(std::thread)实战:从入门到精通
  • 若依(RuoYi) + Vue 前后端分离项目国际化(i18n)实战:从配置到动态切换
  • 经典日内策略进阶:ORB突破策略的震荡行情过滤与参数优化(期货)
  • 智能车实战——软件抗干扰滤波算法选型与优化指南
  • 从被动学习到主动探索:如何将学习苦役变为成长动力
  • 水磨石地面洗地机TOP3推荐2026年7月实测评价 - 工业清洁测评社
  • Python生产级HTTP服务与客户端实现:从超时重试到可观测性
  • 时空强约束推演:镜像视界跨镜无痕续迹,实现司法监所人员动线全链路闭环管控
  • 51单片机 03
  • (2026最新)宜宾漏水检测维修师傅上门-正规防水补漏公司本地居民实测推荐五家-卫生间/屋顶/厨房/阳台/外墙/地下室专业仪器精准检测漏水点 - 安佳防水
  • 游戏纪念视频自动化制作:素材处理与批量剪辑技术方案
  • 终极ncmdump解密指南:3种方案彻底释放你的NCM音乐
  • 运算放大器参数解析与选型实战指南
  • Python字典详解:从哈希表原理到高级应用与性能优化
  • 告别权限困扰:巧用icacls命令,彻底清理重装后遗留的旧系统盘
  • 格拉苏蒂官方换电池价格查询|地址与客服电话权威信息公告(2026年7月最新) - 亨得利钟表维修中心
  • 信息学奥赛一本通 1408:从枚举到优化,探索素数回文数的算法实现 | OpenJudge NOI 1.13 05
  • LabVIEW串口通信实战:STM32单片机数据收发与常见问题解析
  • 小波变换:从理论到工程实践的全景解析