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

📅 2026/7/15 3:11:01 👁️ 阅读次数 📝 编程学习
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),仅供参考